CakePHP Translation数组格式不如预期

时间:2010-06-16 12:23:22

标签: php translation behavior cakephp-1.3 translate

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

        )....

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您是否可以针对您的数据发布您的查询通话(可能会在该通话之上和之外的某些行)?

通常,翻译行为的工作原理如下:

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

语言环境通常通过全局语言环境变量设置(一种方法是将用户的语言环境存储到会话中,并在app-controller中设置全局locale-var。)

如果未设置区域设置,并且在模型中使用$ recursive = 1设置执行read(),则Cake会为现有的每个区域设置提取所有可用的翻译。

您是如何为模型设置翻译行为的?如果您从模型中发布$ actsAs变量的translate-section也可能会有所帮助。

如果区域设置保存正确,请检查您的i18n表(de_de,NOT de-de!)。