GNU Gettext
GNU Gettext
Nyitrai István
2008. október 22.
Nyitrai István GNU Gettext 1/25
GNU GettextTartalom
1 BevezetésÁltalánosan a lokalizációrólNyelvi támogatás
2 gettextMi is az a gettextSegédprogramokFájlokgettext a Java programokbanUtómunkálatok
Nyitrai István GNU Gettext 2/25
GNU GettextBevezetés
Nem mindenki beszél angolul
Nem mindenki beszél angolul
Az emberek 95% nem angol anyanyelvű
Fedora: 6 millió telepítés, 60%-át nem angolulGnome: 75 nyelv, 30% UIWordpress.com: 120 nyelvWikipedia: 150 nyelv
Nyitrai István GNU Gettext 3/25
GNU GettextBevezetés
Nem mindenki beszél angolul
Nem mindenki beszél angolul
Az emberek 95% nem angol anyanyelvűFedora: 6 millió telepítés, 60%-át nem angolul
Gnome: 75 nyelv, 30% UIWordpress.com: 120 nyelvWikipedia: 150 nyelv
Nyitrai István GNU Gettext 3/25
GNU GettextBevezetés
Nem mindenki beszél angolul
Nem mindenki beszél angolul
Az emberek 95% nem angol anyanyelvűFedora: 6 millió telepítés, 60%-át nem angolulGnome: 75 nyelv, 30% UI
Wordpress.com: 120 nyelvWikipedia: 150 nyelv
Nyitrai István GNU Gettext 3/25
GNU GettextBevezetés
Nem mindenki beszél angolul
Nem mindenki beszél angolul
Az emberek 95% nem angol anyanyelvűFedora: 6 millió telepítés, 60%-át nem angolulGnome: 75 nyelv, 30% UIWordpress.com: 120 nyelv
Wikipedia: 150 nyelv
Nyitrai István GNU Gettext 3/25
GNU GettextBevezetés
Nem mindenki beszél angolul
Nem mindenki beszél angolul
Az emberek 95% nem angol anyanyelvűFedora: 6 millió telepítés, 60%-át nem angolulGnome: 75 nyelv, 30% UIWordpress.com: 120 nyelvWikipedia: 150 nyelv
Nyitrai István GNU Gettext 3/25
GNU GettextBevezetés
Nyelvi támogatás
Nyelvi támogatás részei
Karakterek és kódkészletekPénznemDátumokSzámokÜzenetek
Nyitrai István GNU Gettext 4/25
GNU GettextBevezetés
Nyelvi támogatás
Translation Project
Céljuk: minél több program legyen többnyelvűStatisztika a csatlakozott projektek helyzetérőlLevelezőlista a fordítócsapatoknakGNU gettext
A kódra tett hatás legyen minimális
Nyitrai István GNU Gettext 5/25
GNU Gettextgettext
Mi is az a gettext
Mi is az a gettext
ProgramcsomagProgramozási szabályokSegédprogramokFutásidejű függvénykönyvtárak
Nyitrai István GNU Gettext 6/25
GNU Gettextgettext
Mi is az a gettext
gettext használata
A fordítható üzenetek megjelöléseA megjelölt üzeneteket kigyűjtéseAz üzenetek lefordításaA fordítás visszanyerése
Nyitrai István GNU Gettext 7/25
GNU Gettextgettext
Segédprogramok
xgettext
Megjelölt szövegek kigyűjtése sablon fájlbaLinux alatt „elfedhető”
Nyitrai István GNU Gettext 8/25
GNU Gettextgettext
Segédprogramok
msginit
PO fájl készítése
PO fájl fejlécének inicializálásaPélda: msginit �locale hu �input=hello.pot
Nyitrai István GNU Gettext 9/25
GNU Gettextgettext
Segédprogramok
msginit
PO fájl készítésePO fájl fejlécének inicializálása
Példa: msginit �locale hu �input=hello.pot
Nyitrai István GNU Gettext 9/25
GNU Gettextgettext
Segédprogramok
msginit
PO fájl készítésePO fájl fejlécének inicializálásaPélda: msginit �locale hu �input=hello.pot
Nyitrai István GNU Gettext 9/25
GNU Gettextgettext
Segédprogramok
msgfmt
PO fájlból készít MO vagy egyéb katalógus fájlt
Példa: msgfmt �java2 -d ../src -r
hello.i18n.Translation -l hu hu.po
Nyitrai István GNU Gettext 10/25
GNU Gettextgettext
Segédprogramok
msgfmt
PO fájlból készít MO vagy egyéb katalógus fájltPélda: msgfmt �java2 -d ../src -r
hello.i18n.Translation -l hu hu.po
Nyitrai István GNU Gettext 10/25
GNU Gettextgettext
Fájlok
PO fájl
Bejegyzésekből (entry) állHárom fajta bejegyzés:
1 Egyszerű2 Többesszámú3 Fejléc
Nyitrai István GNU Gettext 11/25
GNU Gettextgettext
Fájlok
Egyszerű bejegyzés
white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string
Nyitrai István GNU Gettext 12/25
GNU Gettextgettext
Fájlok
Egyszerű bejegyzés
white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string
Nyitrai István GNU Gettext 12/25
GNU Gettextgettext
Fájlok
Egyszerű bejegyzés
white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string
Nyitrai István GNU Gettext 12/25
GNU Gettextgettext
Fájlok
Egyszerű bejegyzés
white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string
Nyitrai István GNU Gettext 12/25
GNU Gettextgettext
Fájlok
Egyszerű bejegyzés
white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string
Nyitrai István GNU Gettext 12/25
GNU Gettextgettext
Fájlok
Egyszerű bejegyzés
white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string
Nyitrai István GNU Gettext 12/25
GNU Gettextgettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singularmsgid_plural untranslated-string-pluralmsgstr[0] translated-string-case-0...msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
GNU Gettextgettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singularmsgid_plural untranslated-string-pluralmsgstr[0] translated-string-case-0...msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
GNU Gettextgettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singularmsgid_plural untranslated-string-pluralmsgstr[0] translated-string-case-0...msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
GNU Gettextgettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singularmsgid_plural untranslated-string-pluralmsgstr[0] translated-string-case-0...msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
GNU Gettextgettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singularmsgid_plural untranslated-string-pluralmsgstr[0] translated-string-case-0...msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
GNU Gettextgettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singularmsgid_plural untranslated-string-pluralmsgstr[0] translated-string-case-0...msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
GNU Gettextgettext
Fájlok
Fejléc bejegyzés
Főleg informális tartalom, ettől azért érdekesebb aprogramozás
Nyitrai István GNU Gettext 14/25
GNU Gettextgettext
Fájlok
Sablon fájl
Ugyanaz, mint a PO fájl, de:A fejléce nincs kitöltveNincs benne fordítás
Nyitrai István GNU Gettext 15/25
GNU Gettextgettext
Fájlok
Katalógus fájl
PO fájlból készülA program számára is olvasható formátum
Nyitrai István GNU Gettext 16/25
GNU Gettextgettext
gettext a Java programokban
Emlékeztető
A fordítható üzenetek megjelöléseA megjelölt üzenetetek kigyűjtéseAz üzenetek lefordításaA fordítás visszanyerése
Nyitrai István GNU Gettext 17/25
GNU Gettextgettext
gettext a Java programokban
Ami mindig kell
import gnu.gettext.GettextResource;import java.util.Locale;import java.util.MissingResourceException;import java.util.ResourceBundle;ResourceBundle catalog;
Nyitrai István GNU Gettext 18/25
GNU Gettextgettext
gettext a Java programokban
Ami mindig kell
import gnu.gettext.GettextResource;import java.util.Locale;import java.util.MissingResourceException;import java.util.ResourceBundle;ResourceBundle catalog;
Nyitrai István GNU Gettext 18/25
GNU Gettextgettext
gettext a Java programokban
Ami mindig kell
import gnu.gettext.GettextResource;import java.util.Locale;import java.util.MissingResourceException;import java.util.ResourceBundle;ResourceBundle catalog;
Nyitrai István GNU Gettext 18/25
GNU Gettextgettext
gettext a Java programokban
Ami mindig kell
import gnu.gettext.GettextResource;import java.util.Locale;import java.util.MissingResourceException;import java.util.ResourceBundle;ResourceBundle catalog;
Nyitrai István GNU Gettext 18/25
GNU Gettextgettext
gettext a Java programokban
Ami mindig kell
import gnu.gettext.GettextResource;import java.util.Locale;import java.util.MissingResourceException;import java.util.ResourceBundle;ResourceBundle catalog;
Nyitrai István GNU Gettext 18/25
GNU Gettextgettext
gettext a Java programokban
Ami mindig kell
import gnu.gettext.GettextResource;import java.util.Locale;import java.util.MissingResourceException;import java.util.ResourceBundle;ResourceBundle catalog;
Nyitrai István GNU Gettext 18/25
GNU Gettextgettext
gettext a Java programokban
Trükk, hogy még egyszerűbb legyen
try {
catalog = ResourceBundle.getBundle(
"hello.i18n.Translation");
} catch (MissingResourceException e) {
catalog = ResourceBundle.getBundle(
"hello.i18n.Translation", Locale.ENGLISH);
}
Nyitrai István GNU Gettext 19/25
GNU Gettextgettext
gettext a Java programokban
Szöveg megjelölése
String simple = GettextResource.gettext(
catalog,"Hello World!");
String error = MessageFormat.format(
GettextResource.gettext(catalog,
"File {0} is not existing or readable"),
new Object[]{foofilename});
String plural_1 = GettextResource.ngettext(
catalog,"Hello World!",
"Hello girls!", 1);
Nyitrai István GNU Gettext 20/25
GNU Gettextgettext
Utómunkálatok
Megjelölt üzeneteket kigyűjtése
1 xgettext: xgettext �from-code=utf-8 -o hello.pot
../src/hello/*.java
2 intltool:
POTFILES.inintltool-update -p -g hello
Nyitrai István GNU Gettext 21/25
GNU Gettextgettext
Utómunkálatok
Megjelölt üzeneteket kigyűjtése
1 xgettext: xgettext �from-code=utf-8 -o hello.pot
../src/hello/*.java
2 intltool:
POTFILES.inintltool-update -p -g hello
Nyitrai István GNU Gettext 21/25
GNU Gettextgettext
Utómunkálatok
Megjelölt üzeneteket kigyűjtése
1 xgettext: xgettext �from-code=utf-8 -o hello.pot
../src/hello/*.java
2 intltool:POTFILES.in
intltool-update -p -g hello
Nyitrai István GNU Gettext 21/25
GNU Gettextgettext
Utómunkálatok
Megjelölt üzeneteket kigyűjtése
1 xgettext: xgettext �from-code=utf-8 -o hello.pot
../src/hello/*.java
2 intltool:POTFILES.inintltool-update -p -g hello
Nyitrai István GNU Gettext 21/25
GNU Gettextgettext
Utómunkálatok
Az üzeneteket lefordítása
1 msginit -l hu -i hello.pot
2 KBabel, Poedit programokkal fordítás
Nyitrai István GNU Gettext 22/25
GNU Gettextgettext
Utómunkálatok
Az üzeneteket lefordítása
1 msginit -l hu -i hello.pot2 KBabel, Poedit programokkal fordítás
Nyitrai István GNU Gettext 22/25
GNU Gettextgettext
Utómunkálatok
A fordítás visszanyerése
msgfmt �java2 -d ../src -r
hello.i18n.Translation -l hu hu.po
A .class becsomagolása a jar fájlbaA program kész is van!
Nyitrai István GNU Gettext 23/25
GNU Gettextgettext
Utómunkálatok
A fordítás visszanyerése
msgfmt �java2 -d ../src -r
hello.i18n.Translation -l hu hu.po
A .class becsomagolása a jar fájlba
A program kész is van!
Nyitrai István GNU Gettext 23/25
GNU Gettextgettext
Utómunkálatok
A fordítás visszanyerése
msgfmt �java2 -d ../src -r
hello.i18n.Translation -l hu hu.po
A .class becsomagolása a jar fájlbaA program kész is van!
Nyitrai István GNU Gettext 23/25
GNU GettextKérdés?
Nyitrai István GNU Gettext 24/25
GNU GettextKérdés?
Nyitrai István GNU Gettext 25/25