Term�nem "locale" nebo "locales" se rozum� lokalizace funkc� poskytovan�ch knihovnou libc nebo glibc. Vzhledem k tomu, �e slu�by t�to knihovny pou��v� v�t�ina program�, ovlivn� se t�m chov�n� t�m�� cel�ho syst�mu.
Locales umo��uj�, aby se jednotliv� programy chovaly podle n�rodn�ch zvyklost�: aby spr�vn� fungovalo rozli�ov�n� znak� na p�smena, ��slice a ostatn� znaky, p�smen na velk� a mal�, p�evody mezi mal�mi a velk�mi p�smeny (to jsou sp��e z�le�itosti znakov� sady ne� n�rodn�ch zvyklost�, ale i to je zahrnuto v locales), �azen� (t��d�n�) znak� a �et�zc�, aby programy pou��valy v dan� zemi a jazyce obvykl� zp�sob z�pisu pen�n�ch �daj�, v�pis� ��sel, data a �asu, n�zv� m�s�c� a dn� v t�dnu. Locales �zce souvis� s katalogy zpr�v, kter� umo��uj�, aby programy vypisovaly sv� hl�en� ve zvolen�m jazyce. V�e je p�itom mo�n� m�nit, ani� by bylo nutn� programy rekompilovat!
Lokalizaci libc je mo�n� nastavit bu� kompletn�, nebo pouze pro vybran� kategorie. Kategorie locales jsou uvedeny v tabulce.
Kategorie | V�znam |
LC_COLLATE | Popisuje v�echny znaky abecedy a ur�uje jejich po�ad� p�i lexikografick�m t��d�n�. |
LC_CTYPE | Pou��v�na pro d�len� znak� do t��d jako: mal�, velk� p�smena, odd�lova�e, apod.. |
LC_MESSAGES | Pou��v�na pro zpr�vy zobrazovan� programy, tzv. katalogy zpr�v. |
LC_MONETARY | Definuje form�tov�n� v�pis� pen�n�ch informac�. |
LC_NUMERIC | Definuje form�tov�n� v�pis� ��sel. |
LC_TIME | Form�t v�pisu �asu a data, n�zvy a zkratky m�s�c� a dn� v t�dnu. |
|
Kategorie LC_COLLATE
ovliv�uje chov�n� funkc� strcoll()
a strxfrm()
pro porovn�v�n� �et�zc�.
Kategorie LC_CTYPE
ovliv�uje chov�n� funkc� deklarovan�ch
v souboru ctype.h
jako jsou isupper()
, toupper()
,
... a funkc� pro pr�ci s v�cebajtov�mi znaky jako jsou mblen()
,
wctomb()
.
Kategorie LC_MONETARY
a LC_NUMERIC
ovliv�uj� chov�n�
funkce localeconv()
, na n�kter�ch syst�mech bohu�el i funkce ze
skupiny printf()
.
Kategorie LC_TIME
ovliv�uje chov�n� funkce strftime()
.
P�ev�n� v�t�ina program� vol� funkci setlocale(LC_ALL, "")
,
kter� inicializuje locales podle hodnot prom�nn�ch prost�ed�,
jejich� n�zvy jsou stejn� jako kategorie locales, a podle prom�nn�ch
LC_ALL
a LANG
.
V knihovn� libc/glibc je vestav�n mechanismus, d�ky kter�mu se
vyhodnocov�n�, jak� lokalizace se m� pou��t pro ur�itou kategorii,
prov�d� n�sledovn�: Je-li nastavena prom�nn� LC_ALL
, pou�ije se
jej� hodnota. Pokud nastavena nen�, pak se zkoum� nastaven� prom�nn�ch
LC_kategorie
. Pokud nen� nastavena ani prom�nn� pro p��slu�nou
kategorii, rozhoduje nastaven� prom�nn� LANG
. Nen�-li nastavena
ani prom�nn� LANG
, pou�ije se implicitn� hodnota "C". N�kter�
programy (nap��klad man 1.x) nastaven� prom�nn�ch LC_*
ignoruj�
a ��d� se pouze podle prom�nn� LANG
.
Zm�n�n� prom�nn� se nastavuj� na hodnoty tvaru:
jazyk[_ZEM�[.k�dov�n�]]
nebo l�pe na n�kterou z p�ezd�vek definovan�ch v souboru
locale.alias
--- to je czech
pro �e�tinu,
slovak
pro sloven�tinu. D�ky p�ezd�vce se hodnota p�evede na
cs_CZ.ISO-8859-2
nebo sk_SK.ISO-8859-2
, co� ud�v� jak
k�dov�n�, tak jazyk a zemi. Locale soubory se d�ky mechanismu zabudovan�mu
do knihovny libc hledaj� postupn� v adres���ch cs_CZ.ISO-8859-2
,
cs_CZ.iso88592
, cs_CZ
, cs.ISO-8859-2
,
cs.iso88592
a nakonec v cs
.
Zkratky jazyk� stanovuje norma ISO 639, zkratky zem� norma
ISO 3166 (viz kapitola
p��loha).
K�d �e�tiny je cs
, sloven�tiny sk
, k�d �esk�
republiky CZ
, Slovenska SK
. Zem� se uv�d�
z toho d�vodu, �e n�kter�mi jazyky se mluv� ve v�ce zem�ch,
ve kter�ch se nap��klad pou��v� jin� m�na.
Pon�kud matouc� je fakt, �e k�d �e�tiny se li�� od k�du �esk� republiky. Ale i mezi jazyky, kter� se pou��vaj� v jedin� zemi to nen� ojedin�l� p��pad: podobn� je to u da_DK (d�n�tina, D�nsko), ja_JP (japon�tina, Japonsko). V p��pad� cs_CZ je v�ak o d�vod ke zmaten� v�ce, proto�e k�d �e�tiny je shodn� s ISO k�dem b�val�ho �eskoslovenska.
P��pona .k�dov�n�
by m�la slou�it k v�b�ru spr�vn�ch
locale informac� na po��ta��ch, kter� pro ur�it� jazyk podporuj�
n�kolik k�dov�n� (v Evropsk�ch podm�nk�ch asi pouze ISO-8858-x a
Unicode), nebo naopak ur�it� k�dov�n� nepodporuj� (nap��klad
ISO-8859-2). Bohu�el v r�zn�ch syst�mech se pro k�dov�n� pou��vaj�
r�zn� �et�zce, tak�e je mo�n� se setkat se z�pisy ISO-8859-2
,
ISO_8859-2
, ISO8859-2
, iso88592
, za kter�mi
je�t� n�kdy b�v� dvojte�ka a rok p�ijet� standardu k�dov�n� ISO-8859-2.
Pokud nemus�te, je lep�� p��ponu .k�dov�n�
v�bec nepou��vat.
P�esto�e v mnoha n�vodech je lakonick� sd�len� "nastavte prom�nnou
LANG
na cs_CZ
" (nebo cs
, n�kde dokonce je�t�
chybn� cz
), je u�ite�n� se zamyslet, jestli skute�n� chcete
nastavovat v�echny kategorie. Nemus� se v�m nap��klad l�bit lokalizovan�
v�pis p��kazu ls -l
, v n�m� mohou b�t rozhozeny sloupce kv�li
r�zn� d�lce zkratek n�zv� m�s�c�, n�kter� programy nebo skripty mohou
dokonce p�i nastaven� LC_ALL
nebo LANG
�patn� fungovat
(zejm�na kdy� na n�kter�ch syst�mech nastaven� locales ovliv�uje i takov�
funkce jako je printf()
).
Nav�c auto�i program� ne v�dy dob�e rozli�uj� (pokud u� v�bec
pou��vaj� locales), kdy program produkuje v�pisy pro u�ivatele a kdy
v�pisy pro dal�� zpracov�n� n�jak�m programem (nap��klad z�pis do
konfigura�n�ho souboru). Ve druh�m p��pad� by se lokalizovan� funkce
nem�ly pou��vat. Bohu�el u mnoha program� to lze t�ko odli�it (typick�m
p��kladem jsou ��dkov� p��kazy jako p��kaz ls -l
, kter� m��e
b�t jak vyvol�n u�ivatelem, tak pou�it v jin�m programu nebo skriptu).
P�i psan� skript� by m�lo b�t v�dy zaji�t�no, �e skripty budou fungovat i p�i rozli�n� nastaven� lokalizaci. Pokud se ve skriptech o�ek�v�, �e v�stupy program� budou v nelokalizovan� form�, mus� b�t na za��tku skriptu uvedeny p��kazy
LC_ALL=C; export LC_ALL
LANG=C; export LANG
Nastaven� prom�nn� LC_ALL
by m�lo b�t posta�uj�c�; prom�nn�
LANG
se nastavuje, aby spr�vn� fungovaly i programy, kter�
nespr�vn� pou��vaj� pouze tuto prom�nnou.
Pro pr�ci se znakovou sadou ISO-8859-2 je velice vhodn� m�t nastaven�
p�inejmen��m LC_CTYPE
. Bez n�j nebudou fungovat n�kter�
kl�vesnice v X, v textov�ch editorech nebudou spr�vn� rozezn�v�ny hranice
slov (tak�e nap��klad slovo u�ovka nep�jde v editoru vi smazat p��kazem
dw
, ale bude nutn� pou��t 3dw, jako by se jednalo o t�i slova).
Knihovna glibc (alias libc6 nebo libc2) funguje s locales vcelku bez probl�m� (od verze 2.0.7 obsahuje i �esk� locales). To se v�ak ned� ��ci o knihovn� libc5. Ve v Linuxu pom�rn� roz���en� verzi libc-5.3.12 jsou pr�v� v oblasti locales chyby, kter� p�i nevhodn�ch hodnot�ch v sekci LC_TIME zp�sob� p�d programu localedef. Obvykle se doporu�uje libc verze alespo� 5.4.17.
Na syst�mech, kter� maj� libc i glibc je nutn� u ji� p�elo�en�ch
program� zjistit, s jakou variantou knihovny libc pracuj�. Bohu�el
nap��klad v syst�mu Red Hat 5.x p��kaz ldd `which program`
zcela bezosty�n� l�e.
D�le je t�eba m�t odpov�daj�c� utility `localedef' a `locale', a pokud chcete p�ekl�dat katalogy zpr�v, tak tak� utility `gencat' a `msgfmt'.
Nejd��ve zjist�te v jak�m stavu m� v� syst�m locales: P��kazem
localedef --help
zjist�te (podle ��dku s textem System's directory for character
maps:
), v jak�m adres��i jsou o�ek�v�ny mapy znak�. U syst�m�
s libc5 to b�v� /usr/share/nls/charmap
, u syst�m� s glibc
/usr/share/i18n/charmaps
. Dal�� popis je ps�n pro syst�my
s libc5, proto�e u�ivatel� glibc syst�m� pravd�podobn� u� budou m�t
locales nainstalovan�. Pokud ne, mus� si v n�sleduj�c�m popisu
upravit cesty v p��kazech podle vlastn�ho syst�mu. Pozor na 's',
kter� ve jm�nech adres��� locale(s) a charmap(s) n�kde je a n�kde
nen�!
Pokud v tomto adres��i chyb� soubor s popisem znakov� sady ISO-8859-2
(zkuste �ol�kov� z�pis ISO*8859-2*), budete si muset st�hnout soubor
http://www.inf.upol.cz/~michlv/ftp/WG15-collection.tar.gz
rozbalit jej do libovoln�ho adres��e a z rozbalen�ho adres��e
WG15-collection
zkop�rovat adres��e charmaps
a
locales
v�etn� obsahu do adres��e, ve kter�m se o�ek�v�
adres�� s mapami znak�:
cp -r WG15-collection/charmaps /usr/share/nls/charmap
cp -r WG15-collection/locales /usr/share/nls/locale
Pokud u� na va�em syst�mu zm�n�n� soubory jsou, bude sta�it nainstalovat
pouze �esk� nebo slovensk� locales. Alespo� �esk� by u� m�ly b�t v glibc
2.0.7; a pokud jste instalovali �eskou kl�vesnici do X11 z bal�ku
XKB-czsk-forcedIM*
, m�te �esk� a slovensk� locales u� tak�
nainstalovan�. O tom je mo�n� se p�esv�d�it p��kazem
locale -a | grep ^cs
V�dy je v�ak vhodn� st�hnout zdrojov� soubor s �esk�mi locales
ftp://ftp.fi.muni.cz/pub/localization/locale/cs_CZ
a um�stit jej do adres��e /usr/share/nls/locale
. V mnoha
bal�c�ch je toti� star� verze tohoto souboru, ve kter� mimo jin�
nemus� fungovat spr�vn� t��d�n�.
Zdrojov� soubor s �esk�mi locales je nutn� p�elo�it do bin�rn� podoby pro libc p��kazy
cd /usr/share/locale
mkdir -p cs_CZ/LC_MESSAGES
localedef -c -i /usr/share/nls/locale/cs_CZ \
-f /usr/share/nls/charmap/ISO*8859-2* ./cs_CZ
pro glibc p��kazy
mkdir -p /usr/share/locale/cs_CZ/LC_MESSAGES
localedef -c -i /usr/share/i18n/locales/cs_CZ \
-f /usr/share/i18n/charmaps/ISO-8859-2 /usr/share/locale/cs_CZ
V�sledkem bude adres�� /usr/share/locale/cs_CZ
obsahuj�c� sadu
soubor� se jm�ny LC_*
a adres�� LC_MESSAGES
.
V��e uveden� p��kazy m��ete tak� pou��t, pokud se v�m nel�b�, �e
v dod�van�ch �esk�ch locales jsou na m�st� zkratek jmen m�s�c� pou�ity
pln� n�zvy, co� zp�sobuje rozh�zen� v�pisu produkovan�ho p��kazem ls
-l
. Sta�� opravit n�zvy uveden� v sekci abmon
ve zdrojov�m
souboru /usr/share/i18n/locales/cs_CZ
a locales znovu p�elo�it.
Pak u� m��ete nastavovat prom�nn� LC_CTYPE
, LC_COLLATE
nebo LC_ALL
a LANG
a kochat se, jak to funguje.
Nap��klad aby spr�vn� fungovala klasifikace znak�, je t�eba nastavit
prom�nnou prost�ed� LC_CTYPE
. V shellech bash a ksh se to
provede p��kazem
export LC_CTYPE=cs_CZ
v csh a tcsh p��kazem
setenv LC_CTYPE cs_CZ
a ve star��ch shellech vych�zej�c�ch z Bourne shellu, sh, a jsh p��kazem
LC_CTYPE=cs_CZ
export LC_CTYPE
Pro nastaven� v�ech kategori� locales je t�eba nastavit prom�nnou
prost�ed� LANG
nebo LC_ALL
.
Pokud chcete, aby �esky byly pouze zpr�vy vypisovan� programy,
nastavte prom�nnou LC_MESSAGES
:
export LC_MESSAGES=cs_CZ
P�i nastaven� n�kter� z prom�nn�ch prost�ed� ovl�daj�c�ch locales
se najde v souboru /usr/share/locale/locale.alias
odpov�daj�c�
hodnota, podle kter� se vybere adres�� z /usr/share/locale
(nebo se tento adres�� vybere p��mo). V adres��i odpov�daj�c�m vybran�mu
jazyku jsou bin�rn� soubory vygenerovan� p��kazem localedef
z textov�ch locales. Jm�na soubor� jsou n�sleduj�c�:
LC_COLLATE, LC_MESSAGES, LC_NUMERIC, LC_CTYPE, LC_MONETARY, LC_TIME.
Pokud n�kter� soubor sma�ete a vytvo��te m�sto n�j adres�� se stejn�m jm�nem, pak se po nov�m vygenerov�n� soubor� utilitou `localedef' soubor um�st� do tohoto adres��e se jm�nem za��naj�c�m p�edponou SYS_.
Tohoto se nej�ast�ji vyu��v� u LC_MESSAGES
, kdy jsou do tohoto
adres��e um�s�ov�ny katalogy zpr�v pro r�zn� programy. Katalog zpr�v je
soubor, v n�m� jsou um�st�ny v�echny zpr�vy vypisovan� programem nebo
skupinou program� a jeho� z�m�nou lze doc�lit zm�ny jazyka, kter�m
program komunikuje.
V p��pad� katalog� zpr�v lze p�edepsat, kde se tyto katalogy maj� hledat,
pomoc� prom�nn� prost�ed�
NLSPATH
.
Nap�: export NLSPATH=/usr/share/locale/%L/LC_MESSAGES/%N.cat kde %N znamen� jm�no katalogu. %L znamen� jm�no lokalizace (kategorie LC_MESSAGES).
Za oba tyto atributy si program dosad� spr�vn� hodnoty, kdy� pot�ebuje informace o zvyklostech zem�.
Pokud je t�eba v NLSPATH
zadat v�ce adres���, odd�luj� se
dvojte�kou.
Jedn�m z c�l� lokalizace je umo�nit, aby si u�ivatel mohl vybrat, v jak�m jazyce budou jednotliv� programy vypisovat sv� hl�en�, menu, apod., a to bez rekompilace program�. Aby to bylo mo�n�, mus� b�t texty v�ech zpr�v, kter� program produkuje, z n�j vyta�eny a um�st�ny v n�jak�m extern�m souboru (katalogu zpr�v). Jeho z�m�nou za jin� se dos�hne zm�ny v�ech zpr�v. V sou�asn� dob� se pou��vaj� dva zp�soby jak to prov�st:
ad a) Star�� a tak� p�i programov�n� pracn�j�� �e�en�. Paraleln� s programem je t�eba vytv��et textov� katalog zpr�v, ze kter�ho se nakonec pomoc� `gencat' vytvo�� katalog v bin�rn�m tvary (kter� m�v� p��ponu .cat). Pro p��stup do katalogu se v programu pou��vaj� funkce catopen, catclose, catgets (popis viz man).
ad b) Nov�j�� �e�en�, jednodu��� pro tvorbu a �dr�bu program�. Pro jeho pou�it� je nutn� bal�k gettext. V programu se pak ka�d� zpr�va, kterou vypisuje, nap��e jako argument funkce gettext. Po zm�n� programu pak sta�� vygenerovat seznam v�ech zpr�v, kter� jsou v programu, a tyto zpr�vy p�elo�it. Nov� katalog lze tak� spojit se star�m, ji� p�elo�en�m. Zdrojov� tvar katalogu se pro pou�it� programem p�ev�d� do bin�rn�ho tvaru tzv. objektu zpr�v (soubor m�v� p��ponu .mo nebo .gmo) utilitou `msgfmt'.
P�i obou postupech se v�sledn� katalog zpr�v um�st� do adres��e
/usr/share/locale/cs_CZ.*/LC_MESSAGES
.
Nejprve je t�eba zjistit, zda je aplikace napsan� internacion�ln�. To lze n�kolika zp�soby:
LANG
nebo LC_ALL
na p��slu�n� jazyk ---
nap�: export LC_ALL=cs_CZ
.
Pokud aplikace internacion�ln� napsan� nen�, pak m�me sm�lu, nebo ji m��eme upravit.
Je-li internacion�ln� napsan�, je t�eba zjistit, kter� ze dvou v��e popsan�ch, pak m��e pou��vat jeden ze dvou mn� zn�m�ch zp�sob� a to:
Tento zp�sob je star�� a pravd�podobn� p�enositeln�j�� na jin� opera�n� syst�my. V�echny zpr�vy z programu jsou vyta�eny do katalogu (m�v� p��ponu .msg, .m), kter� m��e b�t rozd�len na n�kolik ��st�. Katalog vypad� n�sledovn�:
$set cislo #Nazev $ #Jmeno_zpravy1 d�le pozn�mky, t�eba origin�ln� zpr�va # Vlastn� zpr�va 1 $ #Jmeno_zpravy2 d�le pozn�mky, t�eba origin�ln� zpr�va # Vlastn� zpr�va 2 ...
��dky kter� za��naj� znakem '$', nejsou um�st�ny do v�sledn�ho katalogu. '$set cislo #Nazev' je p��kaz, kter� ud�v� ��slo mno�iny a jej� symbolick� n�zev. T�mto mus� za��nat ka�d� katalog. D�le pokra�ujeme v�dy po dvou ��dc�ch, p�itom prvn� ��dek je nepovinn�, pouze definuje symbolick� jm�no zpr�vy.
$ #Jmeno_zpravy1 d�le pozn�mky, t�eba origin�ln� zpr�va # Vlastn� zpr�va 1
Tak�e pokud m�me naps�n katalog, m��eme jej zkompilovat p��kazem gencat, jeho� syntaxe je:
gencat [-new] [-or] [-lang C|C++|ANSIC] catfile msgfile [-h <header-file>]... -new generuje nov� katalog -lang pro jak� jazyk m� b�t vytvo�en hlavi�kov� soubor catfile jak se m� jmenovat katalog msgfile soubor zpr�v -h hlavi�kov�_soubor generovat hlavi�kov� soubor tohoto jm�na
Po kompilaci ji� m�me v�sledn� katalog, kter� pak sta�� um�stit do adres��e s ostatn�mi katalogy.
!!!POZOR!!! Pokud p�ekl�d�me katalog z jin�ho jazyka, je t�eba zachovat po�ad� i po�et zpr�v.
P��klad:
Ud�l�me mal� p��klad pou�it� tohoto zp�sobu:
#include <locale.h> #include <stdio.h> #include <features.h> #include <nl_types.h> #include "test-cat.h" char main() { nl_catd cfd; setlocale(LC_MESSAGES, ""); cfd = catopen("test", MCLoadBySet); printf("%s\n", catgets(cfd, TestlistSet, TestlistWelcome, "Welcome in test program")); /* "Welcome in test program" se vyp��e v~p��pad�, �e zpr�va nen� v~katalogu nalezena, nebo katalog nebyl nalezen */ printf("%s\n", catgets(cfd, TestlistSet, TestlistAuthor, "Author: Vladimir Michl")); catclose(cfd); return 0; }
$set 10 #Testlist $ #Welcome # V�tejte v testovac�m programu $ #Autor # Autor: Vladimir Michl
gencat -new -lang C test.cat test.m -h test-cat.h
gcc -o test test.c
NLSPATH
do tohoto adres��e
mv test.cat /usr/share/locale/cs_CZ.iso88592/LC_MESSAGES export NLSPATH=/usr/share/locale/%L/LC_MESSAGES/%N.cat
LC_ALL
a spust�me test
LC_ALL=C test LC_ALL=cs_CZ.ISO-8859-2 test
K tomuto zp�sobu je t�eba si st�hnout GNU gettext z n�jak�ho FTP. J� osobn� pova�uji tento zp�sob za daleko lep�� ne� prvn�.
Katalogy zpr�v b�vaj� ve dvou tvarech a to s p��ponou .pot a .po. S p��ponou .pot jsou to pouze zpr�vy vyta�en� ze zdroj�k�, kde�to soubory s p��ponou .po jsou soubory, kter� ji� maj� alespo� n�kter� zpr�vy p�elo�en�. .po soubor m� n�sleduj�c� strukturu:
#
jsou koment��em.#:
jsou odkazy, kde se
�et�zec vyskytuje ve zdrojov�m k�du.msgid "xxxxxx"
nebo msgid ""
za��n�
p�vodn� �et�zec uveden� ve zdrojov�m k�du.msgstr "xxxxxx"
nebo msgstr ""
za��n�
p�elo�en� �et�zec.#,
informuj� o stavu p�ekladu
nebo form�tu.
V�jimku tvo�� prvn� dvojice msgid
a msgstr
, kde se
uv�d� informace o konkr�tn�m katalogu.
P��klad .po souboru:
# Czech translations for the GNU gettext messages # Copyright (C) 1996 Free Software Foundation, Inc. # Vladimir Michl <[email protected]>, 1997. # Version: 1.1 # msgid "" msgstr "" "Project-Id-Version: fileutils 3.15a\n" "POT-Creation-Date: 1997-01-26 00:26-0600\n" "PO-Revision-Date: 1997-04-23 20:21+0200\n" "Last-Translator: Vladimir Michl <[email protected]>\n" "Language-Team: Czech <[email protected]>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8-bit\n" #: src/chgrp.c:144 msgid "group number" msgstr "��slo skupiny" #: src/chgrp.c:290 src/chmod.c:234 src/chown.c:254 src/cp-aux.c:86 #: src/dd.c:1121 src/df.c:576 src/dircolors.c:121 src/du.c:238 #: src/install.c:625 src/ln.c:347 src/ls.c:2805 src/mkdir.c:70 src/mkfifo.c:68 #: src/mknod.c:79 src/mv.c:407 src/rm.c:543 src/rmdir.c:94 src/sync.c:46 #: src/touch.c:262 msgid "" "\n" "Report bugs to [email protected]" msgstr "" "\n" "Popis chyb zas�lejte na adresu [email protected] (pouze " "anglicky),\n" "popis chyb v~p�ekladu zas�lejte na adresu [email protected]" Pokud se t�sn� p�ed msgid vyskytne ��dek #, fuzzy, pak je tento �et�zec pova�ov�n za ne�pln� p�elo�en�. Nap�: #, fuzzy msgid "OK" msgstr "xxx"
Pro pr�ci s katalogem existuje n�kolik utilit:
Zkompilovan� katalogy mus� m�t p��ponu .mo.
P��klad pou�it�:
#include <locale.h> #include <stdio.h> #include <libintl.h> #define PACKAGE "test" #define LOCALEDIR "/usr/share/locale" char main() { setlocale(LC_MESSAGES, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); printf("%s\n", gettext("Welcome in test program")); printf("%s\n", gettext("Author: Vladimir Michl")); return 0; }
xgettext test.c
# Czech translation of test. # Vladimir Michl <[email protected]>, 1997. # msgid "" msgstr "" "Project-Id-Version: test 1.0\n" "POT-Creation-Date: 1997-05-02 16:28+0000\n" "PO-Revision-Date: 1997-05-02 18:00+0200\n" "Last-Translator: Vladimir Michl <[email protected]>\n" "Language-Team: Czech <[email protected]>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" #: test.c:13 msgid "Welcome in test program" msgstr "V�tejte v~testovac�m programu" #: test.c:14 msgid "Author: Vladimir Michl" msgstr "Autor: Vladim�r Michl"
msgfmt -v -o test.mo messages.po
gcc -o test test.c -lintl
mv test.mo /usr/share/locale/cs_CZ.iso88592/LC_MESSAGES LC_ALL=C test LC_ALL=cs_CZ.ISO-8859-2 test
Manu�lov� str�nky: catopen(3), catclose(3), catgets(3), locale(7), setlocale(3) Info str�nky: gettext
P�ehled programov�ch bal�k�, kter� jsou lokalizov�ny i kter� na lokalizaci teprve �ekaj� naleznete na http://www.inf.upol.cz/~michlv/gnu-loc.shtml.
Katalogy je mo�n� z�skat na
http://www.inf.upol.cz/~michlv/ftp/catalogs/
nebo
ftp://ftp.fi.muni.cz/pub/localization/locale/catalogs/.
Katalogy pro LyX jsou na
ftp://merkur.econ.muni.cz/pub/lyx.cz/.
Pro KDE jsou �esk� a slovensk� katalogy k dispozici v podadres���ch
po/cs/
a po/sk/
jednotliv�ch adres��� na
ftp://ftp.ujep.cz/pub/OS/Linux/terezka.ujep.cz/kde/src/.
N�kter� k�dy jazyk� podle normy ISO 639:
arab�tina `ar', ��n�tina `zh', �e�tina `cs', d�n�tina `da', holand�tina `nl', angli�tina `en', Esperanto `eo', fin�tina `fi', francouz�tina `fr', hebrej�tina `he', n�m�ina `de', �e�tina `el', ma�ar�tina `hu', ir�tina `ga', ital�tina `it', indon�tina `id', japon�tina `ja', korej�tina `ko', latina `la', nor�tina `no', per�tina `fa', pol�tina `pl', portugal�tina `pt', ru�tina `ru', sloven�tina `sk', slovin�tina `sl', �pan�l�tina `es', �v�d�tina `sv', ture�tina `tr', ukrajin�tina `uk'.
N�kter� k�dy zem� podle normy ISO 3166:
�esk� republika `CZ', Slovensko `SK', N�mecko `DE', Francie `FR', Polsko `PL', Rakousko `AT', Spojen� st�ty `US'.