Gettext izar en Python e Python+Glade
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:
Contenido
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('APP', 'DIR', True) _ = gettext.gettext
Exemplo de liñas de código con cadeas preparadas
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 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
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="./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('APP', 'DIR', 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 seguir os métodos de tradución usuais.