ThinkPHP的多语言支持已经相当完善了,可以满足
应用的多语言需求。这里是指的是
模板多语言支持,数据的多语言转换(翻译)不在这个范畴之内。ThinkPHP具备语言包
定义、自动识别、动态定义语言参数的功能。并且可以自动识别用户
浏览器的语言,从而选择相应的语言包(如果有定义)。
语言文件命名
采用浏览器的语言命名(全部小写)定义,如:
- 简体中文 zh-cn.php
- 繁体中文 zh
-tw.php- English
(United States) en-us.php
语言包文件位于
项目的Lang目录下面,
系统会自动加载。
语言文件定义
ThinkPHP语言文件定义包含下面三种方式:
- //PHP常量定义 为了保持兼容保留了
- define('LAN_DEFINE','欢迎使用ThinkPHP');// PHP数组定义 注意一定要用 $_lang$_lang['lan_define'] = '欢迎使用ThinkPHP';// PHP数组返回定义return array('lan_define'=>'欢迎使用ThinkPHP');
要在程序里面设置语言定义的值,使用下面的方式:
- $language = Language : : getInstance();$language->set('define2','语言定义');// 获取语言定义$value = $language->get('define2');为了更加方便获取语言定义的值,系统公共函数定义了快捷方法L,例如
- $value
= L("define2");//和下面的方法等效$language = Language : : getInstance();$value = $language->get('define2');// 设置语言变量的快捷方法L('define2','语言定义2');
模板
引擎的标签使用下面的方式来输出语言定义的值:
- {$Think.lang.lang_define}
上面的语言包是指项目的语言包,如果在提示信息的时候使用了
框架底层的提示,那么还需要定义系统的语言包,系统语言包目录位于ThinkPHP目录下面的Lang目录。
多语言的切换
ThinkPHP的多语言支持是自动的,系统会根据用户的浏览器语言设置自动获取相关的语言包,如果找到匹配当前的语言包文件,就会自动加载进来,因此不需要你手动加载语言包文件在项目中。
如果你需要测试语言包的话,可以使用l参数(可以通过项目配置项VAR_LANGUAGE设置)来手动切换,进行效果测试。例如:
- http:/ /ServerIP/AppName/Module/Action/?l=zh-tw //切换到繁体中文http:/ /ServerIP/AppName/Module/Action?l=en-us //切换到英文