【问题标题】:CakePHP Translation array format not as expectedCakePHP 翻译数组格式不符合预期
【发布时间】:2010-06-16 12:23:22
【问题描述】:

我使用 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
                )

        )....

我的期望是错误的,还是这是一个错误?

【问题讨论】:

    标签: php translation behavior cakephp-1.3 translate


    【解决方案1】:

    在 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];
     }
    

    【讨论】:

      【解决方案2】:

      您能否发布您的数据查找调用(可能还有一些超出该调用的行)?

      通常,翻译行为是这样的:

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

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

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

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

      请检查您的 i18n 表是否正确保存了区域设置(de_de,不是 de-de!)。

      【讨论】: