proč gettext ingnoruje změnu jazyka

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ragnar
Člen | 13
+
0
-

Používám GettextExtractor a všechno běží jak má… aplikace je defaultně napsána v angličtině a existuje česky a slovenský překlad. Je to nastaveno tak, aby se jazyk volil podle prohlížeče. Aplikace se mi tedy podle gettextu správně přeloží do češtiny. Avšak jsem chrome přepnul do angličtiny a gettext nereaguje (přestože mi aplikace angličtinu správně nastaví). Dokonce jsem ručně nastavil putenv(„LANG=en“);setlocale(LC_ALL, „en“); ale aplikace je pořád v češtině a já nevím, proč mě gettext ignoruje…

Měl jsem za to, že když je aplikace napsána v angličtině a gettext se nastaví na angličtinu a tím, že to nenajde soubor s překladem to použije normálně texty ze zdrojáku… proč to pořád tedy vidím v češtině?

raia
Člen | 25
+
0
-

Ragnar napsal(a):

Používám GettextExtractor a všechno běží jak má… aplikace je defaultně napsána v angličtině a existuje česky a slovenský překlad. Je to nastaveno tak, aby se jazyk volil podle prohlížeče. Aplikace se mi tedy podle gettextu správně přeloží do češtiny. Avšak jsem chrome přepnul do angličtiny a gettext nereaguje (přestože mi aplikace angličtinu správně nastaví). Dokonce jsem ručně nastavil putenv(„LANG=en“);setlocale(LC_ALL, „en“); ale aplikace je pořád v češtině a já nevím, proč mě gettext ignoruje…

Měl jsem za to, že když je aplikace napsána v angličtině a gettext se nastaví na angličtinu a tím, že to nenajde soubor s překladem to použije normálně texty ze zdrojáku… proč to pořád tedy vidím v češtině?

Server ti běží na WinXP, že?

Ragnar
Člen | 13
+
0
-

na windows 7, WampServer, PHP 5.3

iguana007
Člen | 970
+
0
-

A nepřepisuješ si náhodou někde to nastavení (to, jak tam ručně přepisuješ ty hodnoty)? Mě to funguje v pohodě, ovšem nemám detekci podle browseru, ale podle domény – na lokálu si měním proměnnou podle toho co chci vidět.

Ragnar
Člen | 13
+
0
-

ne, neprepisuju, prohledal jsem projekt a nic tam nemam dvojite a jsem si jisty ze to prepisuji na spravnem miste

Ragnar
Člen | 13
+
0
-

zase jsem se k tomu vrátil a pořád to nefunguje…

chtěl bych se podělit o nějaké nové poznatky a teorie

když zakomentuju putenv, setlocale, textdomain a bind_textdomain_codeset tak mi to pořád překládá do češtiny až dokud nezakomentuju bindtextdomain a nerestartuji server.

Myslím si, že to na Windows používá pořád češtinu, protože si apache vytahuje prostředí přímo s Windows, což se dá ověřit zavoláním echo setlocale(LC_ALL, ""); což vrátí Czech_Czech Republic.1250, ale echo setlocale(LC_ALL, „Slovak_Slovakia“); sice úspěšně vrátí Slovak_Slovakia.1250, ale web se pořád zobrazuje v češtině, přestože tam slovenský překlad je vedle českého.

Nevím, jak server donutit aby se dokázal mezi jazyky přepínat. Angličtina jako defaultní jazyk mi vyskočí, až když zakomentuju i bindtextdomain a restartuju server.

Do putenv mi jde za LANG i LANGUAGE nastavit jakykoli retezec tak tezko rict co tam ma na windows spravne vubec byt.

Moje konfigurace je Windows 7, Apache 2.2.11, PHP 5.3.0

Už jsem začal stahovat ubuntu tak to otestuju ještě tam

repli2dev
Člen | 57
+
0
-

„Lehké“ problémové chování Apache a PHP. Při některých nastaveních je nativní gettext nepoužitelný, protože změna .mo souboru se projeví pro restartu serveru.

Řešením je gettextu se vyhnout, nebo použít implementaci, která parsuje gettext sama. Jedna taková je v addonech a při použití cache má i malý dopad na výkon.

Ragnar
Člen | 13
+
0
-

problém se změnou mo a restarování serveru se tohoto netýká a jsem si toho vědom. Gettext addon pro nette používáme. Podařilo se mi vše rozběhnout úspěšně v ubuntu (přišlo mi zajímavé, že bylo potřeba přímo do linuxu doinstalovat všechny jazyky, do kterých překládám, abych měl dostupné příslušné locale).

Avšak Windows mě stále ignorují a stále nevím proč, česká windows zobrazují českou verzi našeho systému a slovenská slovenskou, ale nelze mezi nimi přepínat. Jde o něco specifického pro windows. Kolega dokonce přepínal windows v ovládacích panelech na angličtinu (a restartoval apache), ale pořád to měl ve slovenštině.

Někde jsem se dočetl, že gettext může mít na windows problém s klasickou instalací php a že je potřeba to instalovat jako víceprocesorové cgi…

Až tyhle problémy s gettextem vyřeším tak o tom někde napíšu mocné pojednání :D

repli2dev
Člen | 57
+
0
-

Odpověď mi přijde nelogická, protože pokud by jste opravdu používali https://componette.org/search/?… pak by jste nemuseli vůbec nikde pracovat s locales.

Patrik Votoček
Člen | 2221
+
0
-

Ehm? Tohle je víc než podivné protože pokud addonem myslíme to samé tak ten nemá s nativní implementací gettextu v PHP vůbec nic společného a dokonce toto rozšíření nepotřebuje nainstalované. Všechno co je výše popsáni se tohoto addonu netýká protože to nevyužívá i tato nastavení ignoruje. (Právě kvůli výše zmíněným problémům s nutností restartovat Apache)

Ragnar
Člen | 13
+
0
-

Ne, používáme toto rozšíření http://charlie.cz/…t-extractor/, které využívá nativní gettext php. Doplněk, který ukazujete vy není doporučen do produkce, proto jsme se pro něj nerozhodli.

repli2dev
Člen | 57
+
0
-

Do produkce nemůže být ani určena nativní podpora gettextu, když očividně vidíme, že nefunguje – potom radši použijeme něco co aspoň funguje ;-)

Btw. to co jste poslal za odkaz je link na Extractor řetězců, nikoliv samotné provedení překladu.