Difference between revisions of "Gettext izar en Python e Python+Glade"
(→Cabeceira) |
|||
Line 13: | Line 13: | ||
gettext.textdomain(APP) | gettext.textdomain(APP) | ||
gettext.bindtextdomain(APP, DIR) | gettext.bindtextdomain(APP, DIR) | ||
− | # gtk.glade.textdomain(APP) | + | <font color="#0000FF">#</font> gtk.glade.textdomain(APP) |
− | # gtk.glade.bindtextdomain(APP, DIR) | + | <font color="#0000FF">#</font> gtk.glade.bindtextdomain(APP, DIR) |
gettext.install('py-gtkshots', 'po', True) | gettext.install('py-gtkshots', 'po', True) | ||
_ = gettext.gettext | _ = gettext.gettext | ||
Line 20: | Line 20: | ||
===Exemplo de liñas de código con cadeas preparadas=== | ===Exemplo de liñas de código con cadeas preparadas=== | ||
except: | except: | ||
− | print >> sys.stderr, | + | print >> sys.stderr, <font color="#0000FF">_("Cannot load Pango")</font> |
raise SystemExit | raise SystemExit | ||
f = commands.getoutput('type -path fc-list') | f = commands.getoutput('type -path fc-list') | ||
if not f: | if not f: | ||
− | print >> sys.stderr, | + | print >> sys.stderr, <font color="#0000FF">_("You need FontConfig to run FONTpage")</font> |
raise SystemExit | raise SystemExit | ||
Line 56: | Line 56: | ||
gettext.textdomain(APP) | gettext.textdomain(APP) | ||
gettext.bindtextdomain(APP, DIR) | gettext.bindtextdomain(APP, DIR) | ||
− | + | <font color="#0000FF">gtk.glade.textdomain(APP) | |
− | + | gtk.glade.bindtextdomain(APP, DIR)</font> | |
gettext.install('py-gtkshots', 'po', True) | gettext.install('py-gtkshots', 'po', True) | ||
_ = gettext.gettext | _ = gettext.gettext |
Latest revision as of 16:59, 4 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 dous procesos:
Contents
Phyton[edit]
Cabeceira[edit]
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 preparadas[edit]
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[edit]
xgettext meu_aplicativo.py -o locale/mensaxes.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
así mesmo podemos empregar o comodín * cando se traballa con máis dun ficheiro
Glade[edit]
Ferramentas utilizadas:
* PyGtk * Glade * Python 2.3 * GNU gettext * Gtk+ 2.4.1 * Libglade 2.4.0
Cabeceira[edit]
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="./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
Extraendo as mensaxes de Glade[edit]
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[edit]
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[edit]
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 seguir os métodos de tradución usuais.