我遇到了一个非常令人沮丧的问题,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
这有点让我觉得'后备'实际上是进入文件并读取翻译的内容。由于某种原因,我的翻译不会发生这种情况。
到目前为止我尝试过:
过去4天我试图解决这个问题,所以我肯定已经尝试了很多其他我现在无法回忆的事情。
我会感谢任何人都可以提供的任何指示
答案 0 :(得分:1)
原来是权限问题。我之前没有抓到它,因为我更新了所有文件的权限和所有权。 Locale下的文件夹,但不是Locale文件夹本身。