Domanda

Sto usando symfony e propel e sto provando a invocare una cultura specifica su un oggetto e ad emettere alcuni campi di quell'oggetto sullo schermo in quella cultura specifica. Tuttavia, se il record del database mappato dell'oggetto non ha quei campi in quella cultura specifica, mi piacerebbe che l'impostazione predefinita fosse la cultura di base (in questo caso, en_US)

Lo sto facendo in questo modo:

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

Ma quando output come questo

$currentLesson->getTitle();

Emette una stringa vuota se non ci sono record di cultura per essa. La mia domanda è: c'è un modo per rendere un oggetto predefinito a una cultura specifica se quello che ho specificato non è disponibile, o c'è un metodo per vedere se un oggetto specifico ha un record i18n di cultura?

qualcosa del genere:

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

o

sfConfig::setPropelDefaultCulture("en_US");
È stato utile?

Soluzione

Dovrai sovrascrivere symfony stesso per renderlo predefinito in un'altra lingua. C'è una buona soluzione funzionante qui http: //www.codemassacre .com / 2008/03/10 / symfony-default-lingua-fallback /

Altri suggerimenti

Il record i18n che ottieni da getTranslation ($ language) può essere testato con isNew () , che ti dirà se Propel ha appena creato (true) o se proviene dal database (false) .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top