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 „internationalization“, 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á lokalizace (anglicky „localisation“, zkracuje se obdobnou formou jako „internationalization“, tedy l10n, či kvůli většímu grafickému odlišení jako L10n).
Jak přistupujete k software v češtině?
Pokusme se nyní vyjmenovat alespoň některé kategorie a příklady onoho přizpůsobová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.
Příklad internacionalizované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.