转:

今天要用ThinkPHP3.2.3做一个小网站,其中涉及到切换中文与英文,通过查询手册和百度实现了该操作,现在将我具体的操作步骤记录下来,作为笔记和大家分享。

php开发框架:ThinkPHP3.2.3。

1.在Application/Common/conf/下新建tags.php(默认是没有的,需要新建)文件,增加内容如下:

return array(
     'app_begin' => array('Behavior\CheckLangBehavior'),  //表示在app_begin标签位置执行多语言检测行为。
);

  2.在Application/Common/conf/config.php配置文件中新增如下内容:

'LANG_SWITCH_ON' => true,   // 开启语言包功能
'LANG_AUTO_DETECT' => true, // 自动侦测语言 开启多语言功能后有效
'LANG_LIST'        => 'zh-cn,en-us', // 允许切换的语言列表 用逗号分隔
'VAR_LANGUAGE'     => 'l', // 默认语言切换变量

3.在Application/Common/下新建Lang文件。

4. 在Application/Common/Lang/下新建en-us.php文件,增加内容如下:

return array(
    'welcome'=>'I am English',
);

5. 在Application/Common/Lang/下新建zh-cn.php文件,增加内容如下:

return array(
     'welcome'=>'我是中文的',
);

6. 然后在对应的模板文件中进行引用,如: {$Think.lang.welcome}

7. 设置中英文切换的超链接,如下:

<a href="?l=zh-cn" >简体中文</a> | <a href="?l=en-us" >English</a>

中英文切换引出的bug解决:

今天又一次出现用户在百度搜索网站,然后点开网站报错的问题(今天比较幸运用户配合远程连接解决问题)。

线上的环境是关闭debug的,首先打开debug,刷新页面页面报错,页面不错内容为找不到模板,模板为英文版模板,本站原本就没有英文版网站,所以

'LANG_LIST'        => 'zh-cn,en-us', // 允许切换的语言列表 用逗号分隔

改为:

'LANG_LIST'        => 'zh-cn', // 允许切换的语言列表 用逗号分隔

再刷新页面问题解决。

这个问题客户端的解决方案可以在域名后跟上?l=zh-cn浏览器切语言包到中文版
服务端方案二:

'LANG_SWITCH_ON' => true,   // 开启语言包功能

改为:

'LANG_SWITCH_ON' => false,   // 开启语言包功能

成也语言包,败也语言包。用好了可以做多语言站,用的不好网站经常莫名报错。!!!

更多推荐

ThinkPHP 语言包切换中英文切换