Home  >  Article  >  Backend Development  >  Cakephp中怎么实现i18n

Cakephp中怎么实现i18n

WBOY
WBOYOriginal
2016-06-13 10:30:39891browse

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既可

---------------------------------------I18n Shell---------------------------------------[E]xtract POT file from sources[I]nitialize i18n database table[H]elp[Q]uitWhat would you like to do? (E/I/H/Q)>


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

Configure::write('Config.language', 'chs');


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

其中很多细节由于篇幅原因就不做完整介绍了。有疑问的话请参考cakephp的帮助文档。

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