ホームページ  >  記事  >  php教程  >  TP3.2.3双语言包用例—企业网站实践分享

TP3.2.3双语言包用例—企业网站实践分享

WBOY
WBOYオリジナル
2016-06-07 11:38:071361ブラウズ

才接触TP的新手朋友,先看看官方双语支持说明>>

待更新完善!


最近在做一个企业网站,客户要求做中英文双语版,于是研究了一下TP的语言包的使用,以TP3.2.3为例。

普及一句话:ThinkPHP的多语言支持是指的是模板多语言支持,数据的多语言转换(翻译)不在这个范畴之内。

接下来要达到的目的:

例如在提交留言表单时,action="/?m=home&c=message&a=add&l=zh-cn",

假设此时用户输入验证码错误,程序提示信息为中文“验证码错误或已过期”,参数 l=en-us 时程序提示信息为英文“Verification code input error or expired!”。

当然上面这个效果我们通过一个简单的参数判断就可以实现,但我们要换一种方法,也就是用多语言支持来实现。

实现流程:1、配置:开启多语言功能 —> 2、自定义语言包 —> 3、运用


1、配置:开启多语言功能
新建一个tags.php语言包配置文件,我们以放在应用公共目录下Conf目录为例(位置不同,作用的范围不同,见官方解释)
放置到 \Application\Common\Conf\tags.php<?php <br /> /**<br>  * 语言包配置文件<br>  */<br> return array(<br>     'app_begin'        => array('Behavior\CheckLangBehavior'),   //注意这里,官方的文档解释感觉有误(大家自行分辨),TP3.2.3用Behavior\CheckLang会出错,提示:Class 'Behavior\CheckLang' not found<br>     'LANG_SWITCH_ON'   => true,      // 开启语言包功能<br>     'LANG_AUTO_DETECT' => true,    // 自动侦测语言 开启多语言功能后有效<br>     'LANG_LIST'        => 'zh-cn,',         // 允许切换的语言列表 用逗号分隔<br>     'VAR_LANGUAGE'     => 'l',          // 默认语言切换变量,注意到上面发的链接了么,l=zh-cn,就是在这里定义l这个变量<br> );2、自定义语言包

在\Application\Common\Lang\目录下建立两个文件(如果Lang目录不存在则新建):
\Application\Common\Lang\zh-cn.php //中文
\Application\Common\Lang\en-us.php //英文
如下图结构所示:
TP3.2.3双语言包用例—企业网站实践分享
如果需要定义别的语言添加新的文件即可,但文件名的命名采用浏览器的语言命名(全部小写)定义。

zh-cn.php的内容如下:<?php <br /> /**<br>  * 中文自定义<br>  */<br> return array(<br>     /* 在线留言 */<br>     'VERI_CODE_ERROR'=>'验证码输入错误或已过期!',   //这里只定义了一个项,用做例子,键名可以随意取<br>     //...其他<br> );en-us.php的内容如下:<?php <br /> /**<br>  * English custom<br>  */<br> return array(<br>     /* message */<br>     'VERI_CODE_ERROR'=>'Verification code input error or expired!',   //键名可以随意取,但要与上面的中文的键名保持一致,值翻译成英文<br>     //...other<br> );3、运用

做个简单的测试:
假设我们将提交留言表单设置action="/?m=home&c=message&a=add&l=en-us",也就是把表单数据提交到message控制器下的add()方法,接收程序代码如下:<?php <br /> namespace Home\Controller;<br> use Think\Controller;<br> use Think\Think;<br> <br> class MessageController extends Controller {<br>     function __construct(){}<br>     public function add(){<br>        //验证码核对    <br>        if(....){ //假设验证码输入错误<br>              $this->error(L('VERI_CODE_ERROR'));    //关键代码:L('VERI_CODE_ERROR')   L方法可获取或设置语言定义,这里由于传递进来的 l 参数的值为en-us,所以显示的是 Verification code input error or expired!这个提示。<br>         }<br>     }<br> }4、小结:上面是一个简单的用例,但可以通过这个例子运用多语言支持这个功能点,流程就是这样,对新手朋友可能有点帮助。





AD:真正免费,域名+虚机+企业邮箱=0元

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。