Portál AbcLinuxu, 18. července 2025 06:59


Dotaz: i18n problem - oddelovac tisicu

19.11.2006 16:19 Dušan Hokův | skóre: 43 | blog: Fedora a další...
i18n problem - oddelovac tisicu
Přečteno: 281×
Odpovědět | Admin
Zdar, hledam kde je problem v kodu gnome-commander, utils.c:478 :
#ifdef HAVE_LOCALE_H
                gchar sep = locale_information->thousands_sep[0];

                out[j] = sep!='\0' ? sep : ',';
#else
                out[j] = ',';
#endif
Co presne znamena ten radek nad #else ?

Pri nastaveni locale na cestinu se totiz misto mezery jako oddelovace tisicu ukazuje otaznik. Dale v debug vystupu v terminalu se ukazuje:
Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()
Pritom vypis locale -k LC_NUMERIC pro cestinu je:
decimal_point=","
thousands_sep=" "
grouping=3;3
numeric-decimal-point-wc=44
numeric-thousands-sep-wc=160
numeric-codeset="UTF-8"
Pro ostatni jazyky zmena oddelovace funguje v poradku (nemcina - tecka, anglictina - carka).

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

Odpovědi

Luboš Doležel (Doli) avatar 19.11.2006 16:24 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: i18n problem - oddelovac tisicu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co presne znamena ten radek nad #else ?
Pokud je v locale definován oddělovač, tak ho použij, jinak použij ','.
19.11.2006 16:49 Dušan Hokův | skóre: 43 | blog: Fedora a další...
Rozbalit Rozbalit vše Re: i18n problem - oddelovac tisicu
Hmm, kdyz je to tedy spravne a podle locale je oddelovacem pro cestinu mezera, proc se v aplikaci ukazuje otaznik misto mezery ? Zeby nejaky bug? V ceskem locale je oddelovac tisicu definovan takto:
LC_NUMERIC                                                                      
                                                                                
decimal_point           "<U002C>"                                               
thousands_sep           "<U00A0>"                                               
grouping                3;3                                                     
                                                                                
END LC_NUMERIC                    
19.11.2006 18:16 Dušan Hokův | skóre: 43 | blog: Fedora a další...
Rozbalit Rozbalit vše Re: i18n problem - oddelovac tisicu
Takze nalezena v ceske lokalizaci! Zmizely i hlasky panga :-).

Reseni:

v souboru
/usr/share/i18n/locales/cs_CZ
zmenit radky:
thousands_sep           "<U00A0>"
na
thousands_sep           "<U0020>"
A pote spustit:
localedef -i cs_CZ -f "UTF-8" 'cs_CZ.UTF-8'
Plati pro FC6.
19.11.2006 23:36 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: i18n problem - oddelovac tisicu
Coz samozrejme neresi pricinu problemu ale jen priznaky.

U00A0 je nezlomitelna mezera &nbsp;, kdezto U0020 je normalni mezera. V cestine je deleni cisla nepripustne (no, rekneme pokud to je neco jako π na 30 platnych mist, tak by se dala udelat vyjimka). Navic kdybysme chteli byt hyperkorektni, tak spravny znak je U2009 (&thinsp;) neboli zuzena mezera. A pokud bychom se chteli vratit do dob psacich stroju, tak se pouzivala obycejna vetna tecka. A jeste drive (pocatek 20. stoleti) se ta tecka psala nekam do horni poloviny radku.
20.11.2006 08:45 Dušan Hokův | skóre: 43 | blog: Fedora a další...
Rozbalit Rozbalit vše Re: i18n problem - oddelovac tisicu
diky, takze to spise vypada jako bug v soucasti gnome (Pango) ?
20.11.2006 13:22 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: i18n problem - oddelovac tisicu
Neni takhle nahodou problem v tom, ze sep neni char, ale wchar?

Znak U00A0 se v UTF-8 zapise jako \xC2\xA0. Takze vy zapisujete do out jen jeden byte, coz je malo.

Vyzkousejte si z shellu:
echo -e "12\xC2\xA0345" | pango-view /dev/stdin
echo -e "12\xC2345" | pango-view /dev/stdin
20.11.2006 15:42 Dušan Hokův | skóre: 43 | blog: Fedora a další...
Rozbalit Rozbalit vše Re: i18n problem - oddelovac tisicu
Hmm, aha... Jo to vyzkouseni dela uplne stejny problem jako u toho gnome-commander. Takze je chyba v kodu gnome-commandera, ktery spatne doda znak. diky

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.