Avatar
Jan Demel
Redaktor
Avatar
Jan Demel:

Ahoj. Řeším takovou věc. Mám aplikaci, která obsahuje model, který vytahuje z databáze data a posílá do presenteru. Celá stránka je dvojjazyčná a chci, aby se data vytahovaly v závislosti na zvoleném jazyku. Napadlo mě model rozdělit na dva (CzPageConten­tManager, EnPageContentMa­nager) a v base presenteru vytvářet jejich instance v závislosti na jazyku. To je ale blbost... Napadá někoho lepší řešení?

Odpovědět  -1 16.9.2015 10:56
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):

Zdar, napadá mě lepší řešení - model neměnit. Je problém v tom, poslat do modelu info o jazyku parametrem?
Pokud děláš v Nette, zkus se podívat na Kdyby\Translation

 
Nahoru Odpovědět  +2 16.9.2015 11:45
Avatar
Jan Demel
Redaktor
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:

To problém není. Ale nechci, aby potom v každé metodě byla podmínka.

Nahoru Odpovědět 16.9.2015 20:30
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):

To by bylo pak potřeba vidět, jak ten model vypadá. Určitě to jde udělat i bez té podmínky navíc.
Můžeš ten kód alespoň nastínit?

 
Nahoru Odpovědět 16.9.2015 20:32
Avatar
Jan Demel
Redaktor
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:

Na tom modelu není nic složitého. Jsou tam funkce jako getNews(), getComments(), getPageContent() a podobně. Kdyby\Translation používám, jenomže ten je přece jenom na statické texty, ne?

Nahoru Odpovědět 17.9.2015 7:09
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):

Jen takový dotaz - jak chceš překládat texty, jako jsou komentáře? Až tolik proměnlivé texty snad normálně ani přeložit nejde :D
Kdyby\Translation ti umožňuje mít v textech proměnné, nemusí to být pro úplně statické texty, tzn. když v souboru budeš mít třeba

usersRegistered: "There are %num% users registered on this website"

pak to snadno přeložíš

$num = $model->getUsersCount();
$translator->translate("usersRegistered", NULL, array("num" => $num));

Název toho souboru pak můžeš složit, když máš informaci o tom jazyku.
Pokud bys měl texty v databázi, s největší pravděpodobností bys tam měl sloupec 'language' a model by automaticky tahal texty podle tohoto sloupce.

Editováno 17.9.2015 7:26
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 17.9.2015 7:25
Avatar
shaman
Člen
Avatar
Odpovídá na Jan Demel
shaman:

Keby som ja chcel prekladat, tak by som chcel mat jednoduche riesenie. Nieco ako

Translate::word("Nejaka fraza", "sk");

Ak by som neudal druhy parameter "sk", tak by defaultoval k nejakej hodnote. Tato staticka funkcia word by mala vo vnutri logiku, ktora by na zaklade druheho parametra ("sk") volala spravnu classu, napr Language_sk("nejaka fraza") alebo defaultovala k Language_en("ne­jaka_fraza");

Z toho mi vyplyva ze by som potreboval factory pattern vo vnutri Translate::word funkcie. A tiez zopar factory tried ktore by prekladali do ineho jazyka (Language_sk, Language_en, ...)

Alebo zabudni na to, to je len narychlo vymyslene riesenie. :) Pekny den prajem.

Nahoru Odpovědět  +1 17.9.2015 22:29
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.