Формат массива перевода CakePHP отличается от ожидаемого - PullRequest
0 голосов
/ 16 июня 2010

Я использую 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 голосов
/ 10 ноября 2015

не могли бы вы опубликовать ваш запрос на поиск для ваших данных (и, возможно, некоторые строки выше и после этого вызова)?

Обычно поведение перевода работает так:

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

Локаль обычно задается с помощью глобальной переменной локали (один из подходов - сохранить локаль пользователя в сеансе и установить глобальную локаль-переменную в вашем контроллере приложения).

Если языковой стандарт не задан, и в вашей модели выполняется чтение () с параметром $ recursive = 1, Cake выбирает ВСЕ доступные переводы для каждого существующего языкового стандарта.

Как вы настроили поведение перевода для вашей модели? Также может помочь, если вы разместите в вашей модели раздел перевода вашей $ actAs-переменной.

Пожалуйста, также проверьте вашу таблицу i18n, если локаль там сохранена правильно (de_de, НЕ de-de!).

0 голосов
/ 06 августа 2010

В 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];
 }
...