gnu gettext

53
GNU Gettext GNU Gettext Nyitrai István 2008. október 22. Nyitrai István GNU Gettext 1/25

Upload: sianis

Post on 15-Jan-2015

722 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: GNU Gettext

GNU Gettext

GNU Gettext

Nyitrai István

2008. október 22.

Nyitrai István GNU Gettext 1/25

Page 2: GNU Gettext

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

Page 3: GNU Gettext

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

Page 4: GNU Gettext

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

Page 5: GNU Gettext

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

Page 6: GNU Gettext

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

Page 7: GNU Gettext

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

Page 8: GNU Gettext

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

Page 9: GNU Gettext

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

Page 10: GNU Gettext

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

Page 11: GNU Gettext

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

Page 12: GNU Gettext

GNU Gettextgettext

Segédprogramok

xgettext

Megjelölt szövegek kigyűjtése sablon fájlbaLinux alatt „elfedhető”

Nyitrai István GNU Gettext 8/25

Page 13: GNU Gettext

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

Page 14: GNU Gettext

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

Page 15: GNU Gettext

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

Page 16: GNU Gettext

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

Page 17: GNU Gettext

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

Page 18: GNU Gettext

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

Page 19: GNU Gettext

GNU Gettextgettext

Fájlok

Egyszerű bejegyzés

white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string

Nyitrai István GNU Gettext 12/25

Page 20: GNU Gettext

GNU Gettextgettext

Fájlok

Egyszerű bejegyzés

white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string

Nyitrai István GNU Gettext 12/25

Page 21: GNU Gettext

GNU Gettextgettext

Fájlok

Egyszerű bejegyzés

white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string

Nyitrai István GNU Gettext 12/25

Page 22: GNU Gettext

GNU Gettextgettext

Fájlok

Egyszerű bejegyzés

white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string

Nyitrai István GNU Gettext 12/25

Page 23: GNU Gettext

GNU Gettextgettext

Fájlok

Egyszerű bejegyzés

white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string

Nyitrai István GNU Gettext 12/25

Page 24: GNU Gettext

GNU Gettextgettext

Fájlok

Egyszerű bejegyzés

white-spaceMegjegyzésekmsgctxt contextmsgid untranslated-stringmsgstr translated-string

Nyitrai István GNU Gettext 12/25

Page 25: GNU Gettext

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

Page 26: GNU Gettext

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

Page 27: GNU Gettext

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

Page 28: GNU Gettext

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

Page 29: GNU Gettext

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

Page 30: GNU Gettext

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

Page 31: GNU Gettext

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

Page 32: GNU Gettext

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

Page 33: GNU Gettext

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

Page 34: GNU Gettext

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

Page 35: GNU Gettext

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

Page 36: GNU Gettext

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

Page 37: GNU Gettext

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

Page 38: GNU Gettext

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

Page 39: GNU Gettext

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

Page 40: GNU Gettext

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

Page 41: GNU Gettext

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

Page 42: GNU Gettext

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

Page 43: GNU Gettext

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

Page 44: GNU Gettext

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

Page 45: GNU Gettext

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

Page 46: GNU Gettext

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

Page 47: GNU Gettext

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

Page 48: GNU Gettext

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

Page 49: GNU Gettext

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

Page 50: GNU Gettext

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

Page 51: GNU Gettext

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

Page 52: GNU Gettext

GNU GettextKérdés?

Nyitrai István GNU Gettext 24/25

Page 53: GNU Gettext

GNU GettextKérdés?

Nyitrai István GNU Gettext 25/25