Generación de archivos de traducciones desde Poedit

En un post anterior,  Webs multi-idioma en CodeIgniter con Gettext, comentamos que utilizábamos Poedit para trabajar con los textos a traducir en una web multi-idioma, y  prometimos explicar como utilizar Poedit. Como lo prometido es deuda, aquí va la explicación sobre cómo podemos generar traducciones desde Poedit.

Lo primero, es recordar qué es Poedit; se trata de un editor gratuito para traducir aplicaciones y sitios web que utiliza gettext, una biblioteca GNU de internacionalización que permite escribir programas con interfaces en varios idiomas. Mediante este editor se pueden abrir una serie de archivos (los “.po”) que contienen los textos a traducir y tras meter nosotros las traducciones de cada uno de los textos a traducir, el propio programa se encarga de compilarlos y generar los archivos “.mo”, que son lo que suelen leer las aplicaciones para a partir de dichos archivos poder presentar los textos en el idioma elegido por el usuario.

Podemos encontrar más información sobre este editor y descargarlo desde su sitio web.

 

Configuración del Poedit

Una vez tengamos descargado e instalado Poedit en nuestro equipo, lo primero que debemos hacer es configurarlo. Primeramente, hay que establecer las preferencias del editor. Para ello debemos ir a: “Archivo – Preferencias…“.

Aparecen 4 pestañas que debemos revisar. En realidad con indicar nuestros datos en la primera pestaña, Personalizar, y establecer el procesador de código fuente a usar en la pestaña Procesadores es suficiente. El resto de pestañas podemos dejarlas con las opciones indicadas por defecto:

Preferencias_personalizarPreferencias_editor Preferencias_memoria  Preferencias_procesadores

 

GENERACIÓN del CATÁLOGOS

Tras finalizar la configuración, el siguiente paso es generar un nuevo catálogo. Esta acción está disponible en la opción “Archivo – Catálogo nuevo...” del menú.

Si ya tenemos creado el catálogo, podemos editar sus propiedades desde la opción “Catálogo – Propiedades…” del menú. En ambos casos llegamos a la pantalla de propiedades del catálogo. Aquí debemos indicar los siguientes datos:

  • Propiedades de traducción
    • Dentro de estas propiedades hay que rellenar varios datos, pero es importante fijarnos sobre todo en 3 de ellos:
      • el Idioma asociado al catálogo: el idioma en el que vamos a realizar las traducciones.
      • el Conjunto de caracteres a utilizar: importante para el tema de tildes y otros caracteres. Si configuramos nuestro catálogo con el conjunto de caracteres UTF-8, las páginas que usemos deben estar codificadas en UTF-8. Esto permitirá que a la hora de escribir los textos en nuestro código podamos escribirlos sin codificación alguna. Por ejemplo, si necesitamos crear un botón con el texto “Añadir” y tanto el Poedit como nuestro proyecto están en la misma codificación podemos poner directamente “Añadir” en lugar de tener que indicar “A&ntildeadir”.
      • y las “Formas plurales” a usar: estas formas dependen del idioma y hay que indicar cómo se generan para que las traducciones de lleven a cabo correctamente. Por ejemplo para español, euskera e inglés son “nplurals=2; plural=n != 1;“.

Propiedades_catalogo_propiedades

  • Carpetas de fuente
    • En este apartado debemos indicar los directorios del proyecto en los que el Poedit debe buscar textos a traducir.  Poedit sólo buscará en los directorios que se especifiquen en esta propiedad. Los textos que metamos en archivos que no se encuentren en estos directorios no serán detectados por Poedit y consecuentemente no se traducirán.
    • Las rutas de dichos directorios deben indicarse a partir del directorio donde se guardan los archivos “.mo” y “.po” dentro del proyecto.
    • Por ejemplo, si tenemos un proyecto como el que muestra la siguiente estructura, donde los archivos “.mo” y “.po” se encuentran en el directorio “LC_MESSAGES”, si queremos que el Poedit busque textos en los directorios “views”, “controllers” y “language”, debemos añadir las siguientes rutas:

Estructura_proyecto Propiedades_catalogo_carpetas

  • Palabras clave originales
    • Se trata de las palabras que Poedit debe buscar en los archivos existentes en los directorios indicados en la pestaña anterior. Todo texto que Poedit encuentre localizado entre alguna de las palabras definidas en este apartado será detectado como texto para traducir. En nuestro ejemplo utilizamos dos palabras clave: “lang” y “$lang”. Así si en cualquier archivo localizado dentro de las carpetas fuente indicadas metemos un texto como “lang(‘xxxx’)” Poedit considerará el texto “xxxx” como texto para traducir.

Propiedades_catalogo_palabras_clave

Una vez configurado el nuevo catálogo, aparecerá una pantalla donde debemos elegir la ruta donde deseamos guardar el archivo “.po” a partir del cual el Poedit generará el “.mo” correspondiente.

En el caso de nuestro ejemplo, eligiremos el direcotrio “LC_MESSAGES” del idioma correspondiente y indicamos el nombre a asignar a dicho archivo, en nuestro caso “es_ES_lang.po“.

Tras especificar todas las propiedades, al pulsar el botón “Aceptar” se generará nuestro catálogo (o si estábamos modificándolo se actualizará el mismo).

 

ABRIR  UN CATÁLOGO

Cada vez que hagamos doble click sobre cualquier archivo “.po”, se abrirá directamente el Poedit con el catálogo asociado a dicho archivo.

Pulsando el botón “Actualizar” el catálogo comprobará los nuevos textos añadidos y eliminará los ya no existentes, mostrando un resumen de ambos conceptos.

Actualizacion_catalogo

Una vez revisemos los cambios indicados por el Poedit basta con pulsar el botón “Aceptar” para poder empezar a añadir las traducciones. Según seleccionamos un texto en la parte superior, en la parte inferior del Poedit aparece el Texto original, el seleccionado, y debajo la Traducción, que podemos modificar en cualquier momento. En este ejemplo hemos editado el catálogo asociado a los textos en Euskera, por lo que debemos meter las traducciones en dicho idioma:

Traduciendo_textos

Tras añadir las traducciones que deseemos (no es necesario traducir todos los textos de golpe  ya que podemos editar el catálogo tantas veces como deseemos),  en el Poedit debemos recordar pulsar el botón “Guardar” para almacenar los cambios en nuestro catálogo.

Tras esto, veremos que el archivo “.mo” asociado a nuestro catálogo ha sido actualizado y consecuentemente en nuestro sitio web ya aparecerán los textos en su idioma correspondiente con las traducciones indicadas por nosotros.

Y no hay mucho más que hacer… Bueno sí, ponerse a usar el Poedit!!

9 respuestas

  1. Pascal
    Ene 14, 2015 - 03:29 PM

    He sustituido poedit con poeditor (https://poeditor.com/), me parece mejor y más fresco.

  2. Beatriz
    Feb 16, 2015 - 08:24 PM

    Muy buenos consejos los que has dado para cogerle el truco a esta herramienta ya que la he instalado esta misma tarde y no consigo hacerme a ella del todo, gracias por la ayuda

  3. traductores profesionales
    Abr 15, 2015 - 07:01 PM

    Un programa que no llevo utilizando mucho pero he de decir que me he quedado impresionado con la facilidad que tiene para trabajar, me ha ido bastante bien con él y espero que sea así mucho más

  4. Santiago
    May 19, 2015 - 05:46 PM

    Muchas gracias por vuestra ayuda.

    No me defiendo muy bien con poedit. Estoy con wordpress/woocommerce y he cambiado texto interno o creado nuevo texto. Si pongo “lang(‘xxxx’)” como indicáis Poedit lo localiza, pero claro, tengo que poner eso a todo texto que quiera que salga. No soy muy ducho, ¿puedo hacer eso? ¿no afecta a la programación o visualización?

    Y si hago un archivo nuevo con el texto que quiero meter en el catálogo, usando lang por ej, ¿luego me lo traduciría en el woocommerce?

    Muchas gracias por todo una vez más.

    • Ana
      May 20, 2015 - 07:25 AM

      Buenas Santiago,
      Efectivamente todo texto que quieras que se traduzca debe ir como “lang(‘elTextoATraducir’)” para que Poedit lo detecte. Lo normal es meterlo directamente en el código. No afecta a la programación ni a la visualización; cuando visualices la página te aparecerá únicamente el texto.

      Si metes en un nuevo archivo todos los textos a traducir con el lang, el Poedit los detectará pero después no se traducirán más que en esa página, en el resto no. Por lo que es necesario que lo metas en cada página.

      Por ejemplo:
      <?php echo lang('El título de mi página');

      Saludos.

  5. jesus abio
    May 26, 2015 - 09:43 AM

    Hola,
    Compre un tema de wordpress (LOMA de http://dahz.daffyhazan.com/) y lo tengo instalado provisionalmente como exitvalles.com.
    Todo muy bien pero quiero hacer desaparecer varias palabras del ingles y que aparezcan en español. Aqui aparece Poedit. Compre el poedit pro y me reconoce perfectamente las palabras y frases en ingles (dirigiéndolo al tema LOMA) para pasar a español (entre ellas las que yo necesito). Correcto el funcionamiento. Cambio varias frases y guardo fichero es_ES.po y me genera un es_ES.mo.

    Problemas: Donde guardo los ficheros generados?. El tema LOMA tiene dos carpetas de lang en dos carpetas diferentes, y no se donde colocar los archivos generados por poedit. He probado en los dos y no funciona. Puede ser que no lea las carpetas de lang?. No me modifica nada.

    Te puedo enviar más información y hablar de otras opciones.

    Gracias

    • Ana
      May 26, 2015 - 10:29 AM

      Hola Jesús,
      No he trabajado nunca con el poedit en wordpress así que no puedo ayudarte mucho. Por lo que comentas el Poedit está bien configurado porque te está detectando los textos que quieres traducir, el problema es que tienes que indicarle al wordpress de dónde obtener dichos textos.
      He encontrado este enlace http://support.daffyhazan.com/docs/loma/translation.html que quizá pueda ayudarte.

Deja un comentario