En la traducción de un producto como Alfresco están involucrados más
de 9000 cadenas de caracteres dispersas por más de 300 archivos. La
manera habitual para extender el paquete de idioma es crear un jar con
todos los archivos de traducciones tal y como apuntabamos aquí
. En cualquier caso, trabajar con tantos ficheros en rutas dispersas
dificulta la tarea de traducción. La estructura de este archivo jar es
de este estilo:
cesar@zeus ~/Escritorio/zk-alfresco-langpack_eu_ES-0.1 $ tree -d -L 5 . `-- alfresco |-- messages |-- site-webscripts | |-- com | | `-- atolcd | | `-- components | `-- org | `-- alfresco | |-- components | `-- modules `-- web-extension `-- messages
Para facilitar ese proceso, descomprimimos el jar del paquete donde
se encuentran los archivos de properties
y con este simple
script podemos compactar toda la estructura en un fichero (alltexts.eu
dentro de la carpeta del archivo jar descomprimido):
$ for i in `find alfresco/ -type f`; do echo ""
>> alltexts.eu ; echo "==== $i ====" >>
alltexts.eu ; echo "" >> alltexts.eu ; cat $i
>> alltexts.eu; done
lo que resulta un archivo alltexts.eu con la siguiente pinta:
==== alfresco/messages/workflow-package-messages_eu.properties ==== #Error Messages workflow.package.already.associated.error= ==== alfresco/messages/subscription-service_eu.properties ==== # Subscription service messages subscription.notification.email.subject= subscription_service.err.disabled=
Este es el archivo que entregas para que se traduzca, y una vez
traducido, con este script sencillo de python puedes regenerar toda la
estructura y archivos para generar el nuevo jar:
#! /usr/bin/python from string import join import os fullfile = open('alltexts.eu','r') z = fullfile.read() zz = z.split('====') for i in range(1,len(zz),2): print "File: ", zz[i][1:-1] directorio = join(zz[i][1:-1].split("/")[0:-1], "/") os.system('mkdir -p '+directorio) file = open(zz[i][1:-1],'w') file.write(zz[i+1]) file.close()
Este procedimiento puede ser interesante para tus instancias,
en las que necesitas cambiar literales por defecto de Alfresco. Dado
que puedes subirlo a un svn y replicar la generación del jar para el
idioma correspondiente.