Portál AbcLinuxu, 10. května 2025 05:31

Dotaz: PHP - Vícejazyčný web

28.8.2014 13:02 Arnošt
PHP - Vícejazyčný web
Přečteno: 694×
Odpovědět | Admin
Ahoj, chtěl bych se zeptat, jestli dělat vícejazyčný web přes define nebo proměnné či pole? Má někdo zkušenosti? Děkuji za radu.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 28.8.2014 13:17 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP - Vícejazyčný web
Odpovědět | | Sbalit | Link | Blokovat | Admin
gettext pro program, s daty je to složitější.
Hello world ! Segmentation fault (core dumped)
28.8.2014 13:43 Arnošt
Rozbalit Rozbalit vše Re: PHP - Vícejazyčný web
Ahoj, nevím zda jsi pochopil můj dotaz. Marně přemýšlím, jaký užitek by byl při použití funkce gettext :-(
28.8.2014 13:59 Sten
Rozbalit Rozbalit vše Re: PHP - Vícejazyčný web
Pokud to bude dělané přes define nebo pole (tj. evidentně data v kódu), lze to samé mnohem lépe udělat přes gettext
Řešení 1× (buff)
Josef Kufner avatar 28.8.2014 16:28 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP - Vícejazyčný web
Uděláš:
echo _('Hello world.');
A vypíše to "Ahoj světe."

A když uděláš:
printf(ngettext('%d item', '%d items', $n), $n);
Tak to podle hodnoty v $n vypíše "1 položka", "2 položky", nebo "5 položek". A když budeš překládat do jazyka, který má ještě více plurálních forem (např. slovinština), nebo je má jinak (každý druhý jazyk), tak to bude fungovat také.

Gettext ti navíc umí automaticky vyexportovat řetězce určené k překladu (xgettext) a k editaci PO souborů jsou celkem pěkné nástroje.

Btw, vyšel tu o tom článek.
Hello world ! Segmentation fault (core dumped)
28.8.2014 14:11 Sten
Rozbalit Rozbalit vše Re: PHP - Vícejazyčný web
Odpovědět | | Sbalit | Link | Blokovat | Admin
To záleží, odkud se tahají ty zobrazovaná texty, kolik jazyků to má podporovat a jestli (a jak komplexní) to má umět fallback. Pokud to bude mít předdefinované jazyky, fallback nepotřebujete a texty budou v databázi, tak stačí přidat další sloupec, který bude identifikovat jazyk (nebo ještě lépe použít jazyk a identifikátor textu jako cizí klíče). Pokud chcete fallback, lze pořád používat databázi, akorát se bude dělat OUTER JOIN (případně několik u komplexního fallbacku). Naopak pokud máte texty umístěné pouze v šablonách a nepotřebujete dynamické překlady, je vhodný gettext.

define ani pole nejsou vhodná řešení.
28.8.2014 16:02 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP - Vícejazyčný web
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vícejazyčnost řeším v šablonách, jazyk mám jako parametr.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.