ThinkPHP是支持多语言和多模版的。多语言的支持是通过语言包的方式,每个
项目可以
定义自己的语言包,其
文件存放目录是在项目目录下面的Lang目录。
语言文件的命名方式
采用
浏览器的语言命名(全部小写)定义,如:
- 简体中文 zh-cn.php
- 繁体中文 zh
-tw.php- English
(United States) en-us.php
语言包的定义方式
为了不和
系统的配置常量冲突 建议语言的定义常量采用“_”打头(但是这个没有限制,只要不产生冲突),例如:
- define('_SUCCESS','操作成功');define('_ERROR','页面出错');
然后在Action类里面使用定义的语言常量就可以了。
例如,示例代码:
- $result = $dao->save($user);
- if(
$result) {-
$this->success(_SUCCESS);-
$this->assign("jumpUrl",__APP__);- }else {
-
$this->error(_ERROR);- }
上面的语言包是指项目的语言包,如果在提示信息的时候使用了
框架底层的提示,那么还需要定义系统的语言包,系统语言包目录位于ThinkPHP目录下面的Lang目录。
如果需要在模版里面输出语言定义,使用常量显示标签就可以了。
类似于 {$Think._ERROR} 就可以根据当前语言显示提示了。
多语言的切换
ThinkPHP的多语言支持是自动的,系统会根据用户的浏览器语言设置自动获取相关的语言包,如果找到匹配当前的语言包文件,就会自动加载进来,因此不需要你手动加载语言包文件在项目中。
如果你需要测试语言包的话,可以使用l参数(可以通过项目配置项VAR_LANGUAGE设置)来手动切换,进行效果测试。例如:
- http:/ /ServerIP/AppName/ModuleName/ActionName/l/zh-tw/ //切换到繁体中文http:/ /ServerIP/AppName/ModuleName/ActionName/l/en-us/ //切换到英文
上面的方式是动态数据的输出,如果对于模版里面的静态内容也需要多语言支持的话,可以通过定义多个模版系列来解决(如果你不怕麻烦,也可以使用语言包常量定义,呵呵~)。也就是说,你给简体定义一个模版,繁体定义一个模版。手动切换模版的方法和语言切换类似,不过使用 t
变量(可以通过项目配置项VAR_TEMPLATE设置)。
其实,通常的多语言
应用主要是涉及到其他语言,对于只是想要简体和繁体两种语言支持的话,通常不需要使用语言包功能,支持使用框架的简繁转换插件就可以了。该插件是
服务器端,还可以考虑客户端的JS简繁转换解决方案。
暂时就先写这么多,如果还有疑问的,请回复~