使用 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.pot
和 default.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
.
上下文
我想将我的应用程序翻译成法语和英语。我完全遵循 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.pot
和 default.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
.