Difference between revisions of "Gettext izar en Python e Python+Glade"
(Nova páxina: "Xa que gran parte dos procesos son comúns a calquera linguaxe de programación, vou referir aquí só os puntos característicos (ou particulares) de Python e Glade. Recomendo a le…") |
|||
Line 4: | Line 4: | ||
* [[Gettext_izar en "Bash scripting"]] | * [[Gettext_izar en "Bash scripting"]] | ||
* [[Gettext_izar en "C"]] | * [[Gettext_izar en "C"]] | ||
+ | |||
==Phyton== | ==Phyton== | ||
===Cabeceira=== | ===Cabeceira=== | ||
import gettext | import gettext | ||
− | APP=" | + | APP="nome_aplicativo" |
DIR="./locale" #/usr/local/share/locale" #/usr/share/locale" | DIR="./locale" #/usr/local/share/locale" #/usr/share/locale" | ||
gettext.textdomain(APP) | gettext.textdomain(APP) | ||
Line 27: | Line 28: | ||
raise SystemExit | raise SystemExit | ||
− | + | ===Xerando o ficheiro de plantilla de tradución=== | |
− | + | xgettext fontpage.py -o locale/fontpage.pot --from-code=utf-8 | |
− | + | ou | |
− | + | xgettext -k_ -kN_ -o mensaxes.pot *.py *.h | |
− | + | o parámetro | |
− | + | --from-code=utf-8 | |
− | + | só é preciso naqueles casos en que o ficheiro fonte .py non estea xa definido como UTF-8 | |
==Glade== | ==Glade== | ||
Line 48: | Line 49: | ||
A Cabeceira é case a mesma que a que leva se fose só Python, agás as dúas liñas que víamos antes comentadas en '''Phython'''. Esta cabeceira '''só''' se engade aos ficheiros '''.py''' xa que os '''.glade''' imos ver a seguir como tratalos. | A Cabeceira é case a mesma que a que leva se fose só Python, agás as dúas liñas que víamos antes comentadas en '''Phython'''. Esta cabeceira '''só''' se engade aos ficheiros '''.py''' xa que os '''.glade''' imos ver a seguir como tratalos. | ||
import gettext | import gettext | ||
− | APP=" | + | APP="nome_aplicativo" |
− | DIR="/usr/local/lib/ | + | DIR="/usr/local/lib/nome_aplicativo/po" |
gettext.textdomain(APP) | gettext.textdomain(APP) | ||
gettext.bindtextdomain(APP, DIR) | gettext.bindtextdomain(APP, DIR) | ||
Line 66: | Line 67: | ||
Non é preciso editar o ficheiro '''.h''', xa se encarga de lelo '''xgettext''' sen máis. | Non é preciso editar o ficheiro '''.h''', xa se encarga de lelo '''xgettext''' sen máis. | ||
− | ===Xerando o ficheiro de tradución=== | + | ===Xerando o ficheiro de plantilla de tradución=== |
xgettext -k_ -kN_ -o mensaxes.pot *.py *.h | xgettext -k_ -kN_ -o mensaxes.pot *.py *.h | ||
Creará un ficheiro de traducción '''mensaxes.pot''' a partires dos códigos fonte '''python' e dos ficheiros '''.h''' xerados por '''intltool-extract''' | Creará un ficheiro de traducción '''mensaxes.pot''' a partires dos códigos fonte '''python' e dos ficheiros '''.h''' xerados por '''intltool-extract''' | ||
− | + | ==Creando ficheiros .po de tradución== | |
− | + | Para que sexa posíbel crear traducións para diferentes idiomas é necesario crear ficheiro para cada unha. Para isto empregase '''msginit'''. | |
− | Para que | + | Para galego: |
+ | msginit -o locale/gl.po -i locale/mensaxes.pot | ||
+ | Para castelán/español | ||
+ | msginit -o locale/es.po -i locale/mensaxes.pot | ||
+ | |||
+ | A partires de aquí xa só hai que segir os métodos de tradución usuais. |
Revision as of 15:52, 3 March 2010
Xa que gran parte dos procesos son comúns a calquera linguaxe de programación, vou referir aquí só os puntos característicos (ou particulares) de Python e Glade.
Recomendo a lectura dos outros dús procesos:
Contents
Phyton
Cabeceira
import gettext APP="nome_aplicativo" DIR="./locale" #/usr/local/share/locale" #/usr/share/locale" gettext.textdomain(APP) gettext.bindtextdomain(APP, DIR) # gtk.glade.textdomain(APP) # gtk.glade.bindtextdomain(APP, DIR) gettext.install('py-gtkshots', 'po', True) _ = gettext.gettext
Exemplo de liñas de código con cadeas preparada
except: print >> sys.stderr, _("Cannot load Pango") raise SystemExit f = commands.getoutput('type -path fc-list') if not f: print >> sys.stderr, _("You need FontConfig to run FONTpage") raise SystemExit
Xerando o ficheiro de plantilla de tradución
xgettext fontpage.py -o locale/fontpage.pot --from-code=utf-8
ou
xgettext -k_ -kN_ -o mensaxes.pot *.py *.h
o parámetro
--from-code=utf-8
só é preciso naqueles casos en que o ficheiro fonte .py non estea xa definido como UTF-8
Glade
Ferramentas utilizadas:
* PyGtk * Glade * Python 2.3 * GNU gettext * Gtk+ 2.4.1 * Libglade 2.4.0
Cabeceira
A Cabeceira é case a mesma que a que leva se fose só Python, agás as dúas liñas que víamos antes comentadas en Phython. Esta cabeceira só se engade aos ficheiros .py xa que os .glade imos ver a seguir como tratalos.
import gettext APP="nome_aplicativo" DIR="/usr/local/lib/nome_aplicativo/po" gettext.textdomain(APP) gettext.bindtextdomain(APP, DIR) gtk.glade.textdomain(APP) gtk.glade.bindtextdomain(APP, DIR) gettext.install('py-gtkshots', 'po', True) _ = gettext.gettext
Extraendo as mensaxes de Glade
Necesitamos intltool, unha utilidade para internacionalizar documentos en XML. Usando Debian abonda con:
apt-get install intltool
O aplicativo intltool-extract extrae as cadeas de texto dun ficheiro glade (no exemplo meuprograma.glade) e xera un ficheiro .h (no exemplo meuprograma.h):
intltool-extract --type="gettext/glade" meuprograma.glade
Non é preciso editar o ficheiro .h, xa se encarga de lelo xgettext sen máis.
Xerando o ficheiro de plantilla de tradución
xgettext -k_ -kN_ -o mensaxes.pot *.py *.h
Creará un ficheiro de traducción mensaxes.pot a partires dos códigos fonte python' e dos ficheiros .h xerados por intltool-extract
Creando ficheiros .po de tradución
Para que sexa posíbel crear traducións para diferentes idiomas é necesario crear ficheiro para cada unha. Para isto empregase msginit. Para galego:
msginit -o locale/gl.po -i locale/mensaxes.pot
Para castelán/español
msginit -o locale/es.po -i locale/mensaxes.pot
A partires de aquí xa só hai que segir os métodos de tradución usuais.