Zadejte hledaný výraz...

Sposob implementacie viacjazycnej stranky – odporucania

it47
verified
rating uzivatele
27. 5. 2014 15:28:04
Ahojte,
robim jeden jednoduchy web a bude vo viacerych svetovych jazykoch. Rozmyslam, ako to spravit co najlepsie, teda hlavne rozmyslam, ako zapisovat jednotlive verzie zahranicnych textov.
Mam v hlave 2 napady:
1.) PHP - cez konstatny: t.j. kazdy uceleny vyraz si dam do konstanty a vsetky konstaty dam do jedneho subora, alebo do viacerych suborov podla logickych modulov
2.) PHP - cez asociativne pole, kde kazdy kluc bude v podstate ako hodnota konstanty.
Ide mi aj o efektivitu (pamatova zlozitost), ale zaroven aj o prehladnost. Ked budem mat vytvorenych 150 konstant, nebude to vela, ako kebyze mam jedno velke asociativne pole?
Ako by ste to prosim vy riesili?
Vopred dakujem velmi pekne.
it47
27. 5. 2014 15:28:04
https://webtrh.cz/diskuse/sposob-implementacie-viacjazycnej-stranky-odporucania#reply1027060
crs
verified
rating uzivatele
(1 hodnocení)
27. 5. 2014 16:03:33
Chápu správně, že vícejazyčné mají být ne celé stránky ale jen krátké hlášky (např. "nalezeno X záznamů" atp)?
Já osobně považuji za velmi elegantní řešení:
* asociativní pole, kde klíč je daný text v defaultním jazyce (pak se dosadí klíč) a/nebo v hodnotě prvku je překlad (pak se dosadí hodnota)
* nadefinování tohoto pole pro každý jazyk - každý v jednom souboru + include tohoto souboru podle kódu jazyka
* triviální funkce, která dosazí buď hodnotu nebo klíč tohoto pole
27. 5. 2014 16:03:33
https://webtrh.cz/diskuse/sposob-implementacie-viacjazycnej-stranky-odporucania#reply1027059
it47
verified
rating uzivatele
27. 5. 2014 16:13:46
Napsal crs;1092337
Chápu správně, že vícejazyčné mají být ne celé stránky ale jen krátké hlášky (např. "nalezeno X záznamů" atp)?
Já osobně považuji za velmi elegantní řešení:
* asociativní pole, kde klíč je daný text v defaultním jazyce (pak se dosadí klíč) a/nebo v hodnotě prvku je překlad (pak se dosadí hodnota)
* nadefinování tohoto pole pro každý jazyk - každý v jednom souboru + include tohoto souboru podle kódu jazyka
* triviální funkce, která dosazí buď hodnotu nebo klíč tohoto pole
Ide o weby s roznymi koncovkami, .com, .de, .es, takze na webe sa preklada uplne vsetko. Takze ziadne funkcie netreba.
Tvoje riesenie, je moj druhy bod. A nie je elegantnejsie pouzit konstanty? Tam je hned vidiet, ze sa jedna o preklad, ale zase to mozu byt pamatovo neefektivnejsie.
Co si myslite?
27. 5. 2014 16:13:46
https://webtrh.cz/diskuse/sposob-implementacie-viacjazycnej-stranky-odporucania#reply1027058
Podívejte se, jak to řeší moduly Zend I18n a Symfony Translations, nebo jeden z nich rovnou použijte.
Několik kamenů úrazu, které za vás výše odkázané moduly řeší:
  • Pokud potřebujete v textu použít proměnnou, nedělte text na části, ale použijte placeholdery. Proměnná se může v různých jazycích vyskytovat na různých místech.
  • Různé jazyky řeší množná čísla různě. Potřebujete v překladech akceptovat různé typy plurálů. Například čeština používá několik variant podle číslovky.
    21 dítě 2, 22 děti 5, 11, 12 dětí
  • Kromě samotných textů potřebujete lokalizovat i například formát dat, číslovek a cen, nebo i směr jazyka.
  • Pokud překlad neexistuje, potřebujete použít text ze základního jazyka.
Pokud budete psát vlastní řešení, je podle mě jedno, jestli zvolíte konstanty nebo asociativní pole.
Stejně byste k překladům měl přistupovat přes nějaké rozhraní, tj. nějakou třídu.
Nedoporučuji jako klíče používat samotnou frázi ze základního (nejspíš anglického) jazyka, protože texty na stránkách se mění a:
  • Klíče by se vám rozešly s textem (pokud byste změnili fráze, ale zachovaly klíče).
  • Nebo byste načítali nepoužívané, staré klíče (pokud byste při každé změně vytvořili nový klíč).
27. 5. 2014 16:17:42
https://webtrh.cz/diskuse/sposob-implementacie-viacjazycnej-stranky-odporucania#reply1027057
crs
verified
rating uzivatele
(1 hodnocení)
1. 6. 2014 00:32:36
Samozřejmě, nic proti použití hotového řešení. Do okamžiku, kdy potřebuješ něco, co cizí řešení nenabízí. To se z pomůcky stane přítěž, je potřeba hledat, doimplementovávat, hrabat se v tom a snažit se to nerozkopat. Na druhou stranu, napsat si vlastní nemusí být vůbec složité ani časově náročné a budeš si jist, že zahrnuje vše, co chceš, a žádný zbytečný kód, který nepotřebuješ.
Z toho, co uvedl Martin:
  • Pro použití proměnných v překladu se nic nemění, pouze překlad použiješ jako argument ve funkci sprintf() a spol. Dokonce si lze tvou funkci pro překlad přepsat tak, aby akceptovala dodatečné proměnné jako další parametry.
  • Tvary pro různé plurály lze definovat jako pole těchto hodnot. Pokud se nemýlím, dělá to tak např. Adminer.
  • Formáty dat, cen atd. lze definovat pro každý jazyk zvlášť a pak je používat ve funkcích, která tato data formátují.
K použití frází jako klíč: ano, má to své nevýhody, které popsal Martin. Pro změnu textové konstanty je třeba ji projít a nahradit ve všech souborech projektu (což naštěstí umí všechny z lepších programátorských editorů). Použití (definovaných, číselných) konstant má zase svoje nevýhody. Např. v tom, že prostě a jednoduše jde o více psaní a kódu (více prostoru, který se musí procházet, kontrolovat a udržovat konzistentní při úpravách). Podle mě jde o méně elegantní řešení, protože se zde jeden elementární syntaktický prvek zaměňuje za jiný. Navíc, potřeba změny překladů se nemusí vyhnout ani řešení s definovanými konstantami a v případě chyby dochází k horší situaci, kdy se (podle implementace) zobrazí buď číslo nebo název konstanty samotné (což se mimochodem dá považovat za de facto ukázání části zdrojového kódu).
Myslím, že je fér říct, že obě řešení mají své výhody a nevýhody.
1. 6. 2014 00:32:36
https://webtrh.cz/diskuse/sposob-implementacie-viacjazycnej-stranky-odporucania#reply1027056
it47
verified
rating uzivatele
2. 6. 2014 01:20:22
Pani, dakujem vam velmi pekne, obaja ste mi velmi pomohli a kazdy z vas ma pravdu.
Ja som si nakoniec implementoval vlastnu triedu, to s tymi premennymi v preklade je super napad. Doteraz som to riesil tak, ze som to rozdeloval na viac casti, co vobec nebolo rozumne. Ako kluc pouzivam frazu, aby som v texte presne vedel o co sa jedna. Jedna sa o maly web cca. 100 fraz, takze to je uplne v pohode.
Je skvele, ze mozeme takto diskutovat a ze ste si nasli cas.
Dakujem, ste borci.
2. 6. 2014 01:20:22
https://webtrh.cz/diskuse/sposob-implementacie-viacjazycnej-stranky-odporucania#reply1027055
Pro odpověď se přihlašte.
Přihlásit