Multijazyčný formulár – poradie jazykov

Čamo
Člen | 786
+
0
-

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
+
0
-

prostě a jednoduše si to pole $langs budeš muset seřadit sám jak potřebuješ

Čamo
Člen | 786
+
0
-

V každom formulári? Nedá sa nejako doplniť Translator? Podľa mňa by nebolo odveci keby to Translator radil podľa whitelistu. Ideálne by bolo keby existovala metoda getWhitelist ale nieje.

Editoval Čamo (25. 3. 2020 22:35)

Čamo
Člen | 786
+
0
-

Tak asi jedine nejakú servisu ktorá si z neonu zoberie langs v správnom poradí a tu si všade injektovať…

Toanir
Člen | 57
+
0
-

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ý.