Multijazyčný formulár – poradie jazykov
- Čamo
- Člen | 798
Zdravím, potrebujem vo formulári zobraziť polia pre jednotlivé jazyky ale potrebujem ich mať v určitom poradí. Je nejaké možnosť ako toto poradie dostať z Kdyby translatora? Chcel som to urobiť cez $translator->getAvailableLocales() ale to vracia abecedné poradie.
$langs = $this->translator->getAvailableLocales();
$form->addGroup();
$names = $form->addContainer( 'names', 'Názov kategórie' );
foreach ( $langs as $lang )
{
$lang = strtolower(explode('_', $lang)[0]);
$names->addText( $lang, 'Názov ' . $lang );
}
Ako to nejako elegantne vyriešiť? Myslel som že getAvailableLocales sa bude riadiť poradím z whitelistu v neone ale nieje to tak..
Editoval Čamo (25. 3. 2020 21:05)
- Ondřej Kubíček
- Člen | 494
prostě a jednoduše si to pole $langs
budeš muset seřadit
sám jak potřebuješ
- Toanir
- Člen | 57
Imho jakási LanguageService je jedním z čistých řešení, když se na kód díváš z pohledu „kdo má co dělat?“: Translator by se měl starat pouze o překládání řetězců a o věci úzce spjatý s touhle problematikou. Metodu getAvailableLocales bych chápal jako aktuálně dostupné jazyky pro překlad.
V aplikacích se často může řešit, jesti je jazyk aktivní či ne a takový rozlišení by už Translator znát neměl, ten jen od někoho dostane výčet dostupných jazyků a tím někým by právě mohla být ta jakási LanguageService (anebo jí pozměněný konfigurační soubor) a v tý servise si s pořadím můžeš kouzlit cokoliv co uznáš za vhodný.