思路:通过Session记录语言环境,当前HTTP请求检测出客户端语言(如:zh_cn),来自动匹配程序语言包。
准备工作:
到官方下载最新的语言包,http://download.comsenz.com/DiscuzX/
调整语言包目录结构(这里示例真三国,只要您喜欢可以建更多。):
- /source/locale/zh_CN
- /source/locale/zh_TW
- /source/locale/en_US
复制代码
实现方法:
第一步,找到引入语言包的文件,通过系统搜索功能查找文字"language/"可找到:
- class_template.php \source\class
- function_core.php \source\function
- lang_admincp.php \source\language
复制代码
查找(共4处):
- DISCUZ_ROOT.'./source/language
复制代码 替换为:
第二步,让我们要引入自定义的DISCUZ_COCALE,打开class_core.php以下文件,
class_core.php \source\class
2.1查找:
- $_GET['diy'] = empty($_GET['diy']) ? '' : $_GET['diy'];
复制代码 下面加:
- require_once DISCUZ_ROOT.'./source/discuz_locale.php';
复制代码 2.2将下面的内容保存为/source/discuz_locale.php
- <?php
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- //-------------Intl Version Begin---------------------
- // *如果你打算设更多种语言,可以将可选语言项设置转到后台操作,生成缓存
- //-------------
- //config default language
- $aConfig['languages'] = 'zh_TW';
- // Enabled languages
- $aConfig['intl'] = array(
- 'cn' => array(
- 'locale' => 'zh_CN',
- 'native' => '简体中文',
- 'english' => 'Chinese'
- ),
- 'tw' => array(
- 'locale' => 'zh_TW',
- 'native' => '繁體中文',
- 'english' => 'Taiwanese'
- ),
- 'en' => array(
- 'locale' => 'en_US',
- 'native' => 'English',
- 'english' => 'English'
- )
- );
- $aConfig['locale'] = array(
- 'cn' => 'zh_CN',
- 'zh' => 'zh_TW',
- 'en' => 'en_US'
- );
- // Enabled languages End
-
- if( !isset( $_SESSION ) ) session_start();
- $locale = $aConfig['intl'][$_GET['lang']]['locale'];
-
- if(!empty($locale)) $_SESSION['locale'] = $locale;
-
- if (empty($_SESSION['locale'])) {
- $l = strtolower(substr(getenv('HTTP_ACCEPT_LANGUAGE'),0,2));
- if(strtolower(substr(getenv('HTTP_ACCEPT_LANGUAGE'),0,5)) == 'zh-cn') $l = 'cn';
- $_SESSION['locale'] = !empty($aConfig['locale'][$l]) ? $aConfig['locale'][$l] : $aConfig['languages'];
- }
-
- define('DISCUZ_LOCALE', DISCUZ_ROOT.'./source/locale/'.$_SESSION['locale']);
-
- define('DISCUZ_TPLPATH', './data/template/'.$_SESSION['locale'].'/');
-
- //-------------Intl Version End---------------------
-
- ?>
复制代码
到此,您可以通过网址切换了,后台已经实现多语言了。
|