NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Změna modelu v závislosti na zvoleném jazyku

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:16.9.2015 10:56

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
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):16.9.2015 11:45

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
16.9.2015 11:45
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:16.9.2015 20:30

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):16.9.2015 20:32

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
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:17.9.2015 7:09

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):17.9.2015 7:25

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
17.9.2015 7:25
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
shaman
Člen
Avatar
Odpovídá na Jan Demel
shaman:17.9.2015 22:29

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