Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
GNU Gettext
1. GNU Gettext
GNU Gettext
Nyitrai István
2008. október 22.
Nyitrai István GNU Gettext 1/25
2. GNU Gettext
Tartalom
1 Bevezetés
Általánosan a lokalizációról
Nyelvi támogatás
2 gettext
Mi is az a gettext
Segédprogramok
Fájlok
gettext a Java programokban
Utómunkálatok
Nyitrai István GNU Gettext 2/25
3. GNU Gettext
Bevezetés
Nem mindenki beszél angolul
Nem mindenki beszél angolul
Az emberek 95% nem angol anyanyelvű
Nyitrai István GNU Gettext 3/25
4. GNU Gettext
Bevezeté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
Nyitrai István GNU Gettext 3/25
5. GNU Gettext
Bevezeté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% UI
Nyitrai István GNU Gettext 3/25
6. GNU Gettext
Bevezeté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% UI
Wordpress.com: 120 nyelv
Nyitrai István GNU Gettext 3/25
7. GNU Gettext
Bevezeté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% UI
Wordpress.com: 120 nyelv
Wikipedia: 150 nyelv
Nyitrai István GNU Gettext 3/25
8. GNU Gettext
Bevezetés
Nyelvi támogatás
Nyelvi támogatás részei
Karakterek és kódkészletek
Pénznem
Dátumok
Számok
Üzenetek
Nyitrai István GNU Gettext 4/25
9. GNU Gettext
Bevezetés
Nyelvi támogatás
Translation Project
Céljuk: minél több program legyen többnyelvű
Statisztika a csatlakozott projektek helyzetéről
Levelezőlista a fordítócsapatoknak
GNU gettext
A kódra tett hatás legyen minimális
Nyitrai István GNU Gettext 5/25
10. GNU Gettext
gettext
Mi is az a gettext
Mi is az a gettext
Programcsomag
Programozási szabályok
Segédprogramok
Futásidejű függvénykönyvtárak
Nyitrai István GNU Gettext 6/25
11. GNU Gettext
gettext
Mi is az a gettext
gettext használata
A fordítható üzenetek megjelölése
A megjelölt üzeneteket kigyűjtése
Az üzenetek lefordítása
A fordítás visszanyerése
Nyitrai István GNU Gettext 7/25
12. GNU Gettext
gettext
Segédprogramok
xgettext
Megjelölt szövegek kigyűjtése sablon fájlba
Linux alatt „elfedhető”
Nyitrai István GNU Gettext 8/25
13. GNU Gettext
gettext
Segédprogramok
msginit
PO fájl készítése
Nyitrai István GNU Gettext 9/25
14. GNU Gettext
gettext
Segédprogramok
msginit
PO fájl készítése
PO fájl fejlécének inicializálása
Nyitrai István GNU Gettext 9/25
15. GNU Gettext
gettext
Segédprogramok
msginit
PO fájl készítése
PO fájl fejlécének inicializálása
Példa: msginit locale hu input=hello.pot
Nyitrai István GNU Gettext 9/25
16. GNU Gettext
gettext
Segédprogramok
msgfmt
PO fájlból készít MO vagy egyéb katalógus fájlt
Nyitrai István GNU Gettext 10/25
17. GNU Gettext
gettext
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
18. GNU Gettext
gettext
Fájlok
PO fájl
Bejegyzésekből (entry) áll
Három fajta bejegyzés:
1 Egyszerű
2 Többesszámú
3 Fejléc
Nyitrai István GNU Gettext 11/25
19. GNU Gettext
gettext
Fájlok
Egyszerű bejegyzés
white-space
Megjegyzések
msgctxt context
msgid untranslated-string
msgstr translated-string
Nyitrai István GNU Gettext 12/25
20. GNU Gettext
gettext
Fájlok
Egyszerű bejegyzés
white-space
Megjegyzések
msgctxt context
msgid untranslated-string
msgstr translated-string
Nyitrai István GNU Gettext 12/25
21. GNU Gettext
gettext
Fájlok
Egyszerű bejegyzés
white-space
Megjegyzések
msgctxt context
msgid untranslated-string
msgstr translated-string
Nyitrai István GNU Gettext 12/25
22. GNU Gettext
gettext
Fájlok
Egyszerű bejegyzés
white-space
Megjegyzések
msgctxt context
msgid untranslated-string
msgstr translated-string
Nyitrai István GNU Gettext 12/25
23. GNU Gettext
gettext
Fájlok
Egyszerű bejegyzés
white-space
Megjegyzések
msgctxt context
msgid untranslated-string
msgstr translated-string
Nyitrai István GNU Gettext 12/25
24. GNU Gettext
gettext
Fájlok
Egyszerű bejegyzés
white-space
Megjegyzések
msgctxt context
msgid untranslated-string
msgstr translated-string
Nyitrai István GNU Gettext 12/25
25. GNU Gettext
gettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singular
msgid_plural untranslated-string-plural
msgstr[0] translated-string-case-0
...
msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
26. GNU Gettext
gettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singular
msgid_plural untranslated-string-plural
msgstr[0] translated-string-case-0
...
msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
27. GNU Gettext
gettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singular
msgid_plural untranslated-string-plural
msgstr[0] translated-string-case-0
...
msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
28. GNU Gettext
gettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singular
msgid_plural untranslated-string-plural
msgstr[0] translated-string-case-0
...
msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
29. GNU Gettext
gettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singular
msgid_plural untranslated-string-plural
msgstr[0] translated-string-case-0
...
msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
30. GNU Gettext
gettext
Fájlok
Többesszámú bejegyzés
msgid untranslated-string-singular
msgid_plural untranslated-string-plural
msgstr[0] translated-string-case-0
...
msgstr[N] translated-string-case-n
Nyitrai István GNU Gettext 13/25
31. GNU Gettext
gettext
Fájlok
Fejléc bejegyzés
Főleg informális tartalom, ettől azért érdekesebb a
programozás
Nyitrai István GNU Gettext 14/25
32. GNU Gettext
gettext
Fájlok
Sablon fájl
Ugyanaz, mint a PO fájl, de:
A fejléce nincs kitöltve
Nincs benne fordítás
Nyitrai István GNU Gettext 15/25
33. GNU Gettext
gettext
Fájlok
Katalógus fájl
PO fájlból készül
A program számára is olvasható formátum
Nyitrai István GNU Gettext 16/25
34. GNU Gettext
gettext
gettext a Java programokban
Emlékeztető
A fordítható üzenetek megjelölése
A megjelölt üzenetetek kigyűjtése
Az üzenetek lefordítása
A fordítás visszanyerése
Nyitrai István GNU Gettext 17/25
35. GNU Gettext
gettext
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
36. GNU Gettext
gettext
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
37. GNU Gettext
gettext
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
38. GNU Gettext
gettext
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
39. GNU Gettext
gettext
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
40. GNU Gettext
gettext
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
41. GNU Gettext
gettext
gettext a Java programokban
Trükk, hogy még egyszerűbb legyen
try {
catalog = ResourceBundle.getBundle(
quot;hello.i18n.Translationquot;);
} catch (MissingResourceException e) {
catalog = ResourceBundle.getBundle(
quot;hello.i18n.Translationquot;, Locale.ENGLISH);
}
Nyitrai István GNU Gettext 19/25
42. GNU Gettext
gettext
gettext a Java programokban
Szöveg megjelölése
String simple = GettextResource.gettext(
catalog,quot;Hello World!quot;);
String error = MessageFormat.format(
GettextResource.gettext(catalog,
quot;File {0} is not existing or readablequot;),
new Object[]{foofilename});
String plural_1 = GettextResource.ngettext(
catalog,quot;Hello World!quot;,
quot;Hello girls!quot;, 1);
Nyitrai István GNU Gettext 20/25
43. GNU Gettext
gettext
Utómunkálatok
Megjelölt üzeneteket kigyűjtése
1 xgettext: xgettext from-code=utf-8 -o hello.pot
../src/hello/*.java
Nyitrai István GNU Gettext 21/25
44. GNU Gettext
gettext
Utómunkálatok
Megjelölt üzeneteket kigyűjtése
1 xgettext: xgettext from-code=utf-8 -o hello.pot
../src/hello/*.java
2 intltool:
Nyitrai István GNU Gettext 21/25
45. GNU Gettext
gettext
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
Nyitrai István GNU Gettext 21/25
46. GNU Gettext
gettext
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
47. GNU Gettext
gettext
Utómunkálatok
Az üzeneteket lefordítása
1 msginit -l hu -i hello.pot
Nyitrai István GNU Gettext 22/25
48. GNU Gettext
gettext
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
49. GNU Gettext
gettext
Utómunkálatok
A fordítás visszanyerése
msgfmt java2 -d ../src -r
hello.i18n.Translation -l hu hu.po
Nyitrai István GNU Gettext 23/25
50. GNU Gettext
gettext
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
Nyitrai István GNU Gettext 23/25
51. GNU Gettext
gettext
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
52. GNU Gettext
Kérdés?
Nyitrai István GNU Gettext 24/25
53. GNU Gettext
Kérdés?
Nyitrai István GNU Gettext 25/25