Cakephp 3国际化不工作
我在Cakephp 3中遇到了一个非常令人沮丧的问题。我刚刚更新了所有的.ctp文件,使之使用double,但我无法让它打印本地化字符串 我在config/app.php中将默认语言环境设置为en_150:Cakephp 3国际化不工作,php,cakephp,localization,internationalization,translation,Php,Cakephp,Localization,Internationalization,Translation,我在Cakephp 3中遇到了一个非常令人沮丧的问题。我刚刚更新了所有的.ctp文件,使之使用double,但我无法让它打印本地化字符串 我在config/app.php中将默认语言环境设置为en_150: App' => [ 'namespace' => 'App', 'encoding' => env('APP_ENCODING', 'UTF-8'), 'defaultLocale' => env('APP_DEFAUL
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
这让我觉得“回退”实际上是进入文件并读取翻译的内容。由于某种原因,我的翻译没有出现这种情况
到目前为止,我所尝试的:
删除缓存100次以上
将config/app.php中的默认语言环境设置为en_150以外的其他名称,我担心这对cakephp来说是无效的语言环境名称
在翻译文件的.pot.po文件扩展名之间切换
更新nano和poedit中的.po文件
在过去的4天里,我一直在努力解决这个问题,所以我肯定尝试过很多其他我现在想不起来的事情
我很感激任何人能提供的任何提示。结果证明这是一个权限问题。我之前没有注意到,因为我已经更新了Locale下所有文件和文件夹的权限和所有权,但没有更新Locale文件夹本身。Update:我尝试过从cakephp 3.3更新到3.4,问题仍然存在