Portál AbcLinuxu, 16. července 2025 20:48


Dotaz: gettext bez buildovaciho systemu

27.1.2009 15:29 phero | skóre: 17 | blog: techblog
gettext bez buildovaciho systemu
Přečteno: 234×
Odpovědět | Admin
Nazdar, no chtel jsem si pohrat s C gettextem ale zjistil jsem ze bez autotools ci CMake to jde dost zle - jaksi veskera dokumentace se spoliha na integraci s autotools.

Fakt by me potesilo, kdyby nekdo poradil co je spatne

xxx.c
#include <stdio.>
#include <libintl.h>

int main() {
	setlocale("","");
	bindtextdomain("xxx","/home/phero/dev/sandbox/c");
	textdomain("xxx");
	printf(gettext("fuck\n"));
}
na to pustim
xgettext xxx.c
msginit -l cs_CZ.utf8 --input=messages.po
msgfmt cs.po
msgfmt cs.po vytvory messages.mo a ten prejmenuju na xxx.mo a kopnu do /home/phero/dev/sandbox/c/cs/LC_MESSAGES

locale -a vypise mimo jine cs_CZ.utf8
LC_MESSAGES=cs_CZ.utf8 ./xxx # nezobrazi preklad
jak podrobneji funguje setlocale(LC_ALL,"")? (jelikoz se nepouziva autotools tak neni kde vzit LC_ALL) co delam spatne? jak to debuggovat? diky

A nejde mi o to naucit se jak se to pouziva, a nikdy by me ani nenapadlo podobnym zpusobem sesmoleny kod distribuovat spis se chci kouknout jak to gettext pak davat dohromady.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

27.1.2009 15:48 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: gettext bez buildovaciho systemu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pomôcť by malo pridanie
#include <locale.h>
(a potom by malo fungovať aj setlocale(LC_MESSAGES, "cs_CZ.utf8");).
27.1.2009 15:50 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: gettext bez buildovaciho systemu
Len doplním, že u mňa niečo ako sk_SK.utf-8 nefunguje a musí sa použiť sk_SK.UTF-8.
27.1.2009 16:33 phero | skóre: 17 | blog: techblog
Rozbalit Rozbalit vše Re: gettext bez buildovaciho systemu
Bohuzel nepomohlo :-(.

ale je ted mony pouzit setlocale(LC_ALL,""); podle gettext manualu. stejne tak jsem zkousel na tvrdo do zdrojaku dat setlocale(LC_MESSAGES,"cs_CZ.UTF-8"), no priklad se furt ignore :-(
phero@radegast ~/dev/sandbox/c $ LANG=cs_CZ.UTF-8 LC_ALL=cs_CZ.UTF-8 locale
LANG=cs_CZ.UTF-8
LC_CTYPE="cs_CZ.UTF-8"
LC_NUMERIC="cs_CZ.UTF-8"
LC_TIME="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
LC_MONETARY="cs_CZ.UTF-8"
LC_MESSAGES="cs_CZ.UTF-8"
LC_PAPER="cs_CZ.UTF-8"
LC_NAME="cs_CZ.UTF-8"
LC_ADDRESS="cs_CZ.UTF-8"
LC_TELEPHONE="cs_CZ.UTF-8"
LC_MEASUREMENT="cs_CZ.UTF-8"
LC_IDENTIFICATION="cs_CZ.UTF-8"
LC_ALL=cs_CZ.UTF-8
phero@radegast ~/dev/sandbox/c $ LANG=cs_CZ.UTF-8 LC_ALL=cs_CZ.UTF-8 ./xxx
fuck
27.1.2009 16:59 phero | skóre: 17 | blog: techblog
Rozbalit Rozbalit vše Re: gettext bez buildovaciho systemu
Pomohlo! Jsem mezi tim "rozdrbal" jeste neco jinyho :-) Bylo to tim
#include <locale.h>
ktere nadefinovalo LC_ALL, takze slo pak do kodu pridat
setlocale(LC_ALL,"");
a gettext se pak (podle strace) zacal divat po lokalizacnich souborech

diky a respect :-)
27.1.2009 16:50 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: gettext bez buildovaciho systemu
Odpovědět | | Sbalit | Link | Blokovat | Admin
A nezapomněl jste si tu hlášku v cs.po přeložit?!
27.1.2009 16:58 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: gettext bez buildovaciho systemu
Odpovědět | | Sbalit | Link | Blokovat | Admin
kopnu do /home/phero/dev/sandbox/c/cs/LC_MESSAGES

Já jsem ho musel pojmenovat cs_CZ, aby mi to fungovalo (ale nemám tušení proč) - třeba je to i tento případ.

I am always ready to learn although I do not always like to be taught. (W. Churchill)

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.