Buenas, os dejo un sencillo script para modificar el código fuente de archivos PHP al formato de gettext.
Se parte de la base que el código está traducido usando un array para las cadenas a traducir, esto es, usamos:
$LANG["buttons"][0]="Botón";
para definir la matriz de traducciones y ésta se almacena en un archivo independiente.
#!/bin/bash # # gtranslate.sh # # Script para convertir cadenas que están guardadas en un array en PHP # como $LANG["button"][0]="Botón"; # al formato de gettext como _('Button') en los archivos .php bajo # el directorio donde se ejecuta el script. # # Script for convert strings that are saved as array in PHP # like $LANG["button"][0]="Botón"; # to gettext format like _('Button') in .php files under script # current path. # # # Es necesario adaptar la variable $LANG_FILE al archivos donde se # encuentran los arrays de traducciones. # La variable $LANG_FILE_ALT se utiliza para excluir otro archivo de # traducciones de ser modificado # # Por cada archivo a modificar, se crea un archivo de backup .bak # Si ya existe un archivo .bak del archivo a modificar, no se realiza # la modificación # # You need to fit the $LANG_FILE var to the file where translation array # are saved. # The $LANG_FILE_ALT var is used to exclude another translation file from # being modified. # # Every file to modify is backed up into .bak file # If .bak of file to be modified already exist, modify won't be made. # # # (c) 2013 - nuxsmin - http://cygnux.org # # Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported. # LANG_FILE="./locales/es_ES.php" LANG_FILE_ALT="./locales/en_US.php" find ./ -name "*.php" | while read FILE;do test "$FILE" = "$LANG_FILE" && continue test "$FILE" = "$LANG_FILE_ALT" && continue echo "$FILE ..." test -e "$FILE.bak" && continue cp $FILE $FILE.bak || continue egrep '^\$LANG\[' $LANG_FILE | while read LINE;do test -z "$LINE" && continue STRIP="$(echo "$LINE" | sed -e 's/;//g' -e 's/\]/\\\]/g' -e 's/\[/\\\[/g' -e 's/\$/\\\$/g' -e 's/\//\\\//g' -e 's/\&/\\\&/g' -e \"s/'/\\\'/g\")" ARR_LANG=`echo "$STRIP" | cut -d "=" -f 1` ARR_LANG_DESC=`echo "$STRIP" | cut -d "=" -f 2 | sed -e 's/"//g' -e 's/\&/\&/g' -e 's/\//\\\//g' -e "s/'/\\\'/g"` sed -i "s/$ARR_LANG/_('$ARR_LANG_DESC')/g" $FILE || exit #break done #break done
Espero que os sirva… 😉