分类 ThinkPHP 下的文章

thinkphp 多语言支持

看到thinkphp说 支持多语言 还是挺开心的。之前做过一个日本的工地管理项目,前期不知道要翻译这事(也没想过),到了后面突然被交待这项任务,瞬间懵了。当时用的ci框架,ci本身是有一个 语言类 设置,加载System/language目录下的语言包文件。但是之前没有使用语言包的习惯,一般提示或错误信息都是直接定义使用的。还有后台页面也是中文页面,这些因素使得后期的翻译工作异常繁重,没有尽头。

相比ci框架中的语言类支持,thinkphp的多语言支持更加灵活多变。首先就是语言包的使用问题。ci可以一次加载多个语言包,但并不能针对客户端做出灵活反应。一般都是定义一个默认语言,然后所有信息都从这个包里面去取。而thinkphp可以根据浏览器信息自动判断当前用户的浏览器支持语言,动态赋值,多态展现。其次就是thinkphp默认比ci多了一级模块,相比于ci只能从系统语言目录加载,thinkphp有了更加多的选择,加载顺序如下:

ThinkPHP/Lang/zh-cn.php 框架底层语言包
Application/Common/Lang/zh-cn.php 应用公共语言包
Application/Home/Lang/zh-cn.php Home模块语言包
Application/Home/Lang/zh-cn/user.php Home模块的User控制器语言包

按照thinkphp文档,先创建tags.php配置文件,配置行为定义

return array(
    // 添加下面一行定义即可
    'app_begin' => array('Behavior\CheckLangBehavior'),
);

之后再应用配置文件中添加多语言支持

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




- 阅读剩余部分 -