如何检查推进物是否有i18n记录?
-
05-07-2019 - |
题
我正在使用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的默认语言 - 回退/
其他提示
您从 getTranslation($ language)
返回的 i18n
记录可以使用 isNew()
进行测试,这将告诉您是否Propel刚刚编写了(true)
,或者它来自数据库(false)
。
不隶属于 StackOverflow