Discuz教程网

[代码修改] 用SESSION实现Discuz X多国语言

[复制链接]
authicon dly 发表于 2011-4-26 07:49:44 | 显示全部楼层 |阅读模式
思路:通过Session记录语言环境,当前HTTP请求检测出客户端语言(如:zh_cn),来自动匹配程序语言包。

准备工作:
到官方下载最新的语言包,http://download.comsenz.com/DiscuzX/
调整语言包目录结构(这里示例真三国,只要您喜欢可以建更多。):
  1. /source/locale/zh_CN
  2. /source/locale/zh_TW
  3. /source/locale/en_US
复制代码


实现方法:
第一步,找到引入语言包的文件,通过系统搜索功能查找文字"language/"可找到:
  1. class_template.php   \source\class
  2. function_core.php   \source\function
  3. lang_admincp.php   \source\language
复制代码

查找(共4处):
  1. DISCUZ_ROOT.'./source/language
复制代码
替换为:

  1. DISCUZ_LOCALE.'
复制代码

第二步,让我们要引入自定义的DISCUZ_COCALE,打开class_core.php以下文件,
class_core.php    \source\class



2.1查找:

  1. $_GET['diy'] = empty($_GET['diy']) ? '' : $_GET['diy'];
复制代码
下面加:
  1. require_once DISCUZ_ROOT.'./source/discuz_locale.php';
复制代码
2.2将下面的内容保存为/source/discuz_locale.php
  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3. exit('Access Denied');
  4. }

  5. //-------------Intl Version Begin---------------------
  6. // *如果你打算设更多种语言,可以将可选语言项设置转到后台操作,生成缓存
  7. //-------------
  8.   //config default language
  9.   $aConfig['languages'] = 'zh_TW';
  10.   // Enabled languages
  11.   $aConfig['intl'] = array(
  12.     'cn' => array(
  13.     'locale' => 'zh_CN',
  14.     'native' => '简体中文',
  15.     'english' => 'Chinese'
  16.     ),
  17.     'tw' => array(
  18.     'locale' => 'zh_TW',
  19.     'native' => '繁體中文',
  20.     'english' => 'Taiwanese'
  21.     ),
  22.     'en' => array(
  23.     'locale' => 'en_US',
  24.     'native' => 'English',
  25.     'english' => 'English'
  26.     )
  27.   );
  28.   $aConfig['locale'] = array(
  29.     'cn' =>  'zh_CN',
  30.     'zh' =>  'zh_TW',
  31.     'en' =>  'en_US'
  32.   );
  33.   // Enabled languages End
  34.    
  35.   if( !isset( $_SESSION ) ) session_start();
  36.   $locale = $aConfig['intl'][$_GET['lang']]['locale'];
  37.   
  38.   if(!empty($locale)) $_SESSION['locale'] = $locale;
  39.   
  40.   if (empty($_SESSION['locale'])) {
  41.    $l = strtolower(substr(getenv('HTTP_ACCEPT_LANGUAGE'),0,2));
  42.    if(strtolower(substr(getenv('HTTP_ACCEPT_LANGUAGE'),0,5)) == 'zh-cn') $l = 'cn';
  43.    $_SESSION['locale'] = !empty($aConfig['locale'][$l]) ? $aConfig['locale'][$l] : $aConfig['languages'];
  44.   }
  45.   
  46.   define('DISCUZ_LOCALE', DISCUZ_ROOT.'./source/locale/'.$_SESSION['locale']);
  47.   
  48.   define('DISCUZ_TPLPATH', './data/template/'.$_SESSION['locale'].'/');
  49.   
  50. //-------------Intl Version End---------------------
  51.    
  52. ?>
复制代码

到此,您可以通过网址切换了,后台已经实现多语言了。






上一篇:Discuz X1.5微博QQ机器人插件
下一篇:出生地增加第三级县市和第四级乡镇 for discuz x 1.5
authicon Pianissimo 发表于 2011-5-6 17:18:07 | 显示全部楼层
回贴下载呀
authicon fantuanzi 发表于 2011-5-6 17:38:15 | 显示全部楼层
顶顶更健康
authicon 蓝天blue 发表于 2011-5-6 17:39:16 | 显示全部楼层
继续来索要
authicon yuki佳 发表于 2011-5-6 17:59:38 | 显示全部楼层
真的有意思!
authicon summmer 发表于 2011-5-6 18:59:47 | 显示全部楼层
很好 很强大。。谢谢分享
authicon 皆无 发表于 2011-5-9 08:59:53 | 显示全部楼层
楼主真强大
authicon 福倒菜菜子 发表于 2011-5-9 21:59:35 | 显示全部楼层
有意思~顶顶 ,继续顶顶。继续顶哦
authicon qqoxygen 发表于 2011-5-18 07:59:31 | 显示全部楼层
好耶!功能强大啊
authicon cutiemimi 发表于 2011-5-20 11:00:00 | 显示全部楼层
支持楼主,顶一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2024-11-1 08:02

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表