系统语言包位于 ThinkPHP系统目录/Lang/ 目录下

作者:美狮美高梅官方网站

本文以实例讲述了CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能,对于网站开发来说非常实用。

ThinkPHP 系统多语言

  thinkphp多语言设置有点‘高大上’,为什么说它有点‘高大上’呢?因为本人设置了好久才弄好,而本人之所以弄了好久的原因,竟然是因为‘开启语言设置必须得先开启初始化系统的行为类’,所以,在这里,因为本人的经验有限,姑且认为tp的多语言设置必须的先初始化tp的CheckLangBehavior.class.php

applicationlanguageenglishbm_lang.phpapplicationlanguagezh-cnbm_lang.php

除了本节上文中所讲述的项目多语言的实现外,如果有必要,还可以将 ThinkPHP
的系统提示语言进行国际化。

  怎么初始化CheckLangBehavior.class.php呢?下面进行讲解。

注意:1. “_lang.php”的前缀要一致;2. 如果还有其他语言包,可创建文件applicationlanguage***bm_lang.php

ThinkPHP系统简体中文语言包:ThinkPHP系统目录/Lang/zh-cn.php ThinkPHP
系统语言包位于 ThinkPHP系统目录/Lang/ 目录下,语言包名字以 $_SERVER['HTTP_ACCEPT_LANGUAGE']
来命名,文件扩展名为 php

  上一章已经对行为类进行讲解了,不懂的可以看看上篇文章。这里就不多介绍。

public function lang($line,$param = array{ //判断浏览器语言 $default_lang_arr = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $strarr = explode(",",$default_lang_arr); $default_lang = $strarr[0]; // echo '1'.$default_lang; // 根据浏览器类型设置语言 if( $default_lang == 'en-us' || $default_lang == 'en'){ $this->config->set_item('language', 'english'); // 根据设置的语言类型加载语言包 $this->load->language; }else{ $this->config->set_item; $this->load->language; } // 当前语言 // echo '2'.$this->config->item; // 根据语言包中的某个语言标记的翻译,判断是否使用了语言包 $line = 'title'; $param = array(); // $CI = & get_instance(); // $line = $CI->lang->line; // 上面两行等价于下面一行,& get_instance()实例化 $line = $this->lang->line; if && count { array_unshift; $line = call_user_func_array; } echo '^_^'.$line;}

下面是常见的语言包:

  tp框架下面,所有模块初始化CheckLangBehavior.class.php,下面截图:

简体中文语言包:zh-cn.php
繁体中文语言包:zh-tw.php
美国英语语言包:en-us.php
日语语言包:ja.php
韩语语言包:ko.php
德语语言包:de.php
法语语言包:fr.php

  图片 1

ThinkPHP
默认只有简体中文语言包 zh-cn.php ,如果要实现其他语言,可以按照命名规则形成语言包文件,并将提示信息翻译成对应的语言文字即可。ThinkPHP
会根据用户的浏览器语言加载对应的语言包,如果浏览器支持多种语言,那么取第一种支持语言。如果找不到相关的语言包文件,会使用默认语言。
小例子

  路径大家应该看得懂吧,就在你的公用模块配置文件config.php那里新建一个tags.php就行了,tags.php的内容如下:


ThinkPHP系统目录/Lang/ 目录下,编辑创建 en-us.php 文件,将 zh-cn.php 内的提示文字翻译成对应的英文。以
_ERROR_ACTION_ 语言定义为例:

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

return array(
'_ERROR_ACTION_' => 'Error Action:',
);
?>

  上面的checkLangBehavior.class.php在tp的内置行为类文件夹下面,截图证明一下先:

该语言定义用于提示错误的操作,那在浏览器访问一个存在的模块但不存在的操作时(如:Index/lang1),如果您的浏览器是英文版本,那么提示信息就由原来的:

图片 2

本文由美狮美高梅官方网站发布,转载请注明来源

关键词: