Home  >  Article  >  Backend Development  >  thinkphp implements multi-language functions (language pack)_PHP tutorial

thinkphp implements multi-language functions (language pack)_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:37:081794browse

1. Add the following configuration in config.php of Home (the project name you chose)

Copy code The code is as follows:

return array(
//'Configuration items '=>'Configuration value'
'LANG_SWITCH_ON' => FAULT_LANG' => ; 'zh-cn', //Default language
'LANG_LIST' => 'en-us,zh-cn,zh-tw', //Must write a list of allowed languages ​​
'VAR_LANGUAGE' = > 'l', //Default language switching variable
);
?>


2. Add a php file (tag.php) to the conf folder of Home and add the following code:

Copy code The code is as follows:
return array(
// Just add the following line of definition
' app_begin' => array('CheckLang')
);


3. Copy the Extend/Behavior/CheckLangBehavior.class.php file to Home/lib/Behavior/ (only the full version of thinkphp package is available, if not, please create it yourself)

CheckLangBehavior.class.php code:

Copy code The code is as follows:

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.'/' : LANG_PATH.LANG_SET .'/';
// Read the project common language package
if(is_file(LANG_PATH.LANG_SET.'/common.php'))
L(include LANG_PATH.LANG_SET.'/common.php ');
// Read grouped common language package
if(defined('GROUP_NAME')){
if(C('APP_GROUP_MODE')==1){ // Independent group
$file = $path.'common.php';
             }else{ // Common grouping                                                         ' ); If (is_file( $path.$group.strtolower(MODULE_NAME).'.php'))
                   L(include $path.$group.strtolower(MODULE_NAME).'.php');
                                   >


4. Create 3 language folders under the lang folder in Home. They are zh-cn en-us zh-tw,

Create a common.php file in each of these three folders, as shown in the figure:

In common.php write


Copy the code

The code is as follows:

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

Copy code

The code is as follows:


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

Copy code

The code is as follows:


return array(
'welcome'=>'Welcome to ThinkPHP',
);?>
5. Create the view index.html
in the tpl/Index/ folder



Copy code

The code is as follows:

ThinkPHP Example: Multi-language
Simplified Chinese | Traditional Chinese | English
{$Think.lang.welcome}






Done!

If you want to switch the background language, add L before each sentence, such as:




Copy code
The code is as follows:

public function index(){

print L('add_user_error'); /add_user_error is just a language variable. The specific language must be written in the language package

$this->display();

}

I think cakephp does this better. There is no need to give a variable to every sentence.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/736806.htmlTechArticle1. Add the following configuration in config.php of Home (the project name you chose). Copy the code as follows: ?php return array( //'Configuration item'='Configuration value' 'LANG_SWITCH_ON' = true, //Enable language pack function...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn