zoukankan      html  css  js  c++  java
  • Cakephp中如何实现i18n?

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

    中文化cakephp有如下几步:

    1,在代码中使用__()函数。

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

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

    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中加上如下代码:

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

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

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

  • 相关阅读:
    机器学习学习记录【持续更新】——pandas
    机器学习学习记录【持续更新】——降低损失
    Robcup2D足球学习记录【2020.01.30】
    Robcup2D足球学习记录【2020.01.18】
    Robcup2D足球学习记录【2020.01.14】
    javacript window对象
    mybatis if 语句嵌套
    hashMap 和 linkedHashMap 的区别和联系
    var let const的一些区别
    Jetty9开发(1)
  • 原文地址:https://www.cnblogs.com/youlechang123/p/2236812.html
Copyright © 2011-2022 走看看