ThinkPHP实现多语言切换

有些国际化的项目需要用到多语言切换功能,例如页面支持中英日韩等语言的切换,这就要用到Thinkphp的多语言行为扩展了。

启用多语言

首先检查ThinkPHP/Library/Behavior下有没有CheckLangBehavior.class.php文件,如果没有就需要下载一个,然后在项目的行为配置文件(Common/Conf/tags.php)中启用多语言行为,没有 tags.php的请创建,添加如下配置项:

<?php
return array(
     //app_begin这个行为标签,其实就是tp的内置标签,作用是在tp初始化的时候,触发某个行为,在这里设置当然是触发多语言的功能了
    'app_begin' => array('Behavior\CheckLangBehavior'),//开启语言功能
);

由于多语言默认是关闭的,我们还要在项目配置文件(Conf/config.php)中开启语言包功能,并做相关配置:

//配置多语言
'LANG_SWITCH_ON'  => true,    //开启多语言支持开关
'DEFAULT_LANG'    => 'en-us',  // 默认语言
'LANG_LIST'    => 'en-us,zh-cn', // 允许切换的语言列表 用逗号分隔
'LANG_AUTO_DETECT'  => true,  // 自动侦测语言

语言包的使用由系统自动判断当前用户的浏览器支持语言来定位,如果浏览器支持多种语言,那么取第一种支持语言。 也可以在URL地址中使用参数来切换多语言,例如:

http://acier.cn/index.php?l=en-us

多语言的切换受LANG_LIST参数控制,如果浏览器自动侦测的语言或者用户切换的语言在LANG_LIST之外则无效,系统会采用默认语言。

定义语言包

语言文件主要提供对模板的多语言支持,数据的多语言转换(翻译)不在这个范畴之内。

可以为项目定义不同的语言文件,语言文件包括系统语言包和项目语言包。框架的系统语言包目录在系统框架ThinkPHP/Lang目录下面,每个语言都对应一个语言包文件, 系统默认有简体中文语言包文件zh-cn.php和英文语言包en-us.php ,如果要增加繁体中文zh-tw或者其他语言包,只要对照系统已有的语言包增加相应的文件。

项目语言包文件位于项目的Lang目录下面,如App/Common/Lang,并且按照语言类别分子目录存放,在执行的时候系统会自动加载,无需手动加载,如果我需要中英文切换, 可以在Lang文件夹下创建两个文件,分别是en-us.php和zh-cn.php,然后在两个文件写入如下内容:

en-us.php

<?php
    return array(
        'NIHAO'=>'Hello',
    );

zh-cn.php

<?php
    return array(
        'NIHAO'=>'你好',
    );

使用语言定义

通过上面的设置后,我们就可以使用多语言了。

在程序控制器中使用定义的多语言,这样调用:L(‘NIHAO’); 在模板中使用定义的多语言,这样调用:{$Think.lang.NIHAO}

其实多语言的切换是由url中的l参数决定的,我们可以为项目中添加切换按钮,方便用户随时切换

<div style="float:left">
    <p style="font-size: 14px">语言切换:
        <a href="?l=zh-cn"><span style="color: #0062F5">简体中文</span></a> | <a href="?l=en-us"><span style="color: #0062F5">English</span></a>
    </p>
</div>

发表评论

发表回复

沙发空缺中,还不快抢~