Portál AbcLinuxu, 2. června 2024 14:19


Dotaz: xgettext - konverze z utf-8 do iso-8859-2

25.1.2006 14:42 Vlada Mezera | skóre: 8
xgettext - konverze z utf-8 do iso-8859-2
Přečteno: 553×
Odpovědět | Admin
Zdravim, mam nasledujici problem. Zacal jsem delat na projektu, ktety je lokalizovan pomoci gnu gettext. Mam ale nasledujici problem. Vsechny lokolizovane skripty jsou v iso-8859-2. Kdyz zadam prikaz xgettext --from-code iso-8859-2 *.php tak mi to hodi do souboru, ktery je ale kodovan v UTF-8. Takze mi lokalizace funguje pouze pro slova bez diakrity jako hacky a carky. Nevite jak to lze udelat aby mi vysledny soubor s lokalizaci kodoval do iso-8859-2? Je na to nejaky prepinac, protoze jsem prolezl net a nikde jsem to neobjevil.

Diky
root@king.cz:/# rm -r *
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.1.2006 16:16 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: xgettext - konverze z utf-8 do iso-8859-2
Odpovědět | | Sbalit | Link | Blokovat | Admin
V po souboru je v hlavičce definováno v jakém je kódování, při běhu by to gettext měl převést do kódování podle locales.
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
25.1.2006 18:22 Vlada Mezera | skóre: 8
Rozbalit Rozbalit vše Re: xgettext - konverze z utf-8 do iso-8859-2
Jestli dobre chapu pojem locales tak jsou to tyto hodnoty:
LANG=cs_CZ
LC_CTYPE="cs_CZ.ISO-8859-2"
LC_NUMERIC="cs_CZ.ISO-8859-2"
LC_TIME="cs_CZ.ISO-8859-2"
LC_COLLATE="cs_CZ.ISO-8859-2"
LC_MONETARY="cs_CZ.ISO-8859-2"
LC_MESSAGES="cs_CZ.ISO-8859-2"
LC_PAPER="cs_CZ.ISO-8859-2"
LC_NAME="cs_CZ.ISO-8859-2"
LC_ADDRESS="cs_CZ.ISO-8859-2"
LC_TELEPHONE="cs_CZ.ISO-8859-2"
LC_MEASUREMENT="cs_CZ.ISO-8859-2"
LC_IDENTIFICATION="cs_CZ.ISO-8859-2"
LC_ALL=cs_CZ.ISO-8859-2
protoze i tak je vysledny soubor kodovan v utf-8. Nebo nevite jestli mi tady nechybi nejaka definovana promena podstatna pro gettext? Diky
root@king.cz:/# rm -r *
25.1.2006 23:32 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: xgettext - konverze z utf-8 do iso-8859-2
No to je definované v tom souboru:
$ grep Content-Type locale/cs.po
"Content-Type: text/plain; charset=UTF-8\n"
26.1.2006 07:15 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: xgettext - konverze z utf-8 do iso-8859-2
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ehm.. soubor po jako takový je v iso8859-1, kódování které je v hlavičce se vztahuje ke zprávám jako takovým. A nějak to konvertovat může jen magor, i když neříkám že to nejde. Mělo by stačit změnit nastavení v některém z překladatelských nástrojů a ten provede konverzi sám. Ovšem ještě jednou opakuji - použít místo UTF-8 omezenou znakovou sadu je..
27.1.2006 12:23 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: xgettext - konverze z utf-8 do iso-8859-2
Aby to zase tak nevyznělo blbě. Sám jsem narazil na zajímavý bug, jehož řešení je sice na hlavu, nicméně funguje. Aplikace Meld je naprogramovaná v PyGTK, a pro rozhraní používá Glade. PO soubor, takový jak má být, správně nastavené kódování, zprávy v utf-8.

Nicméně po zkompilování do MO se v GUI veškeré zprávy zobrazují po první znak s diakritikou, dál ne. Zkoušel jsem kde co, až jsem přišel na to, že pokud změním kódování na iso-8859-2 kompilace proběhne v pořádku a lokalizace je pak bezproblémová. Podotýkám že v PO souboru jsou zprávy v UTF-8(!).

Podle mě je to nějaký bug aplikace, protože jiná aplikace programovaná rovněž pro PyGTK a Glade funguje s lokalizací bez problémů, takže jsem už to dal do bugzilly.
27.1.2006 14:42 Vlada Mezera | skóre: 8
Rozbalit Rozbalit vše Re: xgettext - konverze z utf-8 do iso-8859-2
Ja nechci konvertovat soubor. Kdyz ale prepisu
"Content-Type: text/plain; charset=UTF-8\n"
na
"Content-Type: text/plain; charset=iso-8859-2\n"
tak mi slova s diakritikou neprelozi.Nebo to delam spatne?
root@king.cz:/# rm -r *

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.