用CakePHP 3翻译i18n

时间:2015-08-05 03:13:55

标签: php cakephp localization internationalization cakephp-3.0

上下文

我想用法语和英语翻译我的应用程序。我完全遵循了CakePHP 3 documentation,但它无法正常工作。

到目前为止我做了什么

对于我的开发,我使用vagrant box轻松启动并运行CakePHP 3.此框名为vagrant-chef

/config/bootstrap.php

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

<div class="icon">
  <img src="http://betanews.com/wp-content/uploads/2015/06/win10-logo.jpg" alt="none" width="100%" height="100%" />
  <svg class="txt" xmlns="http://www.w3.org/2000/svg">
    <circle cx="6.5" cy="6.5" r="6.5" fill="red" />
    <text x="6.5" y="9.7" text-anchor="middle" stroke="#FFF" font-size="10">13</text>
  </svg>
</div>

/ SRC /控制器/ PagesController

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

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

/src/Template/Pages/home.ctp

我添加了这两行

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

.pot文件生成

在终端上,我输入了这个命令 <?php echo __('Hey, bonjour'); ?> <?php echo __('Je teste la traduction'); ?> 。 CakePHP在bin/cake i18n extract中创建了2个文件。这些文件是/src/Locale/cake.pot。我翻译了default.pot文件:

default.pot

语言环境目录结构

... msgid "Hey, bonjour" msgstr "Hey, hello" ... 文件现在看起来像这样:

/src/Locale

尽管我试图翻译我的应用程序,但我没有做任何工作。我认为这是一个缓存问题,所以我删除了/en /default.pot 中的文件。

感谢。

1 个答案:

答案 0 :(得分:7)

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