Woothemes y WooCommerce: cómo cargar la traducción en un child theme

Logo WooCommerceSi usas WordPress junto con Woothemes y WooCommerce, quizá te haya pasado a tí también. Ya tienes traducido a tu lenguaje o personalizada la traducción de los archivos .po y .mo de WooCommerce o del propio tema. Por ejemplo al español de España: es_ES. Subes la traducción de WooCommerce a tu-child-theme/woocommerce/i18n/languages​​/ y la del tema a tu-child-theme/lang/ y la traducción sigue sin funcionar.

Para que funcione hay dos soluciones:

La rápida: haces una copia de los archivos de traducción y los metes en

  • plugins/woocommerce/i18n/languages​​/
  • themes/tu-tema-padre/lang/

Eso es todo y funciona. El problema es que cuando actualices el plugin o el tema padre perderás tus traducciones y deberás acordarte de introducirlas de nuevo.

La buena:

1. Subes los archivos .mo de tus traducciones personalizadas a

  • tu-tema-hijo/woocommerce/i18n/languages​​/
  • tu-tema-hijo/lang/

2. Abres el archivo functions.php del tema hijo e incluyes:

function weg_localisation() {
    unload_textdomain( 'woothemes' );
    load_textdomain('woothemes', get_stylesheet_directory() . '/lang/es_ES.mo');
    unload_textdomain('woocommerce');
    load_textdomain('woocommerce', get_stylesheet_directory() . '/woocommerce/i18n/languages/woocommerce-es_ES.mo');
}
add_action('init', 'weg_localisation');

Eso es todo. Funciona y solo debes preocuparte de las actualizaciones en el caso de que haya importantes cambios en la cadena de traducción original, normalmente en actualizaciones mayores pero al menos, en las menores no perderás esos archivos.

La función la he encontrado en StackExchange.com aplicada al tema Canvas y la he probado en otros temas como TheOnePager y Appply, por lo que supongo que tratándose de un FrameWork debe funcionar correctamente en el resto.

¿Te ha parecido útil esta función? ¿Tienes otra solución mejor? ¡Compártela!

Actualización 20/06/2014:

Woothemes y WooCommerce siguen haciendo cambios en cada nueva versión. Ahora las traducciones de WooCommerce no funcionan bien en algunos casos si no están en la carpeta wp-content/languages/woocommerce/woocommerce-es_ES.mo en cuyo caso sobreescribirá la traducción y no es necesario crear ninguna función en functions.php.

Lo mismo ocurre con la traducción del plugin Sensei, ha de estar en wp-content/languages/woothemes-sensei/woothemes-sensei-es_ES.mo

Actualización 31/10/2014:

Finalmente las traducciones de WooCommerce se cargan perfectamente desde la carpeta wp-content/languages/plugins/woocommerce-es_ES.mo.

¿Te ha parecido útil esta actualización? ¡Compártela!

9 comentarios en “Woothemes y WooCommerce: cómo cargar la traducción en un child theme

  1. En realidad la ruta wp-content/languages/woocommerce/ para subir una traducción propia ha existido desde el principio, desde WooCommerce 1.x

    En los child themes, es estándar marcado por WordPress es tener una carpeta de nombre “languages” y dentro el archivo de la traducción con sólo el código del idioma, por ejemplo “es_ES.mo”.

    Aunque los creadores de themes son bastante suyos, y es habitual que haya que ponerla en el raíz del child theme, sin carpeta “languages”. Por ejemplo, en Canvas es así.

  2. Muy cierto Samuel,
    sin embargo en otros temas de Woothemes (ahora mismo me viene appply a la memoria) la carpeta debe nombrarse como /lang/ en el child theme… son muy suyos…
    Si respetasen los estándares de WordPress sería bastante más sencillo para todos 😉

  3. Como se puede traducir los detalles de facturación del plugin WooCommerce de una plantilla Woothemes?, Es decir cambiar country, first name… Gracias

  4. He seguido vuestras indicaciones (zanguanga y Samuel) y no consigo que se traduzcan por completo los términos del carrito, checkout.. ¿Alguna otra indicación? Gracias

  5. No entiendo, en las actualizaciones que haces del post, como afecta eso al contenido anterior.
    Según la actualización del 31/10/14, ¿hay algo del contenido del post que tenga que hacer de otra manera?

    Gracias!

  6. No entiendo un .po.mo. Hola a todos! A ver si alguien me puede ayudar con algo que me tiene atascado. Estoy intentando traducir WooCommerce con Loco Translate, pero no quiero la traducción automática, mi web utiliza un lenguaje amigable y cercano al cliente, por lo no quiero las traducciones exactas sino usar traducciones personalizadas. Entonces traduzco a mi gusto y puedo ver los cambios reflejados en la web, pero pasadas unas 24 o 48 hs. las traducciones vuelven hacia atrás. Tengo 2 preguntas al respecto: 1) Cuando traduzco algo, esto afecta solo a mi sitio WordPress o a todos los que estén usando el plugin? (sería raro afectar a todos). 2) Cómo puede ser que sin actualizar Woocommerce todo vuelva para atrás en pocas horas/días? Cómo puedo resolver esto? 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *