Internationalization

-I18N (INTERNATIONALIZATION) (6.x-1.1): I18N es otro “Contributed Module” centrado en traducción de sitios Drupal. En realidad no es un úncio Module sino que son varios agrupados en un mismo ZIP, cada uno con una funcionalidad concreta. Se puede entender I18N como un paquete de utilidades de traducción, que permite realizar algunas de las tareas que se pueden realizar con Locale, Localization Client, o Content Translation y otras que no se pueden realizar con estos últimos. Para poderlo utilizar, antes deberemos hacer como con todos los “Contributed Modules”: descargarlo, instalarlo, activar todos los Modules que nos interesen, y asignar los permisos adecuados a cada Rol.

Los más destacados “submodulos” del paquete son:

- Menu translation: añade cualquier menú de creación propia a la lista de cadenas de la “Translate Interface” desde donde podremos traducirla a otros idiomas. Es decir crea las Strings necesarias para poder traducir los elementos de los menús con las herramientas de la “Translate Interface” , independientemente de si estos enlazan a un Node específico o no.

- Pofile translation: tiene como finalidad permitir que los diferentes campos de perfil de usuario, ( nombre, descripción, etc. ) aparezcan en las Strings y se puedan traducir a los diferentes idiomas configurados en el sitio web. Es decir, que este módulo añade las opciones necesarias para generar los Strings que luego podremos importar y traducir en la “Translate interface”

- Taxonomy translation: ofrece la posibilidad de configurar el idioma de las las taxonomias. Así mediante este módulo podremos especificar la política de idiomas utilizada en los Vocabularies, es decir si queremos tener Terms en un único idioma, o si en cambio queremos tener los Terms en los diferentes idiomas activos en el sito web. “Taxonomy translation” se puede utilizar simultáneamente con “Sychronize translation”, módulo que se encarga de mantener sincronizadas las versiones de idioma de los Nodes, con los diferentes Terms que refieren a ellos. Es decir mantiene sincronizados el Vocabulary y la Taxonomy.

Una forma de configurar el control de idiomas en Taxonomy es ir a “Administer>Content managment>Taxonomy”  pulsar en “edit vocabulary” y en “Multilingual options” seleccionar la casilla “Localize terms”. Esto Luego si vamos a la interfaz de traducción, en “Administer>Site building>Translate interface”, pulsamos en “Refresh”, marcamos el checkbox Taxonomy y pulsamos “Refresh strings” se mostraran todas las Strings de traducción necesarias para la traducción de los Terms del Vocabulary. Una vez generadas las strings bastará con traducirlas en las opciones que para ello ofrece “Translate interface” (p.ej podemos buscar las cadenas que pertenecen a Taxonmy )

- Block translation: permite establecer un idioma en los Blocks, tanto en los que vienen por defecto con Drupal, como en los que creemos nosotros mismos. Estos se mostraran en uno u otro idioma dependiendo del idioma activo del sitio web.

Para especificar el modo general en que queremos que el sitio web gestione los idiomas debemos ir a “Administer>Site configuration>Languages” y pulsar en “Multililingual system”. Alli podremos especificar si queremos que solo se muestren los contenidos traducidos al lenguaje activo o al lenguaje por defecto, que se puedan mostrar ambos mezclados, que se muestre sólo el idioma activo, o si en cambio no importa que se muestren todos los contenidos independientemente del idioma en que se encuentren. En esta misma página también podremos especificar si queremos que el usuario vea los links que permiten acceder a las traducciones a otros idiomas del contenido que esta visualizando, o si queremos que cuando acceda a un contenido traducido a otro idioma también cambie el idioma de la interfaz etc.

Al hablar en esta guía sobre el Module “Localization Client”, se comenta que en determinadas circunstancias (p.ej en textos contenidos en algun código Javascript) Localization Client no es capaz de capturar correctamente los contenidos y que en estas ocasiones podemos recurrir a la opción Search de la “Translate Interface” para localizar y traducir estas cadenas que no podemos traducir con Localization Client. No obstante en ocasiones esta última opción tampoco es capaz de localizar determinadas cadenas embebidas en el código de Drupal. Esto sucede por ejemplo con el nombre del sitio web en “Administer>Site configuration>Site information”  que no podemos cambiar con los métodos vistos hasta ahora.

El módulo Internationalization ofrece otra alternativa un poco más compleja que las anterirores (pero más efectiva) , para traducir estas pocas cadenas que se resisten. Deberemos habilitar temporalmente los permisos de escritura en el fichero settings.php que se encuentra en “…\sites\default” para insertar al final el siguiente código indicando la variable que queremos modificar (en esta caso ‘site_name’):

   $conf['i18n_variables'] = array(
   'site_name',
   );

Tras hacer esta modificación , si volvemos a  “Administer>Site configuration>Site information” veremos que debajo del nombre del sitio dice: “This is a multilingual variable.” Luego, si conmutamos el idioma del sitio mediante el bloque Languages, modificamos el contenido del nombre y pulsamos en “Save  configuration” comprobaremos que hemos traducido el campo Name que antes se nos resistía. Como se puede comprobar, este es un método bastante engorroso, ya que cuando queramos traducir algo deberemos saber el nombre de la variable y editar el fichero settings.php. Si deseamos conocer el nombre de todas las variables deberemos acceder a la base de datos de drupal y localizar los nombres de estas. Por suerte este método solo será necesario en contadas ocasiones, ya que con los métodos anteriormente descritos tendremos suficiente.