menu
Tutorial Drupal: configurar un sitio para que sea internacionalizable en 4 simples pasos
Una de las carácterísticas principales de la mayoria de sitios que desarrollamos es que son internacionalizables.
Muy resumidamente, tras esta palabra se esconde el proceso que hace que un sitio pueda estar en más de un idioma. Otra palabreja relacionada es la localización que es el proceso necesario para que un sitio pueda estar en un idioma en concreto. Dicho de otra forma, durante el primer proceso se habilitan las características necesarias para poder traducir textos, fechas, etc. y en el segundo proceso se traducen a un idioma en concreto.
Esta claro que ambas palabras son lo suficientemente largas como para que sea difícil pronunciarlas o escribirlas. Por esto se utilizan unas curiosas siglas para ellas: i18n y l10n respectivamente. Su origen, una vez se conoce, es tan evidente como original: cada sigla es la primera y la última letra de la palabra separadas por el numero de las letras que las separan. Por ejemplo, internazionalización es una i, 18 letras y una n.
El proceso de i18n es muy sencillo en Drupal si se hace en el momento adecuado y se toman las precauciones necesarias.
Un problema del proceso de i18n Drupal es que este considera que los textos que introducimos en los formularios de la Web están en el idioma por defecto del sitio. Si queremos cambiar el idioma por defecto una vez desarrollado un sitio tendremos que repasar todos los textos que hemos introducido para adaptarlos al nuevo idioma. En consecuencia, el momento en que se debe i18n un sitio es justo después de su instalación.
Pasemos a describir el proceso de i18n:
1. Instalando módulos
Drupal incluye en su distribución por defecto dos módulos para i18n sitios: Locale y Content translation. El prímero permite configurar cuales serán los idiomas del site, cual será el idioma por defecto y como se eligirá el idioma a mostrar. El segundo permite que se traduzcan los contenidos, ligando un contenido con sus traducciones para que sea posible cambiar de idioma sin tener que cambiar de página.
Ambos son necesarios pero no son suficientes. Es necesario instalar varios módulos que hacen internacionalizables otros elementos de Drupal. Estos módulos se encuentran dentro del paquete i18n (a excepción del que permite i18n views, que hace poco se ha trasladado al módulos i18nviews, con vistas a Drupal 7). Es recomendable habilitarlos todos (a excepción de Poll i18naggregate y Profile translation si no vamos a usar estos módulos).
2. Activando idiomas
Ha llegado el momento de decirle al sistema qué idiomas estarán disponibles en el sitio.
Acudimos a "Site configuration > Languages". En esta pantalla aparece un listado detallando los idiomas activos y sus características y cual de ellos es el idioma por defecto.
Hacemos clic en "Add language". En esta pantalla podemos seleccionar el idioma de un listado o introducir nosotros mismos la información sobre el idioma.
Seguimos el proceso anterior tantas veces como sea necesario, hasta tener todos los idiomas requeridos activados.
3. Configurando que idioma se mostrará en cada momento
Todo el trabajo anterior no servirá de nada si no le decimos a Drupal que idioma deberá mostrar en cada momento.
Acudimos a la pestaña "Configure" de la pantalla de idiomas. Drupal ofrece varias opciones, pero la más recomendable, y la más sencilla también, es la denominada "Path prefix only".
Marcandola el sistema seleccionará el idioma en base a un prefijo en la dirección de las páginas que él mismo se ocupará de insertar. Así, nuestras páginas en castellano serán de la forma "http://ejemplo.com/es/pagina/de/ejemplo".
Puede surgir un problema si seleccionamos esta opción y un idioma diferente del inglés como idioma por defecto (como veremos más tarde). Drupal considera que el idioma por defecto no debe tener prefijo. Como el idioma por defecto inicial es el inglés, éste no tiene configurado ningún prefijo. Al cambiar el idioma por defecto se produce un conflicto: ni el idioma por defecto ni el inglés tienen prefijo. La solución es sencilla, acudimos a la página de detalle del idioma inglés y le colocamos un valor en el campo "Path prefix", normalente "en".
4. Últimos detalles
El sistema ya está internacionalizado. Pero faltan dos o tres detalles para acabar el proceso.
He hablado en puntos anteriores sobre el idioma por defecto. Para seleccionar un idioma por defecto diferente del inglés debemos acudir a Site configuration > Languages, marcar el idioma que queremos que sea nuestro idioma por defecto en la columna "Default" y aceptar el formulario. Como comenté anteriormente, todas las cadenas de texto que se hayan creado en formularios del sistema deberán traducirse manualmente al nuevo idioma por defecto. Algunos ejemplos de estas cadenas son los nombres y las descripciones de los tipos de contenidos o los nombres y descripciones de los menús.
Estos módulos incluyen un bloque que permite alternar entre los idiomas de una páginas. Deberemos habilitarlo como normalmente habilitamos bloques y colocarlo en el lugar que le pertoque según nuestro diseño.
Aunque hemos habilitado los idiomas no veremos nuestra página más que en inglés. Esto es normal, ya que no hemos importado las traducciones. Aunque existen otras formas de hacerlo, hoy en dia, la forma más rápida y eficiente de hacerlo es instalando el módulo l10n_update, que actualiza automáticamente todas las traducciones de todos los módulos que tengamos en nuestro Drupal.