GNU gettext

GNU gettext
VývojářProjekt GNU
Aktuální verze0.22.5 (21. února 2024)
Operační systémMultiplatformní
Typ softwaruInternacionalizace
a lokalizace
LicenceLGPL (knihovna), GPL (nástroje), GFDL/GPL (dokumentace)
Webwww.gnu.org/software/gettext/
Některá data mohou pocházet z datové položky.
pracovní postup

gettext je lokalizační nástroj patřící do projektu GNU, který je obvykle používán při psaní vícejazyčných programů.

Programování

Zdrojový kód musí být nejprve upraven tak, aby volal GNU gettext. To se ve většině programovacích jazyků provádí zavoláním funkce gettext(), jejíž parametrem je zadávaný řetězec. Pro ušetření psaní se používá alias _, takže následující kód v jazyce C,

printf(gettext("My name is %s.\n"), my_name);

může vypadat i takto:

printf(_("My name is %s.\n"), my_name);

gettext se pokusí vyhledat v katalogu řetězec zadaný jako parametr. Pokud bude nalezen, bude vrácen jeho překlad. V opačném případě bude návratovou hodnotou původní řetězec.

Kromě jazyka C má gettext implementace i v následujících jazycích: C++, Objective-C, Pascal/Object Pascal, sh skript, bash skript, Python, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, wxWidgets (skrze třídu wxLocale), YCP (jazyk YaST2), Tcl, Perl, PHP, Pike, Ruby a R. Pro většinu z nich je použití podobné implementaci v C.

Extrakce řetězců

K získání přeložitelných frází ze zdrojového kódu se používá xgettext – tento program po spuštění se správnými parametry vygeneruje šablonu katalogu (soubor .pot). Pro výše uvedený příklad bude vypadat nějak takto:

#* src/name.c:36
msgid "My name is %s.\n"
msgstr ""

Překládání

Překladatel může získat katalog ze šablony programem msginit. Pokud chceme vytvořit český překlad, spustíme následující příkaz:

msginit --locale=cs --input=sablona.pot

Ten vytvoří soubor cs.po s následujícím obsahem:

#* src/name.c:36
msgid "My name is %s.\n"
msgstr ""

Překladatel by měl tento soubor přeložit a to buď ručně, nebo pomocí specializovaného programu (např. Poedit).

#* src/name.c:36
msgid "My name is %s.\n"
msgstr "Jmenuji se %s.\n"

Nakonec musí být katalog (.po) zkompilován do binární podoby (.mo), což bude provedeno programem msgfmt.

Související články

Externí odkazy

  • Logo Wikimedia Commons Obrázky, zvuky či videa k tématu GNU gettext na Wikimedia Commons
  • Domovská stránka programu Poedit
  • GNU – pomoc při tvorbě programů: Gettext na webu Root.cz
  • Gettextový překladač pro PHP framework Nette – neplatný odkaz !
Projekt GNU
Historie
GNU's not a Unix
Licence
Software
Stoupenci
  • Robert J. Chassell
  • Loïc Dachary
  • Ricardo Galli
  • Georg C. F. Greve
  • Federico Heinz
  • Benjamin Mako Hill
  • Bradley M. Kuhn
  • Eben Moglen
  • Brett Smith
  • Richard Stallman
  • John Sullivan
  • Leonard H. Tower ml.
  • Ostatní