Como você verificar e ver se um objeto de propulsão tem um registro i18n?
-
05-07-2019 - |
Pergunta
Eu estou usando symfony e Propel, e eu estou tentando chamar uma cultura específica em um objeto e saída de alguns campos desse objeto para a tela em que a cultura específica. No entanto, se o registro de banco de dados mapeado do objeto não tiver esses campos em que a cultura específica, eu gostaria que o padrão para a cultura de base (neste caso, en_US)
Estou fazendo isso como este:
$currentLesson = $currentLesson->getCurrentLessonsI18n($lessonCulture);
Mas quando eu saída como esta ??p>
$currentLesson->getTitle();
Ele produz uma string vazia se não houver nenhum registro cultura para ele. A minha pergunta é, existe uma maneira de fazer um padrão objeto para um culuture específico, se o que eu especificar não estiver disponível, ou há um método para ver se um objeto específico tem um registro cultura i18n?
algo como isto:
if($currentLesson->cultureExists($lessonCulture) $currentLesson = $currentLesson->getCurrentLessonsI18n($lessonCulture);
ou
sfConfig::setPropelDefaultCulture("en_US");
Solução
Você terá que si symfony de substituição para torná-lo padrão para outro idioma. Há uma solução de trabalho bom aqui http: //www.codemassacre .com / 2008/03/10 / symfony-default-language-fallback /
Outras dicas
O registro i18n
você voltar de getTranslation($language)
pode ser testado com isNew()
, que vai dizer se Propel acaba tornou-se (true)
ou se ele veio do (false)
banco de dados.