Traducción de widgets en mi plugin

28 oct 2011, 21:15:57
Vistas: 274
Votos: 1

Estoy añadiendo i18n al widget en List Category Posts. He creado correctamente el archivo pot, y los archivos po y mo para español e inglés. Todas las cadenas se muestran con _e() en el archivo del formulario.

La estructura del directorio es la siguiente:

/
include/
    ListCategoryPostsWidget.php
    lcp_widget_form.php
languages/
    es_ES.mo
    en_US.mo
plugin.php

Hay otros archivos, pero estos son los involucrados en la traducción. Desde mi clase Widget (ListCategoryPostsWidget.php) estoy usando esto para registrar la traducción:

$translation_dir = '../languages';
load_plugin_textdomain( 'list-category-posts', null, $translation_dir );

Y este es el código que estoy usando para incluir el archivo del formulario en el archivo ListCategoryPostsWidget.php:

/** @see WP_Widget::form */
function form($instance) {
    include('lcp_widget_form.php');
}

El idioma predeterminado es inglés, por lo que eso funciona bien. Pero cuando configuro WP_LANG a "es_ES" en mi wp-config, todavía veo el texto en el widget en inglés. ¿Alguna idea? EDIT: Entonces, estoy añadiendo un poco más de código:

<p><label for="<?php echo $this->get_field_id('title'); ?>">
<?php _e("Título", 'list-category-posts')?></label>

Así es como estoy usando la función _e en lcp_widget_form.php.

3
Comentarios

¿Podemos ver el código de salida para ayudar a diagnosticar el problema?

Chip Bennett Chip Bennett
28 oct 2011 21:20:49

Claro, ¿qué código? ¿El html generado por el widget? Ese solo muestra las cadenas en la función _e, por ejemplo: _e("Category") muestra "Category".

Fernando Briano Fernando Briano
28 oct 2011 21:29:57

Sí: el código PHP que genera la salida HTML - específicamente, las cadenas que se muestran. PISTA: Si estás usando _e( "Category" ), lo estás haciendo mal, y por eso no funciona.

Chip Bennett Chip Bennett
28 oct 2011 21:31:33
Todas las respuestas a la pregunta 1
4

Basado en tu comentario:

¿El html generado por el widget? Ese solo muestra las cadenas en la función _e, por ejemplo: _e("Category") muestra "Category"

Sospecho que no has configurado correctamente tus cadenas de traducción. Necesitas incluir el textdomain en cada llamada a función de cadena de traducción, de lo contrario las cadenas nunca se traducirán.

Por ejemplo, para tu textdomain 'list-category-posts':

_e( 'Category' )

...debería ser en su lugar:

_e( 'Category', 'list-category-posts' )

Asegúrate de que todas tus funciones de cadenas de traducción estén declaradas acordemente.

28 oct 2011 21:34:10
Comentarios

Uy, lo siento, me equivoqué en los comentarios, lo estoy usando como debería: _e("Categoría", 'list-category-posts')

Fernando Briano Fernando Briano
28 oct 2011 21:38:32

Por eso necesitamos ver el código real... :)

Chip Bennett Chip Bennett
28 oct 2011 21:53:47

Agregué algunos detalles más a la pregunta.

Fernando Briano Fernando Briano
28 oct 2011 22:04:37

Esta es una pregunta antigua pero estaba revisando mi cuenta por aquí. Finalmente se agregó i18n: http://wordpress.org/extend/plugins/list-category-posts/changelog/, ¡gracias Chip! :)

Fernando Briano Fernando Briano
8 feb 2013 07:48:10