0

我正在使用 symfony 和推进,我试图在一个对象上调用特定的文化并将该对象的某些字段输出到该特定文化的屏幕上。但是,如果对象的映射数据库记录在该特定文化中没有这些字段,我希望它默认为基本文化(在本例中为 en_US)

我这样做是这样的:

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

但是当我输出这样的

$currentLesson->getTitle();

如果没有文化记录,它会输出一个空字符串。我的问题是,如果我指定的对象不可用,有没有办法让对象默认为特定的文化,或者有没有办法查看特定对象是否有文化 i18n 记录?

像这样的东西:

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

或者

sfConfig::setPropelDefaultCulture("en_US");
4

2 回答 2

1

您将不得不覆盖 symfony 本身以使其默认为另一种语言。这里有一个很好的工作解决方案http://www.codemassacre.com/2008/03/10/symfony-default-language-fallback/

于 2008-11-04T22:47:17.827 回答
0

可以测试i18n您从中获取的记录,这将告诉您 Propel 是否刚刚制作了它,或者它是否来自数据库。getTranslation($language)isNew()(true)(false)

于 2012-01-09T14:47:35.593 回答