KMKey está desarrollado sobre CPS y Zope 2.9.4, con lo que gestiona las traducciones por dos vías distintas: la incorporada por CPS, usando Localizer al estilo Zope 2, y la incorporada por Five al estilo Zope 3. Es importante tener claro qué partes del programa usan cada uno de los tipos de traducción:
-
En general, todo lo que forma parte del código python o TAL se traduce con el sistema de Zope 3, mediante un extractor capaz de localizar las cadenas e incorporarlas en el directorio Producto/locales/idioma/LC_MESSAGES.
-
Las cadenas propias de la configuración via ZMI, como nombres de TABs o Actions, de menús, de campos, etc, se traducen mediante el antiguo sistema de Zope 2. En este caso se carece de extractor, y las cadenas deben ir introduciéndose manualmente en el i18n/default.pot
Para extraer las cadenas a traducir necesitaremos una instancia de Zope 3, perferentemente superior o igual a 3.4.0. Por ejemplo:
wget http://www.zope.org/Products/Zope3/3.4.0c1/Zope-3.4.0c1.tgz
tar xzf Zope-3.4.0c1.tgz
cd Zope-3.4.0c1
./configure –prefix=/usr/local/zope340c1
make
make install
/usr/local/zope340c1/bin/mkzopeinstance -d /usr/local/z3instance
Ahora ya podemos realizar la extracción de cadenas de KMKey y traducirlas. Por ejemplo:
cd Products/KMKeyDefault
/usr/local/z3instance/bin/i18nextract -p . -o locales -d kmkeydefault
/usr/local/z3instance/bin/i18nmergeall -l locales
cd locales/es/LC_MESSAGES/
poedit kmkeydefault.po
Para ver en funcionamiento las nuevas traducciones, recordemos siempre que debemos regenerar los ficheros .mo:
python2.4 ../KMKeyCore/utils/generate_mo_files.py
Para incluir traducciones de Zope 2, deberemos editar manualmente el i18n/default.pot, y añadir las nuevas entradas, sin traducción. Después debemos mezclar con cada uno de los idiomas y traducir.
msgmerge -o es.po -s es.po default.pot
poedit es.po
Para que este tipo de traducciones sean visibles desde la aplicación, es necesario realizar el import del step Localizer desde el ZMI portal_setup. pestaña imports