Autor | Zpráva | ||
---|---|---|---|
slovakCZ Profil |
#1 · Zasláno: 13. 12. 2010, 16:32:13
Ahoj,
mám takový dotaz, chci na webu udělat fci více jazyků ale nyní řeším, jak přeložit statické informace (tlačítko Odeslat u formuláře, chybové hlášky atd atd).. Nerad bych používal databázi, celkem se mi líbí řešení pomocí polí, ale nevím si radu, jak do chybové hlášky předat nějakou proměnnou. Ukáži na ukázce: cz_translate.php <?php $lang = array( "send" => "Odešli", "delete" => "Smaž"); ?> inde.php <?php include $language; echo $lang["send"]; ?> Na stránku mi to vypíše: Odešli. když includuju soubor en_language.php kde mám jiné překlady tak mi to na stránku vypíše Sent.. což je myslím jasné.. ovšem rád bych, aby to vypisovalo například: Odešli formulář REGISTRACE. Myslel jsem, že by to mohlo fungovat nějak tak, že bych zavolal $lang["wrong_email"]($param1, $param2); //samozrejme nesmyslny zapis, jde mi o to abych mohl danemu prekladu predat nejake promenne ve kterych bude text a ty se pote v chybove hlasce zobrazili tam kde maji a poté by se volalo něco takového: $lang = array( "wrong_email" => "Pole %param1 u formuláře %param2 bylo zadáno chybně"); Děkuji za rady Lze udělat něco takového? V případě, že ano, můžete mě "nakopnout" nebo rovnou opukázat prosím na nějaké řešení? Rád bych |
||
Neas Profil |
#2 · Zasláno: 13. 12. 2010, 16:46:07 · Upravil/a: Neas
nejsem si jist, jestli jsem správně pochopil dotaz, chceš něco takového?
"wrong_email" => "Pole " . $param1 . " u formuláře " . $param2 . "bylo zadáno chybně"); tečka = spojování řetězců, podobně jako v jiných jazycích se často objevuje "+". |
||
Tomashekk Profil |
#3 · Zasláno: 13. 12. 2010, 17:42:36 · Upravil/a: Tomashekk
slovakCZ:
já to řeším nějak takto jazyk.php <? define("send","Odeslat"); define("reply","odpovědět"); ....... ?> a po té si to např. v index.php vypisuju takto <? echo send; echo reply; ?> a poté spojovat řetězce jak píše Neas |
||
slovakCZ Profil |
#4 · Zasláno: 13. 12. 2010, 18:37:01
Ok dekuji chlapi.. je videt ze premyslim moc slozite a tak trivialni reseni me ani nenapadlo... :)
|
||
Tori Profil |
#5 · Zasláno: 13. 12. 2010, 19:19:09
A co gettext? Vizte článek na Intervalu. Je i varianta php-gettext, kterou není potřeba kompilovat s php, dá se použít rovnou.
|
||
slovakCZ Profil |
#6 · Zasláno: 13. 12. 2010, 23:08:18
Neas:
ted jsem si uvedomil, asi to neni to co jsem chtel... jak propasuju pozadovane promenne $param1 a $param2 do pole? jazyk.php $lg = array( "send" => "Odešli $form", "delete" => "Smaž" ); index.php <?php include "jazyk.php"; $form = "Testovaci nazev formulare"; echo $lg["send"]; // vypise jen Odešli ?> |
||
slovakCZ Profil |
#7 · Zasláno: 13. 12. 2010, 23:50:28
Tori:
tak jsem si stahl php-gettext a vzpada to celkem dobre.. funguje to ale neni mi moc jasne, jak si pridam nove preklady do soubory *.po... editor pro editaci po souboru mam, ovsem neumoznuje mi pridavat nove "radky prekladu" |
||
blaaablaaa Profil |
#8 · Zasláno: 14. 12. 2010, 08:43:22
slovakCZ:
Nove vyrazy si vytahnes automaticky ze zdrojovych souboru. |
||
slovakCZ Profil |
#9 · Zasláno: 14. 12. 2010, 23:09:39 · Upravil/a: slovakCZ
blaaablaaa:
TOmu moc nerozumim, co mam chapat jako zdrojovy soubor?... mam napr soubor index.php, kam jsem pridal: echo T_("Výběr jazyka"); Dekuji za radu.. Tom //EDIT: aha, tak uz to vidim, je tam tlacitko Aktualizovat katlaog - synchronizuje se zdrojovymi kody.. ovsem mam ho zasedle a nemuzu na nej kliknout.. asi nejdrive musim zadat cestu k php souborum, snad to nekde najdu, s tim bych si uz mel poradit. ;) |
||
slovakCZ Profil |
#10 · Zasláno: 14. 12. 2010, 23:50:37
tak nastavene to mam, soubor po se mi aktualizuje, ovsem neni mi jasne nastaveni pluralu... pro priklad mam takovyto php kod: (z demo souboru):
print sprintf( T_ngettext("%d pig went to the marketa\n","%d pigs went to the market\n", $number), $number ); a v Poedit potrebuji nastavit, aby to bralo v uvahu i plural tohoto prekladu a to mi nejak nefunguje. Jak pro takovyto vyraz nastavit pravidlo pluralu prosim? |
||
joe Profil |
#11 · Zasláno: 14. 12. 2010, 23:56:10
Udělal bych to tak nějak, jak jsi navrhoval původně. Bez použití gettextu, nepoužívám to.
Ale s tím rozdílem, že bych to dal do třídy, třeba nějak takto: class Language_cs { private $translates = array( 'wrong_email' => 'Pole %p u formuláře %p bylo zadáno chybně', ... ); public function get($value) { if(isset($translates[$value]) { // tady bych zkontroloval, jestli překlad má v sobě nějaký výskyt %p, počet výskytů spočítám a porovnám s počtem argumentů této metody, co vrací funkce func_num_args(), samotné argumenty pak funkce func_get_args() a pak už jenom atributy zaměnit postupně za %p } new ..Exception(); } } |
||
slovakCZ Profil |
#12 · Zasláno: 15. 12. 2010, 00:03:33
jee, me ten gettext zacal fungovat.. i pluraly jdou v poradku :) kazdopadne dekuj za tip na jine reseni, urcite se bude hodit kdyz nebudu chtit vyuzit gettext.. ted jsem ovsem konecne prisel na to jak gettext nastavit a vypada to, ze to je slusna pomucka, uvidim jestli nenajdu nejaky problem zase ;)
|
||
joe Profil |
#13 · Zasláno: 15. 12. 2010, 00:12:16
Ale gettext je určitě lepší, já to spíš mám přes vlastní řešení s databází nebo v jednotlivých šablonách, které se pro daný jazyk mohou trochu lišit a kde jen změna textu nestačí... tak proto jsem to ještě nikdy nepoužil.
|
||
slovakCZ Profil |
#14 · Zasláno: 15. 12. 2010, 00:15:11
jo tak, ok... no kazdopadne pro nejake male stranky je asi zbytecne pridavat cely gettext, tve reseni bude mozna jednoduzsi a rychlejsi... jak jsem na to koukal, tak to vypada ze to bude fungovat hezky, skript si ukladam a snad se jednou bude hodit ;) Dekuji za ochotu!!!
|
||
Časová prodleva: 13 let
|
0