ThinkPHP夜话之5:多语言支持
流年大哥除了要工作,还要兼顾ThinkPHP的开发,所以PHPChina这边由我暂代发表更新内容,任何喜欢ThinkPHP的朋友也可以代劳,谢谢!:)
点击查看原文
ThinkPHP的多语言支持已经相当完善了,可以满足应用的多语言需求。这里是指的是模板多语言支持,数据的多语言转换(翻译)不在这个范畴之内。 ThinkPHP具备语言包定义、自动识别、动态定义语言参数的功能。并且可以自动识别用户浏览器的语言,从而选择相应的语言包(如果有定义)。
语言文件命名
采用浏览器的语言命名(全部小写)定义,如:
繁体中文 zh-tw.php
English (United States) en-us.php语言包文件位于项目的Lang目录下面,系统会自动加载。
语言文件定义
ThinkPHP语言文件定义包含下面三种方式:
多语言的切换
ThinkPHP的多语言支持是自动的,系统会根据用户的浏览器语言设置自动获取相关的语言包,如果找到匹配当前的语言包文件,就会自动加载进来,因此不需要你手动加载语言包文件在项目中。
如果你需要测试语言包的话,可以使用l参数(可以通过项目配置项VAR_LANGUAGE设置)来手动切换,进行效果测试。例如:
2. http:/ /ServerIP/AppName/Module/Action?l=en-us //切换到英文
点击查看原文
ThinkPHP的多语言支持已经相当完善了,可以满足应用的多语言需求。这里是指的是模板多语言支持,数据的多语言转换(翻译)不在这个范畴之内。 ThinkPHP具备语言包定义、自动识别、动态定义语言参数的功能。并且可以自动识别用户浏览器的语言,从而选择相应的语言包(如果有定义)。
语言文件命名
采用浏览器的语言命名(全部小写)定义,如:
引用:
简体中文 zh-cn.php繁体中文 zh-tw.php
English (United States) en-us.php
语言文件定义
ThinkPHP语言文件定义包含下面三种方式:
复制PHP内容到剪贴板
define('LAN_DEFINE','欢迎使用ThinkPHP');
// PHP数组定义 注意一定要用 $_lang
$_lang['lan_define'] = '欢迎使用ThinkPHP';
// PHP数组返回定义
return array('lan_define'=>'欢迎使用ThinkPHP');
要在程序里面设置语言定义的值,使用下面的方式:
PHP代码:
//PHP常量定义 为了保持兼容保留了define('LAN_DEFINE','欢迎使用ThinkPHP');
// PHP数组定义 注意一定要用 $_lang
$_lang['lan_define'] = '欢迎使用ThinkPHP';
// PHP数组返回定义
return array('lan_define'=>'欢迎使用ThinkPHP');
复制PHP内容到剪贴板
$language->set('define2','语言定义');
// 获取语言定义
$value = $language->get('define2');
为了更加方便获取语言定义的值,系统公共函数定义了快捷方法L,例如
$value = L("define2");
//和下面的方法等效
$language = Language : : getInstance();
$value = $language->get('define2');
// 设置语言变量的快捷方法
L('define2','语言定义2');
模板引擎的标签使用下面的方式来输出语言定义的值:
PHP代码:
$language = Language : : getInstance();$language->set('define2','语言定义');
// 获取语言定义
$value = $language->get('define2');
为了更加方便获取语言定义的值,系统公共函数定义了快捷方法L,例如
$value = L("define2");
//和下面的方法等效
$language = Language : : getInstance();
$value = $language->get('define2');
// 设置语言变量的快捷方法
L('define2','语言定义2');
复制PHP内容到剪贴板
上面的语言包是指项目的语言包,如果在提示信息的时候使用了框架底层的提示,那么还需要定义系统的语言包,系统语言包目录位于ThinkPHP目录下面的Lang目录。PHP代码:
{$Think.lang.lang_define}多语言的切换
ThinkPHP的多语言支持是自动的,系统会根据用户的浏览器语言设置自动获取相关的语言包,如果找到匹配当前的语言包文件,就会自动加载进来,因此不需要你手动加载语言包文件在项目中。
如果你需要测试语言包的话,可以使用l参数(可以通过项目配置项VAR_LANGUAGE设置)来手动切换,进行效果测试。例如:
引用:
1. http:/ /ServerIP/AppName/Module/Action/?l=zh-tw //切换到繁体中文2. http:/ /ServerIP/AppName/Module/Action?l=en-us //切换到英文
作者: tiana 发布时间: 2007-07-09
传说中的沙发
作者: Snake.Zero 发布时间: 2007-07-09
:L 这样的沙发抢得也太快了吧。。。。
作者: tiana 发布时间: 2007-07-09
:lol
作者: Snake.Zero 发布时间: 2007-07-10
LZ 头像我喜欢,粉可爱啊~
作者: Verdana 发布时间: 2007-07-10