Converter PHP a .po e á inversa

De Proxecto trasno

Este como está disponible en File:flag_es.png castellano en el wiki de Galpon.
This HowTo is available in File:flag_en.png english in the in this wiki.

Introdución

Trala publicación do como para facer a conversión html<>po —dispoñíbel en File:flag_gl.png galego, File:flag_es.png castelán e File: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

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

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

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

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

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.


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

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


Fig. num. 5 ─ Acceso ao ficheiro info.xml


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


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

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.



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

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.



Erro ao crear a miniatura:
libgomp: Thread creation failed: Resource temporarily unavailable

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

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.



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


Volver ao comezo


Conversión de .po a PHP

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.



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.



Fig. num. 11 ─ Vista da fin do ficheiro coa orde cat
observade o emprego dos nomes HTML


Volver ao comezo


Ficheiro info.xml

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.



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



Volver ao comezo
Ferramentas persoais