• 技术文章 >后端开发 >php教程

    thinkphp实现多语言功能(语言包)_PHP教程

    2016-07-13 10:37:08原创437
    1.在Home(你取的项目名)的config.php中添加如下配置

    复制代码 代码如下:

    return array(
    //'配置项'=>'配置值'
    'LANG_SWITCH_ON' => true, //开启语言包功能
    'LANG_AUTO_DETECT' => true, // 自动侦测语言
    'DEFAULT_LANG' => 'zh-cn', // 默认语言
    'LANG_LIST' => 'en-us,zh-cn,zh-tw', //必须写可允许的语言列表
    'VAR_LANGUAGE' => 'l', // 默认语言切换变量
    );
    ?>

    2.Home的conf文件夹里添加一个php文件(tag.php),添加如下代码:

    复制代码 代码如下:

    return array(
    // 添加下面一行定义即可
    'app_begin' => array('CheckLang')
    );

    3.把Extend/Behavior/CheckLangBehavior.class.php 文件复制到Home/lib/Behavior/中(完整版的thinkphp包才有,没有的话请自行创建)

    CheckLangBehavior.class.php代码:

    复制代码 代码如下:

    defined('THINK_PATH') or exit();
    /**
    * 语言检测 并自动加载语言包
    * @category Extend
    * @package Extend
    * @subpackage Behavior
    */
    class CheckLangBehavior extends Behavior {
    // 行为参数定义(默认值) 可在项目配置中覆盖
    protected $options = array(
    'LANG_SWITCH_ON' => false, // 默认关闭语言包功能
    'LANG_AUTO_DETECT' => true, // 自动侦测语言 开启多语言功能后有效
    'LANG_LIST' => 'zh-cn', // 允许切换的语言列表 用逗号分隔
    'VAR_LANGUAGE' => 'l', // 默认语言切换变量
    );

    // 行为扩展的执行入口必须是run
    public function run(&$params){
    // 开启静态缓存
    $this->checkLanguage();
    }

    /**
    * 语言检查
    * 检查浏览器支持语言,并自动加载语言包
    * @access private
    * @return void
    */
    private function checkLanguage() {
    // 不开启语言包功能,仅仅加载框架语言文件直接返回
    if (!C('LANG_SWITCH_ON')){
    return;
    }
    $langSet = C('DEFAULT_LANG');
    // 启用了语言包功能
    // 根据是否启用自动侦测设置获取语言选择
    if (C('LANG_AUTO_DETECT')){
    if(isset($_GET[C('VAR_LANGUAGE')])){
    $langSet = $_GET[C('VAR_LANGUAGE')];// url中设置了语言变量
    cookie('think_language',$langSet,3600);
    }elseif(cookie('think_language')){// 获取上次用户的选择
    $langSet = cookie('think_language');
    }elseif(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){// 自动侦测浏览器语言
    preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
    $langSet = $matches[1];
    cookie('think_language',$langSet,3600);
    }
    if(false === stripos(C('LANG_LIST'),$langSet)) { // 非法语言参数
    $langSet = C('DEFAULT_LANG');
    }
    }
    // 定义当前语言
    define('LANG_SET',strtolower($langSet));

    $group = '';
    $path = (defined('GROUP_NAME') && C('APP_GROUP_MODE')==1) ? BASE_LIB_PATH.'Lang/'.LANG_SET.'//m.sbmmt.com/m/' : LANG_PATH.LANG_SET.'//m.sbmmt.com/m/';
    // 读取项目公共语言包
    if(is_file(LANG_PATH.LANG_SET.'/common.php'))
    L(include LANG_PATH.LANG_SET.'/common.php');
    // 读取分组公共语言包
    if(defined('GROUP_NAME')){
    if(C('APP_GROUP_MODE')==1){ // 独立分组
    $file = $path.'common.php';
    }else{ // 普通分组
    $file = $path.GROUP_NAME.'.php';
    $group = GROUP_NAME.C('TMPL_FILE_DEPR');
    }
    if(is_file($file))
    L(include $file);
    }
    // 读取当前模块语言包
    if (is_file($path.$group.strtolower(MODULE_NAME).'.php'))
    L(include $path.$group.strtolower(MODULE_NAME).'.php');
    }
    }

    4.在Home里的lang文件夹下创建3个语言文件夹。分别是zh-cn en-us zh-tw,

    在这三个文件夹里各创建一个common.php文件,如图:

    在common.php 里对应写上

    复制代码 代码如下:

    return array(
    'welcome'=>'Welcome to use thinkphp',
    );
    ?>

    复制代码 代码如下:

    return array(
    'welcome'=>'欢迎使用ThinkPHP',
    );
    ?>

    复制代码 代码如下:

    return array(
    'welcome'=>'歡迎使用ThinkPHP',
    );
    ?>

    5.在tpl/Index/文件夹下创建视图 index.html

    复制代码 代码如下:





    ThinkPHP示例:多语言



    切换语言:简体中文 | 繁体中文 | 英文

    {$Think.lang.welcome}




    大功告成!

    后台语言要进行语言切换的话, 在每句话之前加L,如:

    复制代码 代码如下:

    public function index(){
    print L('add_user_error');  //add_user_error只是语言变量,具体的语言要到语言包里写
    $this->display();
    }

    这一点我觉得cakephp做的就比较好,不需要给每句话都给予一个变量。

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/736806.htmlTechArticle1.在Home(你取的项目名)的config.php中添加如下配置 复制代码 代码如下: ?php return array( //'配置项'='配置值' 'LANG_SWITCH_ON' = true, //开启语言包功能...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:thinkphp 语言包
    上一篇:php获得url参数中具有&的值的方法_PHP教程 下一篇:PHP根据IP判断地区名信息的示例代码_PHP教程
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 整理总结nginx、php-fpm和mysql等的权限划分• 具有新特性的PHP5之异常处理机制_PHP教程• php 字符串各种处理方法实例详解_PHP教程• PHP采集程序中常用的函数_PHP教程• PHP缓存机制的具体讲解_PHP教程
    1/1

    PHP中文网