我把它放进了我的配置/核心.php
Configure::write('Product', array(
...
'Colors' => array(
'black' => __('Black'),
'brown' => __('Brown'),
'grey' => __('Grey'),
'white' => __('White'),
'blue' => __('Blue')
),
...
));
在视图文件 (.ctp) 中,我将该数组呈现为 JSON:
$config = array(
...
'colors' => Configure::read('Product.Colors'),
...
);
echo '(function(){window.AppCfg=' . json_encode($config) . '}).call(this);';
如果现在我更改当前语言,颜色将保留为英语。如果我将数组从 core.php 直接粘贴到我的 .ctp 中,那么它工作正常 - 为什么?我确定我以前在核心中使用过 __(.php)。
在 core.php
中执行此操作还为时过早,到包含此文件时,尚未构建应用程序的正确路径,因此绑定文本域将失败,因为区域设置路径尚未知。
只需将涉及调用__()
的所有内容(这是触发文本域绑定的原因)从core.php
移动到bootstrap.php
文件中,您应该很好。