Question

J'utilise symfony et propel, et j'essaie d'invoquer une culture spécifique sur un objet et d'afficher certains champs de cet objet à l'écran dans cette culture spécifique. Cependant, si l'enregistrement de la base de données mappée de l'objet ne contient pas ces champs dans cette culture spécifique, j'aimerais qu'il soit défini par défaut sur la culture de base (dans ce cas, en_US)

Je le fais comme ça:

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

Mais quand je produis un tel résultat

$currentLesson->getTitle();

Il génère une chaîne vide s'il n'y a pas d'enregistrement de culture pour cela. Ma question est la suivante: existe-t-il un moyen de définir un objet par défaut sur une culture spécifique si celle que je spécifie n’est pas disponible, ou existe-t-il une méthode permettant de voir si un objet spécifique possède un enregistrement i18n de culture?

quelque chose comme ceci:

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

ou

sfConfig::setPropelDefaultCulture("en_US");
Était-ce utile?

La solution

Vous devrez écraser symfony pour le rendre par défaut dans une autre langue. Voici une bonne solution de travail http: //www.codemassacre .com / 2008/03/10 / symfony-default-language-fallback /

Autres conseils

L'enregistrement i18n que vous récupérez de getTranslation ($ language) peut être testé avec isNew () , qui vous indiquera si Propel vient de le créer (true) ou s'il provient de la base de données (false) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top