Cakephp中如何实现i18n?

好像 网站建设网上一直没有比较详细的中文资料来说述如何使用cakephp来实现i18n。正好昨天被逼无奈的将代码中的提示中文化了一把,略有心得,简而志之。

中文化cakephp有以下几步:
1,在代码中使用__()函数。

在须要进行中文化的地方使用__()函数,以下所示:

__('This is the string i need to translate', true);

将第2个参数置为ture,这样若是有相对应的翻译词条的话那么翻译过的词条将输出,不然会输出未翻译的词条。
2,执行i18n task

若是你的代码中存在__()函数的话,你就能够执行i18n task来进行代码扫描了。

i18n task的做用是扫描源码中全部__()函数,为__()中的string创建翻译索引并将这些索引保存在.pot文件中。

那么如何执行i18n task呢?
命令行进入你项目的app目录
若是是windows平台,请确保环境变量的PATH中包含php的bin路径,并确保你cake目录下的cake\console也存在于环境变量的PATH中
执行命令 cake i18n,这时候应该会出现以下所示的提示,选择E既可

Java代码   收藏代码
  1. ---------------------------------------  
  2. I18n Shell  
  3. ---------------------------------------  
  4. [E]xtract POT file from sources  
  5. [I]nitialize i18n database table  
  6. [H]elp  
  7. [Q]uit  
  8. What would you like to do? (E/I/H/Q)  
  9. >  


i18n task执行完毕后应该\app\locale目录下生成名为default.pot的文件,将这个文件拷贝至\app\locale\chs\LC_MESSAGES目录下
使用pot文件的编辑工具翻译词条。推荐使用Poedit
在\app\config\core.php中加上以下代码:

Php代码   收藏代码
  1. Configure::write('Config.language''chs');  


好了,这样就完成简单的项目中文化了。

其中不少细节因为篇幅缘由就不作完整介绍了。有疑问的 网站建设话请参考cakephp的帮助文档。(fblww-0308)
相关文章
相关标签/搜索