Difference between revisions of "Gettext izar en Python e Python+Glade"

From Proxecto Trasno
(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="fontpage"   
+
  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
  
$ cd /home/miguel/Desktop/FONTpage_src-2.0
+
===Xerando o ficheiro de plantilla de tradución===
 
+
xgettext fontpage.py -o locale/fontpage.pot --from-code=utf-8
$ xgettext fontpage.py -o locale/fontpage.pot --from-code=utf-8 -i
+
ou
 
+
xgettext -k_ -kN_ -o mensaxes.pot *.py *.h
$ msginit -o locale/es.po -i locale/fontpage.pot
+
o parámetro
 
+
  --from-code=utf-8
$ msginit -o locale/gl.po -i locale/fontpage.pot
+
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="purrr"   
+
  APP="nome_aplicativo"   
  DIR="/usr/local/lib/purrr/po"   
+
  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 de tradución:
+
==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 sea posible crear traducciones para diferentes idiomas es necesario crear un archivo para cada una. Para esto se utiliza 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.

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:


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 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.