Návod na prácu s .po súbormi

Na preklad programov prostredia Gnome sa používajú dva druhy súborov. Súbory s príponami
  • .pot - šablóna pre preklad (obsahuje len texty v pôvodnom jazyku)
  • .po - súbro prekladu (obsahuje pôvodné reťazce spolu s preloženými)

Okrem týchto dvoch typov súborov sa môžete ešte stretnúť so súborom s príponou

  • .merged.po - súbor prekladu aktualizovaný šablónou prekladu

Ak sa počas vášho prekladania zmenia texty v prekladanom súbore, po odoslaní vášho prekladu sa odoslaný preklad automaticky spojí s aktuálnym súborom šablóny .pot čím vznikne nový súbor .merged.po.

Keď chcete prekladať súbor, ktorý pred vami prekladal niekto iný, je potrebné stiahnuť si poslednú verziu .merged.po.

Nástroje na preklad

Odporúčame používať bežný textový editor, najlepšie taký, ktorý má zvýrazňovanie syntaxe pre GNU Gettext a umožňuje skontrolovať preklepy pomocou nástroja Spellchecker

Týmto požadavkám najlepšie vyhovujú programy:

  • gedit (v systémoch linux) - stačí zapnúť Nástroje > Zvýrazniť preklepy

  • jedit (multiplatformový) - návod na zapnutie kontroly preklepov (doplním čoskoro)

Existujú aj nástroje, ktoré sa snažia prekladanie uľahčiť, tieto programy majú však majú aj svoje nedostatky, ktoré bránia ich použitiu. Žiadny z nasledujúcich programov napríklad nezobrazuje kontext od autorov prekladu (riadok msgctx), ktorý je kľúčový pri jednoslovných výrazoch ako "Default" pri ktorých tvar prekladu (predvolený/á/ý, východzí/ia/ie) a ani predchádzajúcu verziu zmeneného originálneho (anglického) reťazca (riadky začínajúce #|).

Tieto programy odporúčame používať len nováčikom, ktorým sa nechce používať nástroje GNU gettext na kotnrolu a preloženie prekladu do binárnej formy, ktoré sú určené pre príkazový riadok

  • Poedit (návod) - odporúčame používať len v Linuxe, lebo vo Windows nemá kontrolu preklepov.

  • Lokalize
  • Gtranslator (iba pre linux)
  • Virtaal - neodporúčame, pri testovaní neakceptoval vzorec pre množné tvary (plural forms) uložený v súbore .po

Výhodou týchto nástrojov sú veci ako:

  • automatické generovanie binárneho .mo súboru, pomocou ktorých je možné preklad otestovať priamo v programe
  • pamäť prekladov
  • možnosť zobraziť viac prekladov naraz
  • integrované vyhľadávanie slov v slovníku OpenTran

Syntax PO súboru

Po súbor sa skladá z dvoch častí

  1. hlavičky
  2. položiek na preklad

Hlavička .po súboru

Keď si zo systému Damned Lies stiahnete .po súbor, ktorý ešte nebol prekladaný, uvidíte správny tvar hlavičky:

   1 # Slovak translation for <nazov modulu>.
   2 # Copyright (C) 2012 <nazov modulu>'s COPYRIGHT HOLDER
   3 # This file is distributed under the same license as the nemiver package.
   4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
   5 #
   6 msgid ""
   7 msgstr ""
   8 "Project-Id-Version: <nazov modulu> <vetva>\n"
   9 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
  10 "product=nemiver&keywords=I18N+L10N&component=general\n"
  11 "POT-Creation-Date: 2012-10-02 15:36+0000\n"
  12 "PO-Revision-Date: 2012-10-02 15:36+0000\n"
  13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
  14 "Language-Team: Slovak <gnome-sk-list AT gnome DOT org>\n"
  15 "Language: sk\n"
  16 "MIME-Version: 1.0\n"
  17 "Content-Type: text/plain; charset=UTF-8\n"
  18 "Content-Transfer-Encoding: 8bit\n"
  19 "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"

Ako je vidieť z príkladu, mnoho údajov je už predvyplnených. Stačí:

  • pridať aktuálny rok pred "<nazov modulu>'s COPYRIGHT HOLDER"

  • prepísať "FIRST AUTHOR <EMAIL@ADDRESS>, YEAR." Napríklad: Jozef Mrkva <mrkva@nieco.sk>, 2012.

  • nastaviť PO-Revision-Date na aktuálny dátum a čas. Napríklad v zime 2.10.2012 o 15:40 nastavíme 2012-10-02 15:40+0100\n. Ak platí letný čas namiesto 0100 nastavíme 0200.
  • nastaviť Last-Translator prepísaním FULL NAME <EMAIL@ADDRESS>. Napríklad Jozef Mrkva <mrkva@nieco.sk>

Pri použití grafických programov určených na preklad, je potrebné skontrolovať si najmä správnosť nastavenia Plural-Forms (určuje tvary množných čísel).

Ak už súbor niekto pre nami prekladal, súbor by mal mať hlavičku správne vyplnenú. V takom prípade stačí

  • pridať aktuálny rok za Copyright (ak je iný ako predošlé)
  • doplniť sa ako ďalší autor v poradí
  • zmeniť položky PO-Revision-Date a Last-Translator.
  • ak modul kontrolujete a používate grafický program, je potrebné nastaviť položku Last-Translator na údaj, ktorý tam bol pred vašou kontrolou

Ak napríklad prekladateľ Jozef Mrkva doplní preklad modulu anjuta, bude hlavička vyzerať nasledovne:

   1 # Slovak translation for anjuta.
   2 # Copyright (C) 2002, 2011, 2012, 2013 anjuta's COPYRIGHT HOLDER
   3 # This file is distributed under the same license as the anjuta package.
   4 # Martin Lacko <lacko@host.sk>, 2002.
   5 # Peter Mráz <etkinator@gmail.com>, 2011, 2012.
   6 # Jozef Mrkva <mrkva@nieco.sk>, 2013.
   7 #
   8 msgid ""
   9 msgstr ""
  10 "Project-Id-Version: anjuta\n"
  11 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
  12 "product=anjuta&keywords=I18N+L10N&component=core application\n"
  13 "POT-Creation-Date: 2013-01-01 11:33+0000\n"
  14 "PO-Revision-Date: 2013-05-06 20:31+0200\n"
  15 "Last-Translator: Jozef Mrkva <mrkva@nieco.sk>\n"
  16 "Language-Team: Slovak <gnome-sk-list AT gnome DOT org>\n"
  17 "Language: sk\n"
  18 "MIME-Version: 1.0\n"
  19 "Content-Type: text/plain; charset=UTF-8\n"
  20 "Content-Transfer-Encoding: 8bit\n"
  21 "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0\n"

Položky na preklad

V tejto časti súboru sa nachádzajú položky na preklad.

Poloha reťazca,reťazec na preklad a preklad

Každá z položiek má minimálne tieto riadky:

  • prázdny riadok oddeľujúci jednotlivé položky
  • riadok začínajúci "#: " s odkazom na súbor alebo viacero súborov, v ktorých sa nachádza reťazec určený na preklad
  • reťazec určený na preklad označený slovom "msgid"
  • reťazec prekladu označený slovom "msgstr"

   1      prázdny riadok
   2      #: odkaz na súbor(y), v ktorom sa daný reťazec nachádza
   3      msgid aktuálny originálny reťazec
   4      msgstr preložený reťazec

Hodnota premennej v reťazci

Ak reťazec obsahuje hodnotu nejakej premennej, nachádza sa pri položke ešte príznak (začínajúci znakmi "#, "), ktorý určuje programovací jazyk (v našom prípade najčastejšie c-format), aby bolo možné správne urobiť syntaktickú analýzu

   1      prázdny riadok
   2      #: odkaz na súbor(y), v ktorom sa daný reťazec nachádza
   3      #, c-format
   4      msgid aktuálny originálny reťazec s hodnotou premennej (napr. %s %d %u)
   5      msgstr preložený reťazec

Nepresný preklad (fuzzy)

Ak vývojári zmenia originálny text alebo doplnia kontext (označený slovom msgctxt), novovygenerovaný text bude niesť príznak nepresného prekladu fuzzy. V prípade, že je súčasne použitý aj iný príznak sú príznaky oddelené čiarkou napr #, fuzzy, c-format.

Ak bol originálny text zmenený, starý text bude označený znakmi "#| ". Pomocou tohto reťazca si môžeme skontrolovať, čo vývojári zmenili a aktualizovať svoj preklad.

Príznakom fuzzy môže položku označiť aj kontrolór, ak si myslí, že preklad je nepresný. Prekladateľ potom preklad položky opraví a príznak zmaže.

   1      prázdny riadok
   2      #: odkaz na súbor(y), v ktorom sa daný reťazec nachádza
   3      #, fuzzy, c-format
   4      #| msgid predchádzajúci originálny reťazec
   5      msgctxt aktuálny kontext od vývojárov
   6      msgid aktuálny originálny reťazec s hodnotou premennej (napr. %s %d %u)
   7      msgstr preložený reťazec

Komentáre od vývojárov

Okrem kontextu môžu vývojári k prekladanému reťazcu poskytnúť aj komentár, ktorý v .po súbore začína znakmi "#. ".

   1      prázdny riadok
   2      #. komentár od vývojárov
   3      #: odkaz na súbor(y), v ktorom sa daný reťazec nachádza
   4      #, fuzzy, c-format
   5      #| msgid predchádzajúci originálny reťazec
   6      msgctxt aktuálny kontext od vývojárov
   7      msgid aktuálny originálny reťazec s hodnotou premennej (napr. %s %d %u)
   8      msgstr preložený reťazec

Komentáre prekladateľov

Do .po súboru môžeme pridať aj svoje komentáre začínajúce znakom "# ".

V našom tíme je zaužívané pravidlo, že každý člen tímu svoje komentáre označuje svojimi iniciálmi. Ak napríklad pridá komentár Jozef Mrkva, bude jeho komentár vyzerať takto "# JM: komentár"

Dobrým zvykom je tiež doplniť komentáre podľa zdrojového kódu, ktoré hovoria, či je text na nejakom ovládacom prvku v okne, v príkazovom riadku, v log súbore alebo ide o reťazec schémy gconf (gconf je niečo ako registy v systéme Windows). Podrobnosti sa nachádzajú v časti Druhy reťazcov a súborov

   1      prázdny riadok
   2      #. komentár od vývojárov
   3      #: odkaz na súbor(y), v ktorom sa daný reťazec nachádza
   4      #, fuzzy, c-format
   5      #| msgid predchádzajúci originálny reťazec
   6      msgctxt aktuálny kontext od vývojárov
   7      msgid aktuálny originálny reťazec s hodnotou premennej (napr. %s %d %u)
   8      msgstr preložený reťazec

Tvary množných čísel

Niektoré položky môžu mať aj tvar pre množné číslo. V takom prípade budú k dispozícii až tri reťazce na preloženie, pretože v slovenčine používame tri tvary množného čísla

  • pre hodnoty 0 a viac ako 5
  • pre hodnotu 1
  • pre hodnoty 2,3 a 4

tieto tvary a ich poradie sú učené vzorcom, ktorý je zapísaný v hlavičke .po súboru. V tíme Gnome sme nastavili vzorec tak aby prekladateľ mohol použiť nasledovnú mnemotechníckú pomôcku:

   1      prázdny riadok
   2      #  komentár prekladateľa
   3      #. komentár od vývojárov
   4      #: odkaz na súbor(y), v ktorom sa daný reťazec nachádza
   5      #, príznak(y)
   6      #| msgctxt predchádzajúci kontext od vývojárov
   7      #| msgid predchádzajúci originálny reťazec pre jednotné číslo
   8      #| msgid_plural predchádzajúci originálny reťazec pre množné číslo
   9      msgctxt aktuálny kontext od vývojárov
  10      msgid aktuálny originálny reťazec pre jednotné číslo
  11      msgid_plural aktuálny originálny reťazec pre množné číslo
  12      msgstr[0] preložený reťazec - tvar pre 0 položiek (v skutočnosti 0 a 5 a viac)
  13      msgstr[1] preložený reťazec - tvar pre 1 položku
  14      msgstr[2] preložený reťazec - tvar pre 2 položky (v skutočnosti 2,3,4)

Nepoužité reťazce

Ak vývojári vymažú časť kódu spolu s reťazcami určenými na preklad. V aktualizovanom .po súbore sa takéto položky nastavia za nepoužité pomocou znakov "#~ ":

   1      prázdny riadok   
   2      #, príznak(y)
   3      #~ msgid aktuálny originálny reťazec
   4      #~ msgstr preložený reťazec

Medzi tieto reťazce sa môžu dostať aj reťazce, ktoré vývojári zmeníli a program, ktorý vytvára .po súbor, nepochopí, že ich má priradiť k položke ako starý reťazec začínajúci znakmi #|. Z tohto dôvodu je dobré prečítať si tieto reťazce, ak bol modul zmenený.

Tieto reťazce môžete z .po zmazať, alebo ich tam môžete nechať, pre prípad, že by vývojári zmenili názor a niektorý z reťazcov znova použili.

Preloženie súboru .po na binárny súbor .mo

Keď chceme spustiť prekladaný program s Keď chceme spustiť prekladaný program s naším prekladom (napríklad kvôli otestovaniu), je potrebné .po súbor najskôr preložiť do binárnej podoby.

Poznámka: Je potrebné mať nainštalovaný balík gettext

Preklad súboru .po na binárny súbor .mo je veľmi jednoduchý. Stačí v príkazovom riadku spustiť

 msgfmt súbor.po
  • Ak chceme modul zároveň skontrolovať, môžeme použiť voľbu -cv (pozri Kontrola súboru .po).
  • Ak chceme binárny súbor rovno umiestniť do cieľového adresára, môžeme použiť voľbu -o

Testovaním binárnej podoby prekladu sa podrobnejšie zaoberá časť Návod na otestovanie prekladu.

Kontrola súboru .po

Ak sa pokúsite do systému Damned Lies odovzdať chybne formátovaný súbor. Zobrazí sa chybové hlásenie, "Súbor .po neprešiel kontrolou 'msgfmt -vc'. Prosím, opravte súbor a opätovne ho odošlite."

Kontrola .po súboru je veľmi jednoduchá, stačí do príkazového riadka napísať:

 msgfmt -vc súbor.po

Výstupom kontroly bude číslo riadka, na ktorom sa chyba nachádza a typ chyby. napr:

 súbor.po:2349 počet formátovacích značiek v 'msgid' a 'msgstr' sa nezhoduje
 súbor.po:2352: neznáme kľúčové slovo "asdf"
 súbor.po:2352:19: syntax error
 súbor.po:2353: koniec riadka uprostred reťazca
 msgfmt: nájdené 4 závažné chyby

V tomto prípade bol problém v tom, že prekladateľ na riadku 2349 zabudol do prekladu napísať formátovaciu značku %s a na riadku 2352 zabudol dať pred znak " znak /.

SlovakTranslation/POSubory (last edited 2013-06-12 09:16:59 by etkinator)