Converter PHP a .po e á inversa
This HowTo is available in
Introdución[edit]
Trala publicación do como para facer a conversión html<>po —dispoñíbel en
castelán e
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
- Traballo a cargo do(s) tradutor(es)
- Traballo a cargo do(s) desenvolvedor(es) ou do coordinador de traducións
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
- En Debian:
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.
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:
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:
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:
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
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.
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: |
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.
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».
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«Á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 |
---|---|---|---|---|---|
á | á | Á | Á | & | & |
é | é | É | É | " | " |
í | í | Í | Í | « | « |
ó | ó | Ó | Ó | » | » |
ú | ú | Ú | Ú | < | < |
> | > | ||||
ï | ï | Ï | Ï | € | € |
ü | ü | Ü | Ü | … | … |
© | © | ||||
ñ | ñ | Ñ | Ñ | ® | ® |
¦ | ¦ |
carácter | descrición | nome HTML |
---|---|---|
– | U-0096 (raia media) | – |
— | U-0097 (raia longa) | — |
« » | espazo forzado - irrompíbel | |
@ ? ! $ = / \ [ ] ( ) { } | ~ % | 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
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.
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
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.
Fig. num. 12 ─ Vistas do ficheiro«info.xml» orixinal (en_GB) e como debemos modificalo