Hlavní navigace

Lokalizace otevřeného a svobodného software

Petr Kovář 10. 4. 2008

V prvním článku ze série věnované problematice lokalizace otevřeného a svobodného softwaru si vysvětlíme význam a obsah základních pojmů a naznačíme východiska lokalizace založené na technologii gettext. Lokalizace a s ní související procesy jsou nedílnou součástí vývoje převážné části softwaru.

Lokalizace a internacionalizace

Tyto skutečnosti nepříliš překvapivě platí i pro vývoj otevřeného a svobodného softwaru. Tvůrce programu by tak měl – pokud chce svým produktem potenciální uživatele skutečně zaujmout a pokud se tito uživatelé nerekrutují z řad specifické předem vymezené skupiny – s možností lokalizace počítat už od samého počátku vývoje. Takto danou možnost coby vývojový proces nazýváme internacionalizací (anglicky „internationa­lization“, kvůli délce tohoto slova se často můžeme setkat se zkratkou i18n, kde první a počáteční písmeno je zachováno a číslo uprostřed značí počet vynechaných písmen; pokud bychom při překladu trvali na použití českého slova, použili bychom asi „zmezinárodnění“).

Internacionalizace zaručuje, že bude možné daný software přizpůsobit uživateli bez použití dalších technických prostředků, že bude program používat jednotný a/nebo v lokalizaci srozumitelný přirozený jazyk apod. Samotný proces přizpůsobování místním podmínkám a nárokům uživatele pak obstarává loka­lizace (anglicky „localisation“, zkracuje se obdobnou formou jako „internationa­lization“, tedy l10n, či kvůli většímu grafickému odlišení jako L10n).

Anketa

Jak přistupujete k software v češtině?

Pokusme se nyní vyjmenovat alespoň některé kategorie a příklady onoho přizpůso­bování. Z hlediska spotřeby na lokalizaci vydávaných zdrojů nejdůležitější a nejrozsáhlejší, ale jistě ne jedinou, kategorií je překlad z výchozího jazyka, kterým je obvykle (americká) angličtina, do místního jazyka či jazykové varianty. V případě jazyků používajících jinou abecedu se samozřejmě počítá i s umožněním používat program se znaky mimo latinku (byť byl dříve tento proces v případě nutnosti porůznu obcházen) či znaky mimo anglickou abecedu (případ češtiny či slovenštiny), dále směr psaní (zápis zleva doprava či zprava doleva např. u arabštiny, značení čísel (číslice, např. v perštině) a další. V případě jazyků s více psanými variantami (kupř. americká, anglická či australská angličtina, evropská či brazilská portugalština atd.) pak internacionalizace umožňuje rozlišení a lokalizace provádí přizpůsobení těmto specifikům.

Jako další kategorie můžeme zmínit odlišné měny, váhy a míry (metrický vs. imperiální systém), formát čísel (otázka desetinného vyznačování), kalendáře, zápisy data (které jsou v transatlantických vztazích častým zdrojem nedorozumění, jelikož se např. ve Spojených státech, oproti běžnému standardu v Evropě, v datu zapisuje měsíc před dnem, tedy 12. 24. 2007), času (často je nutné se vymezit vůči anglosaskému úzu 12hodinového cyklu), volba časového pásma (s rozlišením podle měst či jiných geografických míst na Zemi), formát poštovní adresy, telefonního čísla; popřípadě nikoliv pouze přizpůsobení formy, ale i obsahu uvedených kategorií, vyžaduje-li to povaha softwaru. Obecněji řečeno internacionalizace a lokalizace znamenají změnu grafické úpravy textu jako takové, ale i úpravy související s růzností sociálního a kulturního zázemí uživatelů.

Co je možné uvést ve sdělení počítače uživateli v našem západním kulturním okruhu, nemusí být přijatelné či srozumitelné lidem v muslimských, afrických zemích, či v zemích Dálného východu. Taková lokalizace pak může obnášet velmi náročný a komplexní proces, který se však našeho českého (či slovenského) prostředí netýká nebo týká jen okrajově. Úkolem českého překladatele bude nejčastěji pouze volba vhodného stylu a formy jazyka ve vztahu k tomu, zda uživatelem lokalizovaného softwaru bude dejme tomu středoškolský student nebo spíše emeritní profesor. V otázce, co lze ze softwarové výbavy lokalizovat, lze stručně odpovědět samotným uživatelským rozhraním programu, dokumentací nebo webovými stránkami. Nás bude nejdříve zajímat lokalizace programu jako takového.

Zastavme se ale ještě na chvíli u teoretičtější otázky, a sice potřebnosti uživatele mít lokalizovaný software jako takové. V tomto smyslu existují zcela zásadní rozdíly mezi jednotlivými cílovými uživatelskými skupinami, které lze definovat v rámci několika úrovní. Jednou z nich je sociální či ekonomický rozdíl mezi různými zeměmi a národnostmi světa. Jako dva do jisté míry extrémní příklady poslouží prakticky libovolná rozvojová země subsaharské Afriky na jedné straně (kde úroveň vzdělání obyvatelstva jednoduše neumožňuje používat software v jiném než mateřském jazyce, popř. jazyce někdejší koloniální říše; to se často týká i samotných počítačových odborníků zabývajících se lokalizací, ti mnohdy nepřekládají rovnou z angličtiny, protože ji ani oni neznají, alespoň tedy ne na dostatečné úrovni, ale jako podkladový jazyk používají např. francouzštinu), pří­kladem na druhé straně pak může být některá z vysoce rozvinutých západoevropských zemí, např. Nizozemsko, kde je u počítačových uživatelů znalost angličtiny velmi často dostatečná na to, aby mohli bez větších problémů používat i nelokalizovaný software.

Samozřejmostí je pak znalost angličtiny u drtivé většiny počítačových odborníků. Jinou úrovní je otázka sociální skupiny, do které uživatel patří, což jsme již vlastně zmínili v bodě předchozím. Potřeba plně lokalizovaného softwaru obvykle klesá se zvyšujícím se obecným vzděláním či počítačovou odborností uživatele. Programátor bude mít menší potřebu používat lokalizovaný software než učitel tělocviku a skladník ve šroubárně zase větší než lékař. Přesto má však lokalizace pro všechny příslušníky dané jazykové skupiny nepochybnou výhodu v tom, že přináší mimo samotného překladu i přizpůsobení v jiných výše zmíněných kategoriích lokalizace, o které by byli při používání anglického prostředí (s výchozím nastavením) ochuzeni.

Gnome

Příklad internacionali­zovaného a lokalizovaného grafického uživatelského rozhraní: pracovní prostředí GNOME 2.22

gettext a národní prostředí

Velká část otevřeného a svobodného softwaru využívá k zajištění internacionalizace a lokalizace samotných programů technologii gettext, která je součástí projektu GNU. Některé známé – obvykle větší – projekty (produkty Mozilla nebo třeba OpenOffice.org) mohou používat jiný systém lokalizace, který je však často s nástroji tvo­řícími gettext schopen datové výměny pomocí volně dostupných konvertorů. Zprávy (hlášení) programu jsou ve dvojici tvořené originálním (anglickým) řetězcem a přeloženým (lokalizovaným) řetězcem programu dostupné v tzv. katalogu zpráv (též katalog hlášení) s příponou .po, resp. jeho binární podobě s příponou .mo, a ten je načten – za předpokladu systému se správně nastaveným národním prostředím (anglicky „locale“) – spolu se spuštěním příslušného programu. 

Zmíněný termín národní prostředí můžeme chápat jako soubor nastavení či voleb, které úzce souvisí s (pokračujícím nebo dokončeným) procesem lokalizace a určuje tedy jazyk, zemi a další parametry. Korektní podpora národního prostředí není jen věcí přítomnosti katalogů zpráv určitého jazyka či jeho varianty s parametry, ale také schopnosti systému přizpůsobit uživatelské rozhraní uživatele všem potřebám, které mohly být v rámci internacionalizace a lokalizace vzneseny a které jsme si uvedli výše.

V dřívějším období vývoje linuxových distribucí či některých otev­řených systémů jsme se mnohdy střetávali s nepříliš velkou přívětivostí, která i po běžném uživateli vyžadovala mimo jiné dodatečné přidávání katalogů zpráv, instalaci písem obsahujících české znaky, zprovoznění českého rozložení klávesnice, zajištění načítání tohoto nastavení při spuštění apod. Dnešním standardem použitelnosti se rozumí samozřejmá podpora národního prostředí už v okamžiku instalace systému, kdy si uživatel může na jedné z prvních obrazovek vybrat takové prostředí, kterému opravdu rozumí.

Katalog zpráv

Vraťme se však nyní k tomu, co je obvykle jádrem lokalizace otevřeného a svobodného softwaru, totiž ke katalogu zpráv. Zdrojová podoba katalogu je prostým textovým souborem, v dnešní době téměř výhradně s kódováním znaků UTF-8, dříve jsme se u českých (resp. slovenských) katalogů setkávali také s 8bitovým kódováním ISO 8859–2. Jeho úložištěm je v typickém „tarballu“ (popřípadě jiné formě distribuce zdrojového kódu) podadresář po v kořenovém adresáři zdrojového kódu. Název sestává z již zmíněné přípony .po a kódu příslušného jazyka podle normy ISO 639. Český katalog má tedy název cs.po (nikoliv cz.po, jak se někteří často domnívají), slovenský sk.po a tak dále. V případě nutnosti odlišit jazykovou variantu podle země se navíc přistupuje k vyznačování podle normy ISO 3166, oddělené od kódu jazyka podtržítkem. Katalog s australskou angličtinou tedy najdeme v souboru nazvaném en_AU.po. Jak si lze povšimnout, název před příponou kopíruje název národního prostředí jako takového, u kterého je v některých případech zapotřebí uvést také použité kódování znaků (oddělené tečkou) či užívanou měnu nebo jinou vlastnost (oddělenou zavináčem), např. de_DE.UTF-8@euro by znamenalo německé národní prostředí s kódováním UTF-8 a měnou euro. Forma katalogu se skládá z (volitelných) počátečních řádků komentáře, záhlaví, vlastních řetězců a (volitelně) ze závěrečných komentářů. Nejzajímavější část s řetězci má přibližně následující strukturu:

#: ../gdk-pixbuf/io-tiff.c:670
msgid "Failed to save TIFF image"
msgstr "Ukládání obrázku TIFF selhalo"

V prvním komentovaném řádku vidíme odkaz na soubor zdrojového kódu a řádek, kde se originální řetězec, předem označený vývojářem v rámci internacionalizace k překladu, nachází. Druhý řádek je pak přirozeně překládaný a třetí přeložený řetězec. V případě jednoduché lokalizace programu (resp. její aktualizace) tedy stačí doplnit nepřeložené řetězce, katalog zpráv uložit a zkompilovat do binární podoby. To provedeme například pomocí nástroje msgfmt příkazem:

msgfmt -cv cs.po

Výsledkem bude český binární katalog zpráv s názvem messages.mo, který po přejmenování na název odpovídající příslušnému programu, kupř. gtk20.mo, umístíme do úložiště používaného českým národním prostředím. V typické linuxové distribuci se bude jednat o adresář /usr/share/locale/cs/LC_MESSAGES/, nicméně distributor či výrobce může zvolit (vedle této) i jinou cestu.

Příští díl

Že je ovšem lokalizace mnohem obsáhlejším procese, si spolu s podrobnějším nahlédnutím na to, jak, co, čím, s kým a pro koho překládat (aneb koho před překládáním kontaktovat, kde všude získat překládaný materiál, s kým konzultovat překlad či kam překlad odeslat) ukážeme v dalším české lokalizaci věnovaném díle.

Našli jste v článku chybu?

10. 4. 2008 7:35

Zdroj katalogu (.po soubor) se nemusí jmenovat stejně jako locale, to je jen konvence používaná pro projekty založené na autoconf/automake. Stejně dobře je možné pojmenovat soubor třeba "gtk20.po" (podle gettext domény). Hlavní je, aby výsledný zkompilovaný soubor byl k nalezení na /usr/share/locale/<locale>/LC_MESSAGES/<gettextdomain>.mo

10. 4. 2008 13:30

Mě by zajímalo, proč nechcete přejít na UTF8. Já jsem v životě měnil kódování několikrát a teď už delší dobu používám k plné spokojenosti právě UTF a myslím, že to je definitivní řešení. Pochopili to naštěstí už i vývojáři.
Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Podnikatel.cz: Alza.cz má StreetShop. Mall.cz více výdejních míst

Alza.cz má StreetShop. Mall.cz více výdejních míst

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Často čůrá a má žízeň? Příznaky dětské cukrovky

Často čůrá a má žízeň? Příznaky dětské cukrovky

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?