Converter PHP a .po e á inversa

From Proxecto Trasno

Este como está disponible en Flag es.png castellano en el wiki de Galpon.
This HowTo is available in Flag en.png english in the in this wiki.

Introdución[edit]

Trala publicación do como para facer a conversión html<>po —dispoñíbel en Flag gl.png galego, Flag es.png castelán e Flag en.png inglés— algúns compañeiros pediron un manual semellante a ese sobre a conversión php<>po.

Como no caso citado, propúxenme facer un manual pensado, inicialmente, para que os desenvolvedores fornezan un método estándar para a tradución, aos tradutores sen perfil técnico, serve tamén para aqueles tradutores máis avanzados que queren simplificar procesos, ou fornecer métodos máis doados a compañeiros de equipo.

Neste documento imos ver os seguintes pasos para completar o proceso:

Traballo a cargo do(s) desenvolvedor(es) ou do coordinador de traducións
1 Preparación das ferramentas e ficheiros
2 Conversión de PHP a .po
Traballo a cargo do(s) tradutor(es)
3 Proceso de tradución
Traballo a cargo do(s) desenvolvedor(es) ou do coordinador de traducións
4 Conversión de .po a PHP
5 Ficheiro info.xml

Documentación de base


Preparación das ferramentas e ficheiros[edit]

Necesitamos ter instalado:

  • o paquete de ferramentas de tradución «translate-toolkit» e as de desenvolvemento «python» e «python-dev»
  • En Debian: apt-get install translate-toolkit python python-dev

A suxestión dun dos solicitantes deste como, emprego como exemplo os ficheiros de tradución do aplicativo SimpleInvoices.

Nota: moi importante!, este é un caso concreto, polo que a obtención dos paquetes a traducir dependerá de cada caso en particular.


Creación da estrutura de directorios que imos precisar[edit]

Cada quen aplicará o directorio de inicio que mellor lle acaia, neste manual seguirei o costume de facelo no directorio principal do usuario falando en prata, no /home/usuario ou ~/.

  • Creamos o cartafol de traballo:
mkdir ~/SimpleInvoices
  • Creamos, dentro deste cartafol SimpleInvoice outros dous cartafoles, un no que xeraremos o ficheiro .po de tradución (o l10n), e outro no que xeraremos o traballo final (o gl).
cd ~/SimpleInvoices
mkdir l10n gl

Loxicamente estes pasos anteriores fanse nun terminal.

Volver ao comezo


Obtención de ficheiros[edit]

Lembrade o aviso anterior:

Nota: moi importante!, este é un caso concreto, polo que a obtención dos paquetes a traducir dependerá de cada caso en particular.

No caso do SimpleInvoices, os paquetes de tradución atópanse en:

http://code.google.com/p/simpleinvoices/source/browse/#svn/branches/stable-2011-2/lang/gl_ES


Simpleinvoices-gl ES.png

Fig. num. 1 ─ Vista da páxina do svn de SimpleInvoices (marcado o galego)


Se o descargamos directamente, a nós chéganos en formato HTML, polo que hai que acceder a:

http://code.google.com/p/simpleinvoices/source/browse/branches/stable-2011-2/lang/gl_ES/lang.php
Nota: isto faise simplemente premendo á dereita sobre o nome do ficheiro «lang.php».


Simpleinvoices-vrf.png

Fig. num. 2 ─ Vista do ficheiro de idioma na páxina do svn de SimpleInvoices


Nota:

Neste caso xa dispomos dun ficheiro parcialmente traducido, Veremos que nas cadeas orixe non aparece o inglés, senón o xa traducido ao galego, isto é normal, xa que en PHP empregase a técnica de asignación de valor (de cadea de texto) por variábel. Neste caso o único que nos permite é facer correccións, mais non poderemos comprobar a calidade da tradución ao non ter o idioma de orixe como referencia, polo que aconsello que descarguemos (tamén ?) o ficheiro en inglés en_GB.

Xa que esa será a forma habitual de traballo, seguirei o manual como se partísemos de cero, é dicir, como se non houbese ningún ficheiro para o galego.


Simpleinvoices-en GB.png

Fig. num. 3 ─ Vista de detalle da páxina do svn de SimpleInvoices (marcado o inglés)


Nesta nova vista, á esquerda, prememos View raw file e veredes que muda o enderezo na barra do navegador a:

http://simpleinvoices.googlecode.com/svn/branches/stable-2011-2/lang/en_GB/lang.php


Simpleinvoices-vrf-en GB.png

Fig. num. 4 ─ Vista do ficheiro de idioma en bruto (raw)


Seleccionamos e copiamos o enderezo no navegador (Ctrl+L e Ctrl+C na maioría dos navegadores) e, nun terminal, executamos:

cd ~/SimpleInvoices && wget enderezo_copiado

que neste momento é:

cd ~/SimpleInvoices && wget http://simpleinvoices.googlecode.com/svn/branches/stable-2011-2/lang/en_GB/lang.php

Tende en conta que co tempo vai cambiar, así que non vos fiedes.

Xa que estamos, imos descargar tamén o ficheiro info.xml do que falaremos ao final.

cd ~/SimpleInvoices && wget http://simpleinvoices.googlecode.com/svn/branches/stable-2011-2/lang/en_GB/info.xml


Simpleinvoices-info.png
Fig. num. 5 ─ Acceso ao ficheiro info.xml


Nota: Para obter o enderezo seguimos os mesmo procedemento que no caso do lang.php


Cartafol-simpleinvoices 1.png
Fig. num. 6 ─ Aspecto do noso cartafol ~/SimpleInvoices neste momento
poderemos comprobar que os cartafoles gl e máis o l10n aínda están baleiros


Volver ao comezo


Conversión de PHP a .po[edit]

Crear os ficheiros de tradución «.po» a partires do «.php» orixinal.

	php2po lang.php l10n/

	   ↓       ↓      ↓
	   ↓       ↓      nome que lle damos ao cartafol no que imos gardar os «.po»
	   ↓       nome do ficheiro «.pho» orixinal
	   orde de conversión php a(to) po

Unha vez executada a orde, comprobaremos se foi creado o ficheiro «.po» coa orde «ls l10n».

Como vemos na imaxe, a orde execútase desde o cartafol SimpleInvoices.


Cartafol-simpleinvoices 2.png
Fig. num. 7 ─ Unha vez executada a orde de conversión podemos comprobar
que xa temos un ficheiro «lang.po» para traducir


Nota:

Existe outra posibilidade, extraer os ficheiros PHP a «.pot» esta é unha boa forma de xerar «actualizadores». É máis sinxela para o desenvolvedor/coordenador, porén algo máis complexa de uso para os tradutores cun baixo perfil técnico.

A orde sería:   php2po -P lang.php l10n/  na que a opción -P indica que a extracción se faga a ficheiros .pot.


Volver ao comezo


Proceso de tradución[edit]

Unha vez que xa dispomos dun ficheiro «.po» procedemos a traducilo como adoitamos facelo, empregando as ferramentas de CAT (Tradución Asistida por Computador) que mellor se adapten a nós. Outra posibilidade é enviar estes ficheiros a algún servizo de Tradución en Web, como Pootle ou Transifex.


Poedit.png Virtaal.png
Lokalize.png Omegat.png
Fig. num. 8 ─ Vista de distintas interfaces de tradución:
PoEdit, Virtaal, Lokalize e OmegaT


Neste punto é importante salientar que non é necesario xerar o ficheiro binario «.mo».

Volver ao comezo


Codificación de caracteres[edit]

Con frecuencia atopámonos con aplicativos que non respectan a codificación UTF-8 e seguen a empregar a codificación iso-8859-1, este é un deses casos, polo que se escribimos directamente «Área» veremos que nos vai mostrar algo como «Ãirea», polo que teremos que escribir o nome HTML do carácter«&Aacute;rea».

A seguir indico os caracteres máis frecuentes, para ver outros caracteres que vos poidan facer falta, visitade (p.ex) este web: http://www.ascii-code.com/.

carácter nome HTML carácter nome HTML carácter nome HTML
á &aacute; Á &Aacute; & &amp;
é &eacute; É &Eacute; " &quot;
í &iacute; Í &Iacute; « &laquo;
ó &oacute; Ó &Oacute; » &raquo;
ú &uacute; Ú &Uacute; < &lt;
> &gt;
ï &iuml; Ï &Iuml; &euro;
ü &uuml; Ü &Uuml; &hellip;
© &copy;
ñ &ntilde; Ñ &Ntilde; ® &reg;
¦ &brvbar;
carácter descrición nome HTML
U-0096 (raia media) &ndash;
U-0097 (raia longa) &mdash;
« » espazo forzado - irrompíbel &nbsp;
@ ? ! $ = / \ [ ] ( ) { } | ~ % escríbense igual


Por mor deste pequeno conflito coas tiles e os nomes HTML, recomendo que empreguedes un aplicativo de CAT que teña marcado, como é o caso de Virtaal e Lokalize.


Virtaal-nomesHTML.png Lokalize-nomesHTML.png
Fig. num. 9 ─ Vistas do Virtaal e Lokalize co marcado a cores dos nomes HTML


Volver ao comezo


Conversión de .po a PHP[edit]

Crear os ficheiros «.html» xa traducidos a partires dos «.po» que estivemos (ou estiveron) a traducir.

	po2php -t lang.php l10n/ gl/

	   ↓	↓     ↓      ↓   ↓
	   ↓    ↓     ↓      ↓   nome que lle dimos ao cartafol de destino
	   ↓    ↓     ↓      ↓   neste caso empregamos o indicador do idioma galego «gl»
	   ↓    ↓     ↓      cartafol no que están os ficheiros «.po» xa traducidos
	   ↓    ↓     ficheiro orixinal, para seren empregado como «modelo»
	   ↓    opción de uso de modelos (t de template)
	   orde de conversión po a(to) php

Unha vez executada a orde, comprobaremos se foi creado o ficheiro «.php» coa orde «ls gl».

Como no caso de php2po, e como vemos na imaxe, a orde execútase desde o cartafol SimpleInvoices.


Cartafol-simpleinvoices 3.png
Fig. num. 10 ─ Unha vez executada a orde de conversión podemos comprobar
que xa temos un ficheiro «lang.php» traducido


Podemos facer unha comprobación rápida coa orde: cat gl/lang.ph.


Cartafol-simpleinvoices 4.png
Fig. num. 11 ─ Vista da fin do ficheiro coa orde cat
observade o emprego dos nomes HTML


Volver ao comezo


Ficheiro info.xml[edit]

Xa faltou máis. O que nos queda é unha cousa moi sinxela, que deberemos solucionar empregando un editor de texto sinxelo que empregue coloreado en función do código, hoxe en día faino a maioría dos que acompañan a unha distribución, ou, no peor dos casos, empregan un engadido para facelo. Os exemplos seguintes son capturas do editor Gedit.

Como nas imaxes anexas queda moi claro o que hai que facer, non vou a estenderme máis.


Info.xml en.png Info.xml gl.png
Fig. num. 12 ─ Vistas do ficheiro«info.xml» orixinal (en_GB) e como debemos modificalo



Volver ao comezo