Cómo implementar traducciones de interfaz de Usuario

Tutoriales
reading time 15

Las traducciones de interfaz en Drupal no son configuración por lo que si intentamos exportar las configuraciones de las modificaciones que hayamos hecho (x ej: drush cex) para subirlas a nuestro sitio en producción, no podremos ya que no nos exportara nada de lo que hayamos traducido.

Como aclaración importante, este método que vamos a implementar, pisa o sobreescribe las traducciones de interfaz que se hagan en el sitio en producción.

Vamos a ver cómo podemos solucionar esto usando el módulo locale que ya viene en el core de Drupal.

Primero preparamos todo desde la interfaz de Drupal, vamos a setear el directorio donde se exportarán las traducciones de la interfaz: /admin/config/media/file-system

img1

Nota: Por defecto suele ser: sites/default/files/translations pero lo cambiamos por ../translations

Hay que verificar que exista, y si no crear, la carpeta translations en la root de nuestro proyecto

drupal image

Para verificar que todo está ok podemos correr el siguiente comando para efectivamente exportar las traducciones 

drush locale:export es --types=customized > ./translations/custom-translations.es.po

Si todo fue bien tendremos nuestras traducciones exportadas en la carpeta translations

drupal image

Ahora vamos a configurar en el módulo locale cómo se deben comportar las traducciones en el sitio /admin/config/regional/translate/settings

drupal image

 

Con esto ya podremos implementar en nuestro proceso de deploy la actualización de traducciones con el siguiente comando:

drush locale:import es ../translations/custom-translations.es.po --type=customized --override=all

El flujo de trabajo podría ser el siguiente:

1- un developer agrega traducciones en su local

2- exporta esas traducciones a la carpeta /transtations con el comando

drush locale:export es --types=customized > ./translations/custom-translations.es.po

3- sube esos cambios al repositorio (git -> add -> commit -> push)

4- en el proceso de deploy continuo se agregara

drush locale-check
drush locale-update
drush locale:import es ../translations/custom-translations.es.po --type=customized --override=all
drush cr

En mi caso agregue las líneas del punto 4 luego de hacer el drush updb y drush cim.

Con esto deberíamos tener controlado el tema de las traducciones de interfaz en sitios o sistemas en los cuales se trabaje de manera sincronizada en equipo.