Cakephp 3国际化无效

时间:2017-02-27 14:06:02

标签: php cakephp localization internationalization translation

我遇到了一个非常令人沮丧的问题,Cakephp 3.我刚刚更新了所有我要使用的.ctp文件(双_)但是我无法打印本地化的字符串。

我在config / app.php中将默认语言环境设置为en_150:

App' => [
        'namespace' => 'App',
        'encoding' => env('APP_ENCODING', 'UTF-8'),
        'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_150'),
        ...

我已尝试直接在config / bootstrap.php中设置语言环境,但它没有效果:

ini_set('intl.default_locale', Configure::read('App.defaultLocale'));

我使用cake i18n extract生成了.pot文件,然后为en_150语言环境执行了cake i18n init。我相信他们走的是正确的道路:

$ find src/Locale/
src/Locale/
src/Locale/default.po
src/Locale/cake.pot
src/Locale/default.pot
src/Locale/en_150
src/Locale/en_150/default.po
src/Locale/en_150/default.po.po
src/Locale/en_150/cake.po
src/Locale/en_150/default.mo.po
src/Locale/default.mo

最奇怪的是,我更新了Translator类(vendor / cakephp / cakephp / src / I18n / Translator.php)来记录正在查找的每个消息密钥,并且我看到了我的密钥和debugKit的密钥。然而,debugKit的键被查找两次,一次从内存中,然后从后备中查找。但是,我的密钥永远不会被后备人查找。

debugkit的密钥:

2017-02-27 13:47:16 Fallback lookup Event: Controller.beforeRender
2017-02-27 13:47:16 Event: Controller.beforeRender
2017-02-27 13:47:16 View Render start
2017-02-27 13:47:16 Fallback lookup View Render start
2017-02-27 13:47:16 View Render start

我的钥匙:

2017-02-27 13:47:16 AppName
2017-02-27 13:47:16 Sign in to start your session
2017-02-27 13:47:16 Email
2017-02-27 13:47:16 Password
2017-02-27 13:47:16 Remember Me
2017-02-27 13:47:16 Sign In

这有点让我觉得'后备'实际上是进入文件并读取翻译的内容。由于某种原因,我的翻译不会发生这种情况。

到目前为止我尝试过:

  1. 删除缓存(超过100次)
  2. 将默认语言环境(在config / app.php中)设置为en_150以外的其他语言(我担心这将是cakephp的无效语言环境名称)
  3. 在.pot< - >之间切换.po文件扩展名为翻译文件
  4. 更新nano和amp;中的.po文件poEdit的
  5. 过去4天我试图解决这个问题,所以我肯定已经尝试了很多其他我现在无法回忆的事情。

    我会感谢任何人都可以提供的任何指示

1 个答案:

答案 0 :(得分:1)

原来是权限问题。我之前没有抓到它,因为我更新了所有文件的权限和所有权。 Locale下的文件夹,但不是Locale文件夹本身。