关于ThinkPHP使用公共语言包的问题总结
作者:admin 日期:2012-11-12
在文章的开始,我首先要声明一点:本篇文章不是讲解的ThinkPHP的多语言转换,而是关于ThinkPHP使用公共语言包来代替模板文件中的汉字的教程.
我们知道,Css方便之处在于它可以让你定义一个样式,只要你修改下这个样式,那么所有的样式都会随之改变,而ThinkPHP的公共语言包功能也是这个原理,我们可以设置一个数组,该数组中包含了模板中用到的语言.如果要修改模板中的多处相同的文字是比较麻烦的,但是如果只是修改数组中的某一项就简单多了.下面我们就来看下,如何在ThinkPHP下建立自己的语言包.
首先,我假设你已经初始化了Thinkphp(生成了文件的架构),在这里就拿我的一个项目为例子来讲解下.
我的项目文件夹是SitePHP(APP_PATH),那么我们首先要配置下语言包的使用环境,我们找到SitePHP/Conf/config.php(如果没有就新建一个)
添加如下语句
return array{ 'LANG_AUTO_DETECT'=> false, 'LANG_SWITCH_ON' => true, 'DEFAULT_LANG' =>'cn', }
好了,下一步我们需要,在SitePHP/Lang文件夹下建立cn文件夹,因为ThinkPHP系统会自动调用默认语言文件夹下的common.php文件,那么我们就建立一个common.php文件,然后在common.php文件中添加如下内容:
return array( 'site_name' =>'我的网站', 'site_keywords' =>'网站,SEO', )
下面是最关键的一步,(笔者因为忽略了这一步好久没有调用成功),在SitePHP/Conf/下 建立一个tags.php文件,然后加入如下内容
return array( 'app_begin'=> array('CheckLang'), );
好了,你已经配置好一切了,可以随便调用了,如果你想在Action中调用,那么可以使用
L(“site_name”)
如果你想在模板中调用,你可以使用{:L(“site_name”)},这样一来如果你想修改网站的名称直接修改site_name的值就可以了,是不是很方便呢?
上面我只是说了一些比较大众的设置,如果你设置了分组,以及TMPL_FILE_DEPR,那么相对就要根据不同的情况来命名语言包了
具体的语言包文件命名规范如下:
项目公共语言包 | 语言目录/common.php |
项目分组语言包 | 语言目录/分组名.php |
项目模块语言包 | 不存在分组情况:语言目录/模块名(小写).php |
存在分组的情况:语言目录/分组名/模块名(小写).php |
分组的模块语言包定义受TMPL_FILE_DEPR参数配置影响,如果你修改了TMPL_FILE_DEPR参数,例如:
- ‘TMPL_FILE_DEPR’=>’_',
那么,分组的模块语言包定义方式应该改为:
语言目录/分组名_模块名(小写).php