繁体   English   中英

CakePHP翻译数组格式不符合预期

[英]CakePHP Translation array format not as expected

我使用CakePHP版本1.3。 该文档说,如果我想对动态内容使用翻译行为,则无需更改视图。 问题在于已翻译的字段在那里,但为空。 转换仅像这样显示在['I18n']数组中

Array
(
    [0] => Array
        (
            [Category] => Array
                (
                    [id] => 1
                    [locale] => de_de
                    [name] => 
                )

            [I18n] => Array
                (
                    [name] => Anlagenkomponenten
                )

        )....

我期望这样的数组

Array
(
    [0] => Array
        (
            [Category] => Array
                (
                    [id] => 1
                    [locale] => de_de
                    [name] => Anlagenkomponenten
                )

            [I18n] => Array
                (
                    [name] => Anlagenkomponenten
                )

        )....

我的期望是错误的,还是错误?

您能否发布数据的查找呼叫(以及该呼叫之外的某些行)?

通常,翻译行为如下:

$this->Model->locale = 'de_de';
$result = $this->Model->find('all', array( ... );

语言环境通常是通过全局语言环境变量设置的(一种方法是将用户的语言环境存储到会话中,并在应用程序控制器中设置全局语言环境变量)。

如果未设置语言环境,并且在模型中使用$ recursive = 1设置执行read(),则Cake将为每个现有的语言环境获取所有可用的翻译。

您如何为模型设置转换行为? 如果您也从模型中发布$ actsAs-variable的翻译部分,则可能会有所帮助。

还请检查您的i18n表是否正确保存了语言环境(de_de,不是de-de!)。

在cakephp 1.2.6 ...中,在Translate Bahavior 转到第243行并注释直到245 我认为在cakephp 1.3中相同

//if (!empty($results[$key]['I18n__'.$field]['content'])) {
//    $value = $results[$key]['I18n__'.$field}['content'];
//}

然后添加代码:

if (!empty($results[$key]['I18n'][$field])) {
    $value = $results[$key]['I18n'][$field];
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM