thinkphp3.2.3多语言的配置

*******************application/common/common/function.php 添加方法:

//获取浏览器语言
function getBrowserLanguage(){
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4); //只取前4位,这样只判断最优先的语言。如果取前5位,可能出现en,zh的情况,影响判断。  
    if (preg_match("/zh-c/i", $lang))  
    return "zh-cn";  
    else if (preg_match("/zh/i", $lang))  
    return "zh-tw";  
    else if (preg_match("/en/i", $lang))  
    return "en-us";  
    else if (preg_match("/fr/i", $lang))  
    return "French";  
    else if (preg_match("/de/i", $lang))  
    return "German";  
    else if (preg_match("/jp/i", $lang))  
    return "Japanese";  
    else if (preg_match("/ko/i", $lang))  
    return "Korean";  
    else if (preg_match("/es/i", $lang))  
    return "Spanish";  
    else if (preg_match("/sv/i", $lang))  
    return "Swedish";  
}


*******************application/common/conf/config.php 配置:

return array(
'LANG_SWITCH_ON' => true,   // 开启语言包功能
'LANG_AUTO_DETECT' => true, // 自动侦测语言 开启多语言功能后有效
'DEFAULT_LANG' => 'zh-cn', // 默认语言
'LANG_LIST'        => 'zh-cn,zh-tw,en-us', // 允许切换的语言列表 用逗号分隔
'VAR_LANGUAGE'     => 'l', // 默认语言切换变量
//多语言支持,可以查看 https://www.kancloud.cn/manual/thinkphp/1874

    'DEFAULT_MODULE'        =>  'App',  // 默认模块

    /* 数据库设置 */
    'DB_TYPE'               =>  'mysql',     // 数据库类型
    'DB_HOST'               =>  '127.0.0.1', // 服务器地址
    'DB_NAME'               =>  'test',          // 数据库名
    'DB_USER'               =>  'root',      // 用户名
    'DB_PWD'                =>  'root',          // 密码
    'DB_PORT'               =>  '3306',        // 端口

    'URL_MODEL'             =>  2,       // 要来隐藏index.php
    // 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE  模式); 3 (兼容模式)  默认为PATHINFO 模式

    'SESSION_OPTIONS'       =>  array(
    "expire"=>24*3600,   //session的有效期,需要配合 index.php 里的 ini_set('session',时间) 来使用
), 

"lang_array" => array( //语言数组
"zh-cn" => "中文-简体",
"zh-tw" => "中文-繁体",
"en-us" => "English",
),  
);

*******************application/common/conf/tags.php 配置:

return array(
'app_begin' => array('Behavior\CheckLangBehavior'),  //检测语言
);


*******************application/common/lang/zh-cn.php 配置:

/**
 * ThinkPHP 简体中文语言包
 */
return array(
    /* 核心语言变量 */  
    '_MODULE_NOT_EXIST_'     => '无法加载模块',

);

*******************application/common/lang/zh-tw.php 配置:

/**
 * ThinkPHP 繁体中文語言包
 */
return array(
    /* 核心語言變數 */  
    '_MODULE_NOT_EXIST_'     => '無法載入模組',

);

*******************application/common/lang/en-us.php 配置:

/**
 * ThinkPHP English language package
 */
return array(
    /* core language package */ 
    '_MODULE_NOT_EXIST_'     => "Module can't be loaded",

);

*******************application/app/controller/base/basecontroller.class.php 配置:

        $get_lang = I("get.l",'');  //用户点击切换语言
        $session_lang = session("pet_lang"); //session语言
        $browser_lang = getBrowserLanguage();//浏览器语言
        if(isset($get_lang) && !empty($get_lang)){
            session("pet_lang",$get_lang); //设置session
        }
        else if(isset($session_lang) && !empty($session_lang)){
            $session_lang = session("pet_lang"); //session语言
        }
        else if(isset($browser_lang) && !empty($browser_lang)){
            session("pet_lang",$browser_lang);
        }


        // 读取框架语言包
        $file   =   THINK_PATH.'Lang/'.session("pet_lang").'.php';
        if(is_file($file))
            L(include $file);


        // 读取应用公共语言包
        $file   =  LANG_PATH.session("pet_lang").'.php';
        if(is_file($file))
            L(include $file);
        
        // 读取模块语言包
        $file   =   MODULE_PATH.'Lang/'.session("pet_lang").'.php';
        if(is_file($file))
            L(include $file);


        // 读取当前控制器语言包
        $file   =   MODULE_PATH.'Lang/'.session("pet_lang").'/'.strtolower(CONTROLLER_NAME).'.php';
        if (is_file($file))
            L(include $file);


你可能感兴趣的:(php)