【问题标题】:i18n console task - how to use it?i18n 控制台任务 - 如何使用它?
【发布时间】:2012-05-15 21:01:27
【问题描述】:

我有蛋糕 php 应用程序,我正在使用翻译功能 <?php __('msg'); ?>。 我的 app/config/bootstrap.php 我添加了行 Configure::write('Config.language', 'eng'); - 我希望英语作为默认语言。

我创建了文件夹app/Locale/eng/LC_MESSAGES

然后我在我的 app 文件夹中打开 windows 控制台并输入“cake i18n extract” - 有几个提示 - 我选择扫描 app 目录并输出到 Locale 目录。

在我的文件夹 app/Locale 中的 i18n 程序之后出现了几个文件:

cake.pot
cake_dev.pot
default.pot

app/Locale/eng 中没有任何内容

所以我只是将 default.pot 复制到 app/Locale/eng/LC_MESSAGES 并添加了一些翻译,但是当我通过网站打开时,没有打印任何内容来代替 __('') 函数...

如何正确设置这个?

【问题讨论】:

    标签: cakephp internationalization translation


    【解决方案1】:

    :) 你需要从你刚刚创建的 .pot 文件中为每个语言创建一个 .po 文件。 我建议使用poedit 来做到这一点

    在 Poedit 中,转到File->New Catalog from POT file,然后选择蛋糕烘焙生成的default.pot 文件。它会询问你一些信息,然后你会看到所有要翻译的文本,翻译完毕,保存到app/Locale/eng/LC_MESSAGES/default.po

    当您在代码中添加/删除/修改其中一些字符串时,您需要再次运行烘焙以提取文本。它将更新 .pot 文件,在 Poedit 中你需要打开你的 .po 文件并转到 Catalog->Update from POT 它会显示你需要翻译的所有新行,有时它会尝试为你翻译它们,根据你之前的翻译

    希望对你有帮助

    【讨论】:

    • 仍然没有 - 我在 locale/eng/LC_MESSAGES 中创建了 default.po(也出现了 default.mo)并添加了一些翻译,但 __('') 函数仍然没有显示任何内容。当我回显 Configure::read('Config.language') 时,它说 'eng' 那么怎么了?
    • 阅读你的例子我看到你正在做<?php __("msg")?>,而它应该是<?php echo __("msg");?>,也许是这样
    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多