Extracción e importación de traducciones en Drupal

globe-110774_1920.jpg
Solucionex
08
Oct 21

TL;DR: El módulo potx permite exportar cadenas traducibles desde módulos o temas personalizados de Drupal.

Drupal permite por defecto la gestión de traducciones usando el módulo "locale" del core, ya sea creando/modificando traducciones desde la propia interfaz de la web o a través de archivos .po. El módulo potx permite extraer automáticamente todas las cadenas traducibles de la extensión o carpeta que se desee, y generar archivos .po/pot de traducciones para agilizar la tarea.

Extracción de traducciones

Instalación

Instalación normal con composer: composer require drupal/potx

Nota: El módulo se encuentra actualmente en versión alfa, pero es funcional.

Instalar en Drupal a través de la web (/admin/modules) o con drush:

drush en potx

Extracción de traducciones con Drush

Anteriormente, el módulo podía extraer las traducciones directamente desde drush, pero con la versión actual solo se pueden extraer las plantillas (archivos .pot, las traducciones vienen vacías) ¯\_(ツ)_/¯. Para extraer traducciones, hay que usar la interfaz web.

Manera común de uso:

drush potx --modules=[module_name]

[module_name]: Lista separada por comas de módulos (no admite temas, habría que hacerlo usando "--folder")

Otras opciones son:

  • --files: Lista separada por comas de archivos
  • --folder: Ruta de una carpeta, se exportarán todas las cadenas de manera recursiva.

Los archivos generados se crean por defecto en el docroot de la web (normalmente la carpeta "web" en la raíz del proyecto).

Nota: Hay que cambiarle la extensión al archivo de .pot a .po cuando se traduzca. .pot es indicativo de que el archivo es una plantilla que no contiene traducciones per se, solo el esquema de traducciones disponibles.

Extracción de traducciones esde la web

En la página “/admin/config/regional/translate/extract” aparece un formulario con el que personalizar la exportación.

Permite elegir entre módulos / temas de core, contrib o custom, aunque también permite elegir exportar toda la carpeta contrib o custom tanto de módulos como de temas.

Desde esta página sí se permite exportar traducciones (hay que elegir el idioma en "Template language" y marcar el check "Include translations").

Lo normal es guardar el archivo generado en la carpeta "translations" del módulo / tema. Si lo que se ha exportado es una carpeta (ej: modules/custom), es mejor ponerlo en una carpeta "translations" o "custom_translations" en la raíz del proyecto. Se recomienda hacer las exportaciones por módulo / tema.

Importación de traducciones

Auto importación al instalar un módulo / tema

Para que drupal importe las traducciones de manera automática al instalar un módulo o tema, es necesario incluir las siguientes líneas en el archivo .info.yml:

'interface translation project':[nombre]
'interface translation server pattern':'[modules,themes]/custom/%project/translations/%language.po'

Nota: Sustituir [nombre] por el nombre del módulo / tema y [modules, themes] por el elemento que corresponda de la ruta.

De esta manera, se instalarán todos los archivos de traducción existentes en la carpeta "translations" del módulo o tema (siempre que sigan el patrón [código de idioma].po)

Estas importaciones dependen de la configuración del sitio (admin/config/regional/translate/settings, opción comportamiento), por lo que puede que ciertas traducciones no se importen dependiendo de cómo esté configurada la web.

También se pueden importar nuevas traducciones de un módulo / tema custom ya instalado anteriormente usando:

drush locale-check
drush locale-update

Nota: En caso de que las líneas anteriormente descritas más arriba del archivo .info.yml se incluyan después de la instalación del módulo / tema, para que Drupal detecte las traducciones es necesario limpiar caché antes de los comandos de drush de importación de traducciones.

Con Drush

Se pueden importar archivos .po directamente con drush: `drush locale-import --type=customized [langcode] [filename].po`.

Donde [langcode] es el código del idioma y [filename] es el nombre del archivo.

Desde la web

Desde la página /admin/config/regional/translate/import pueden importarse archivos .po en el idioma que se quiera. Desde esta página se puede configurar las sobreescrituras de traducciones existentes.

 

Imagen de cabecera: Gerd Altmann de Pixabay