Вопрос

Я использую Symfony и Propel и пытаюсь вызвать определенную культуру для объекта и вывести некоторые поля этого объекта на экран в этой конкретной культуре.Однако, если сопоставленная запись базы данных объекта не имеет этих полей в этой конкретной культуре, я бы хотел, чтобы по умолчанию использовалась базовая культура (в данном случае en_US).

Я делаю это так:

$currentLesson = $currentLesson->getCurrentLessonsI18n($lessonCulture);

Но когда я вывожу такое, как это

$currentLesson->getTitle();

Он выводит пустую строку, если для нее нет записи о культуре.Мой вопрос: есть ли способ сделать объект по умолчанию для определенной культуры, если тот, который я указываю, недоступен, или есть ли способ узнать, имеет ли конкретный объект запись культуры i18n?

что-то вроде этого:

if($currentLesson->cultureExists($lessonCulture) $currentLesson = $currentLesson->getCurrentLessonsI18n($lessonCulture);

или

sfConfig::setPropelDefaultCulture("en_US");
Это было полезно?

Решение

Вам придется перезаписать саму Symfony, чтобы по умолчанию использовать другой язык.Здесь есть хорошее рабочее решение http://www.codemassacre.com/2008/03/10/symfony-default-language-fallback/

Другие советы

В i18n запись, из которой ты вернешься getTranslation($language) можно протестировать с помощью isNew(), это скажет вам, сделал ли Propel это только что (true) или если оно пришло из базы данных (false).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top