Conversiones masivas PHP - PO - TMX
O traballo aquí proposto parte da necesidade de manexar os ficheiros de tradución do Moodle
| Todo o proceso indicado aquí depende das ferramentas do Translate Toolkit, máis concretamente da ferramenta php2po |
Procedemento base
O primeiro paso e crear un cartafol de traballo que aquí chamaremos PHP-PO
De seguido descargamos os ficheiros que imos empregar
Na Páxina de descargas do Moodle] atopamos a versión 2.4 nesta ligazón buscamos a versión en inglés (considerada a orixinal ou texto matriz) e atopamos un paquete zip co nome en.zip. Buscamos tamén a versión en galego e atopamos un paquete chamado gl.zip.
Descargamos ambos e, neste mesmo cartafol engadimos o script que vai na fin desta páxina, gardámolo co nome xera e dámoslle permisos de execución, co que teremos un cartafol máis ou menos así:
Fig. num. 1 ─ Cartafol inicial de traballo
Dinámica de traballo
- Preparar a estrutura de traballo executando a orde ./xera prepareDir. O script descomprimirá os ZIP onde corresponda e xerará os cartafoles de traballo.
- Converter os PHP orixinais a PO executando a orde ./xera php2po. O script xerará un cartafol chamad po-orixinal, no que teremos os ficheiros PO listos para traducir
- copiar o ficheiro que queiramos traducir cara po-traballo
- traducir e revisar
- A seguir, unha vez conformes coa tradución, enviamos manualmente o ficheiro traducido ao cartafol po-final
- Aínda que non teñamos nada no cartafol po-final, poderemos xerar un ficheiro tmx para compartir o traballo que levamos feito con outro(s) tradutor(es) empregando a orde ./xera po2tmx que xerará un ficheiro, coa data e hora actual no cartafol tmx. Xerará tamén un único PO.
- Como fase final, deberemos xerar os ficheiros PHP en galego, para remitírllelos ao(s) desenvolvedor(es). Empregaremos a orde ./xera po2php, con isto teremos un cartafol chamado gl-php e un arquivo gl.zip.
Fig. num. 2 ─ Vista do cartafol tras executar prepareDir
Executaremos:
xera [prepareDir|php2po|po2php|po2tmx|po-old]
Explicamos os parámetros:
- prepareDir
- Esta funcion fai os preparativos iniciais, descomprimir os .zip e crear algún dos directorios de traballo.
- php2po
- Esta función fai conversións masivas de PHP a PO.
- po2php
- Esta función fai conversións masivas de PO a PHP e xera o arquivo comprimido .zip que emprega Moodle.
- po2tmx
- Esta función xera un tmx a partires de todo o traballo feito.
- po-old
- Esta función fai conversións masivas de PHP a PO. Neste caso está elaborado para facer ficheiros PO a partires de ficheiros PHP xa traducidos, ou con partes traducidas.
Fig. num. 3 ─ Cartafol con todos os pasos do script executados
Alternativa de axuda
En obras
Fig. num. 4 ─ Vista do cartafol OLD
Script xera
#!/bin/bash
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program. If not, see <http://www.gnu.org/licenses/>
# Miguel Anxo Bouzada <mbouzada[fix@]gmail[fix.]com>
# Proxecto Trasno «proxecto[fix@]trasno[fix.]net>
# july 2012
## -
# execute « xera [prepareDir|php2po|po2php|po2tmx|po-old] »
## Asignación de variábeis de nomes de directorios de traballo
## Axuste estes nomes de cartafoles á súa comenencia
## Assigning directory names variables for work
## Set these directory names for your convenience
PHP_Original="en" # No caso de exemplo o « en » de Moodle
PHP_Target="gl" # No caso de exemplo o « gl » que imos crear
Old_PHP="gl" # No caso de exemplo o « gl antigo » de Moodle
Old_PO="po" # No caso de exemplo o « po » que se vai xerar
PO_Original="po-orixe"
PO_Work="po-traballo"
PO_Final="po-final"
tmp4TMX="tmp4tmx"
TMX="tmx"
function prepareDir(){
# Esta función descomprime os ficheiros descargados,
# xera os cartafoles/directorios precisos e coloca os antigos no seu sitio
# This function unzip downloaded archives,
# Creates the required folders/dirs and puts the old in place
[ -d ${PHP_Original} ] && echo "SEMELLA QUE ESTA FUNCIÓN XA FOI EXECUTADA" && exit 0
mkdir OLD ${PO_Work} ${PO_Final}
unzip ${PHP_Original}.zip
mv ${Old_PHP}.zip OLD/
unzip OLD/${Old_PHP}.zip -d OLD/
}
function phpTOpo(){
# Esta función fai conversións masivas de PHP a PO
# This function makes massive conversions of PHP to PO
# listamos o directorio "${PHP_Original}" xa que interésanos todo o que hai nel
ls ./${PHP_Original} > list.txt
[ -d ${PO_Original} ] && rm ${PO_Original}/* || mkdir ${PO_Original}
while read NAME
do
PONAME=`echo $NAME | cut -d. -f1`
php2po ${PHP_Original}/$NAME ${PO_Original}/$PONAME.po
done < list.txt
rm list.txt
}
function poTOphp(){
# Esta función fai conversións masivas de PO a PHP
# e xera o arquivo comprimido .zip que emprega Moodle
# This function makes massive conversions of PO to PHP
# And creates the compressed file. Zip it uses Moodle
# listamos o directorio "${PO_Final}" xa que só nos interesa o que hai nel
ls ./${PO_Final} > list.txt
[ -d ${PHP_Target} ] && rm ${PHP_Target}/* || mkdir ${PHP_Target}
while read NAME
do
PHPNAME=`echo $NAME | cut -d. -f1`
po2php -t ${PHP_Original}/$PHPNAME.php ${PO_Final}/$NAME ${PHP_Target}/$PHPNAME.php
done < list.txt
[ -f ${PHP_Target}.zip ] && rm ${PHP_Target}.zip
zip ${PHP_Target}.zip ${PHP_Target}/*
rm list.txt
}
function poTOtmx(){
# Esta función xera un "TMX" a partires de todo o traballo feito
# This function generates a "TMX" from all the work done
DATA=`date +%d%m%y-%H`
[ -d ${tmp4TMX} ] && rm ${tmp4TMX}/* || mkdir ${tmp4TMX}
[ -d ${TMX} ] && rm ${TMX}/* || mkdir ${TMX}
cp ${PO_Work}/* ${tmp4TMX}/
cp ${PO_Final}/* ${tmp4TMX}/
ls ${tmp4TMX} > list.txt
msgcat -D ${tmp4TMX} -f list.txt -u -o ${TMX}/${DATA}.po
po2tmx ${TMX}/${DATA}.po -l gl ${TMX}/${DATA}.tmx
rm list.txt
}
function po-old(){
# Esta función fai conversións masivas de PHP a PO
# Neste caso está elaborado para facer PO de ficheiros
# PHP xa traducidos, ou con partes traducidas,
# e xa postos, xeramos un PO Total e un oldTMX.
# This function makes massive conversions of PHP to PO
# In this case is made to PO files
# PHP already translated, or translated parts,
# And now stands, we generate a Total PO and oldTMX.
# listamos só o directorio "OLD/${Old_PHP}" xa que só nos interesa o que haia nel
ls OLD/${Old_PHP} > lista.txt
[ -d OLD/${Old_PO} ] && rm OLD/${Old_PO}/* || mkdir OLD/${Old_PO}
while read NAME
do
PONAME=`echo $NAME | cut -d. -f1`
php2po -t ${PHP_Original}/$NAME OLD/${Old_PHP}/$NAME OLD/${Old_PO}/$PONAME.po
done < lista.txt
[ -d OLD/ALL ] && rm OLD/ALL/* || mkdir OLD/ALL
ls OLD/${Old_PO} > lista.txt
msgcat -D OLD/${Old_PO} -f lista.txt -u -o OLD/ALL/ALL.po
po2tmx OLD/ALL/ALL.po -l gl OLD/ALL/oldTMX.tmx
rm lista.txt
}
param=$1
[ $param = "" ] && exit 0
[ $param = prepareDir ] && prepareDir
[ $param = php2po ] && phpTOpo
[ $param = po2php ] && poTOphp
[ $param = po2tmx ] && poTOtmx
[ $param = po-old ] && po-old
#.EOF