wordpress traducible

Cada vez es más grande la comunidad de desarrolladores de themes, incluso de habla hispana, y una funcionalidad que debería ser básica es ofrecer la internacionalización de los themes, algo vital para la difusión de los themes WordPress.

Pues bien, en este tutorial, que he traducido de una guía de Cats who code, tienes el proceso completo, para hacer un theme traducible, desde el principio.

1 - Añade las funciones necesarias

Para empezar con lo básico copia las líneas siguientes en el archivo functions.php de tu theme.

PHP:
  1. load_theme_textdomain( 'Nombre de mi theme', TEMPLATEPATH.'/languages' );
  2.  
  3. $locale = get_locale();
  4. $locale_file = TEMPLATEPATH."/languages/$locale.php";
  5. if ( is_readable($locale_file) )
  6.     require_once($locale_file);

En la línea 1 verás la función load_theme_textdomain(). Esta función te permite cargar un Text Domain. Elige cualquier nombre, pero recuerda que tiene que ser único. Lo ideal sería usar el nombre de tu theme
.

2 - Internacionaliza tu theme

Para traducir nuestro theme WordPress usaremos las funciones PHP gettext.
GetText tiene dos funciones: _e__ (ambas con guión bajo).
La función "_e" se usa para imprimir texto "simple", y la función __ se usa cuando el texto a mostrar ya está envuelto en tags PHP.

EJEMPLOS:

PHP:
  1. <?php _e("La página que buscas no existe", "Nombre de mi theme"); ?>

PHP:
  1. <?php the_content(__('Sigue leyendo...', "Nombre de mi theme")); ?>

Date cuenta de nuevo que el nombre del text domain (Nombre de mi theme). Recuerda que debe ser el mismo que en el fichero functions.php.

La parte aburrida es en la que tienes que reemplazar cada cadena simple por la función necesaria. Dependiendo e cuantas cadenas (strings) tenga tu theme esto puede ser una tarea realmente tediosa (de ahí que se internacionalicen tan pocos themes). Parece que hay algunas herramientas GNU que facilitan la tarea de extraer cadenas de los archivos de manera sencilla. Si quieres puedes buscar en Google por xgettext.

3 - Crea tu archivo .po

A partir de este momento tu theme WordPress ya puede traducirse fácilmente a cualquier idioma. Pero para mostrar los textos en un idioma distinto al tuyo tienes que añadir un archivo .po.

Los archivos .po significan Objeto Portátil (Portable Object). Básicamente, estos archivos contienen una cadena, y su traducción en otro idioma. Por ejemplo, si traduces la versión española de WordPress, tendrás un fichero es_ES.po dentro de la carpeta /wp-content/languages/. Este archivo contiene todas las traducciones para que tu theme "hable" Español, para que tu theme diga Bienvenido en vez de Welcome.

Pero hay buenas noticias, no tienes que buscar en los archivos de tu theme cada línea a traducir. Hay una herramienta online llamada icanlocalize.com que puede escanear archivos PHP y crear ficheros .po por ti. ICanLocalize extraerá todas las cadenas envueltas en llamadas __("txt", "domain")_e("txt", "domain"). Las cadenas pueden cerrarse con comillas dobles(") o comillas simples(') y con cualesquiera caracteres de codificación.

icanlocalize

Luego, los archivos Po pueden editarse con PoEdit, un software gratuito especialmente diseñado para esta tarea:

poedit

Como ya habrás imaginado, tienes que traducir cada cadena. Una vez hayas traducido todo guarda el archivo .po. PoEdit también creará un archivo .mo, que es una versión compilada del fichero .po.

4 - Puesta en marcha

Ahora que ya has hecho la parte más "difícil" del trabajo lo único que queda es definir tu "locale" en WordPress.

Para conseguirlo, lo primero es hacerte con tu código de idioma y país. Por ejemplo, si tu idioma es el Español y vives en Argentina, tu código será es_AR. El manual de GNU gettext tiene páginas para ayudarte a encontrar los códigos de tu paísidioma.

Una vez tengas tus códigos, abre el archivo wp-config.php y busca la constante WPLANG. Si existe, simplemente reemplaza el código existente por el tuyo. Si no existe, pues pega la siguiente línea (con tu propio código de país e idioma, por supesto)

HTML:
  1. define ('WPLANG', 'es_AR');

Fuentes

En los siguientes artículos encontrarás la documentación empleada para la elaboración de este post.

Compartir en Tuenti Como hacer un theme WordPress traducible


También te puede interesar :

    11 comentarios en “Como hacer un theme WordPress traducible”

  1. Información Bitacoras.com...

    Valora en Bitacoras.com: Cada vez es más grande la comunidad de desarrolladores de themes, incluso de habla hispana, y una funcionalidad que debería ser básica es ofrecer la internacionalización de los themes, algo vital para la difusión de los theme.....

  2. ejner69 (216 comentarios) dijo:

    No entiendo esta cadena:
    languages/$locale.php

    ¿Seguro que no es '.mo' en lugar de '.php'? ¿O ese es otra cosa que nosotros no debemos meter mano?

  3. Laullon (9 comentarios) dijo:

    __('...'): devuelve una cadena traducida.
    _e('...'): imprime (echo) la cadena traducida.

    ¡¡¡ PHP no tiene Tags !!!, solo funciones.
    el "tag" (yo dirá macro) <?php ... ? > es para indicar que lo que hay dentro es código PHP...

    Esto:
    <?php __("...") ? >
    no haría nada.

    Un saludo.

  4. Laullon (9 comentarios) dijo:

    perdón, no me di cuenta que se podían modificar los mensaje... borra este.

  5. Todos los themes se deberían hacer así, su traducción es muy sencilla y ayuda a expandir el producto.
    saludos

  6. Gracias ! muy buen aporte, me ha sido de gran utilidad

  7. [...] Como hacer un theme WordPress traducible | Ayuda WordPress ayudawordpress.com/como-hacer-un-theme-wordpress-traducible – view page – cached Recursos, themes, plugins y tutoriales en español — From the page [...]

  8. [...] AyudaWordpress; Como hacer un theme para WordPress traducible.Desde CSSBlog; Ejemplos sobre z-index.Desde CSSBlog; Efectos avanzados del CSS3.Desde anieto2k; 11 [...]

  9. [...] original here: Como hacer un theme WordPress traducible | Ayuda WordPress Comments0 Leave a Reply Click here to cancel [...]

  10. gerard (8 comentarios) dijo:

    pues no me funciona a mi, donde saco el Es_es.php?

    tegno
    $locale_file = TEMPLATEPATH."/languages/$locale.php";
    if ( is_readable($locale_file) )
    require_once($locale_file);

    wp-content/themes/CorporateSandbox/languages/es_ES.php -> no existe

    donde consigo ese archivo?

Escribe un Comentario

Conectar con Facebook

XHTML: Puedes usar estos códigos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Subir

Participa en el Debate
  • Fernando: Es por feedburner
  • servant: Gracias, no sabia como agregarlo no solo al index.php sino a cada entrada single.php Me...
  • Bodas: Fernando, la solución de feedburner: http://tudominio.com/feed=rss2 &cat=-3,-12 No...
  • juan leyba: alguien sabe si se puede usar archivos .png en vez de jpg??? Necesito que los banners...
  • Vanesa: Perdón Fernando!!!!!! te cambié el nombre XD corrígelo porfa! ;) gracias!!
Noticias Breves
  • El prestigioso diseñador web Rodrigo Galíndez, una vez más nos deleita con un impecable theme WordPress, de calidad premium, pero 100% gratis. Se trata de Modernist, de sutiles detalles minimalistas, con espacios equilibrados y un manejo profesional del blanco. Podés ver la demo y descargarlo aquí.

    [#5]

  • Si usas el plugin Simple Twitter Connect debes saber que desde hace un rato ya está disponible una actualización que incorpora el nuevo botón oficial de Twitter para compartir contenido.

    [#3]

  • Casi sin previo aviso está disponible WordPress 3.0.1 para descarga, de momento solo en inglés, en el sitio oficial. Esta actualización soluciona una cincuentena de pequeños fallos y poco más.

    [#14]


  • Ahora mismo en los FOROS ...
    Únete a la comunidad
    Usuarios Registrados
  • Acceder

  • Translate this Blog
    Spanish flagItalian flagChinese (Simplified) flagPortuguese flagEnglish flagGerman flagFrench flagJapanese flagRussian flagSwedish flagCatalan flagHebrew flag