使用 CakePHP 3 进行 i18n 翻译

i18n translation with CakePHP 3

上下文

我想将我的应用程序翻译成法语和英语。我完全遵循 CakePHP 3 documentation 但它不起作用。

到目前为止我做了什么

为了我的开发,我正在使用一个vagrant box来轻松起床和运行 CakePHP 3。这个盒子被命名为vagrant-chef

/config/bootstrap.php

我修改了第 100 行以使用法语作为默认语言。

ini_set('intl.default_locale', 'fr_CA');

/src/Controller/PagesController

我将此方法添加到默认的 PagesController

public function initialize() {
    I18n::locale('en');
}

/src/Template/Pages/home.ctp

我添加了这两行

    <?php echo __('Hey, bonjour'); ?>
    <?php echo __('Je teste la traduction'); ?>

.pot文件生成

我从终端输入了这条命令bin/cake i18n extract。 CakePHP 在 /src/Locale/ 中创建了 2 个文件。这些文件是 cake.potdefault.pot。我这样翻译 default.pot 文件:

...
msgid "Hey, bonjour"
msgstr "Hey, hello"
...

语言环境目录结构

/src/Locale 文件现在看起来像这样:

/en
   /default.pot

尽管我尝试翻译我的应用程序,但我没有得到任何工作。我以为这是一个缓存问题,所以我删除了 /tmp/cache/persistent/.

中的文件

谢谢。

cake i18n extract生成的.pot为模板文件。您的每种语言文件需要 .po。因此,根据您的示例,它应该是 src/Locale/en/default.po.