Перевод виджета в моем плагине

28 окт. 2011 г., 21:15:57
Просмотры: 274
Голосов: 1

Я добавляю поддержку i18n для виджета в плагине List Category Posts. Я правильно создал pot файл, а также po и mo файлы для испанского и английского языков. Все строки выводятся с помощью _e() в файле формы.

Структура директорий следующая:

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

Есть и другие файлы, но эти участвуют в переводе. В классе виджета (ListCategoryPostsWidget.php) я использую следующий код для регистрации перевода:

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

А это код, который я использую для подключения файла формы в ListCategoryPostsWidget.php:

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

Язык по умолчанию - английский, и он работает нормально. Но когда я устанавливаю WP_LANG в "es_ES" в моем wp-config, текст в виджете все равно отображается на английском. Есть идеи? EDIT: Добавляю еще немного кода:

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

Вот так я использую функцию _e в lcp_widget_form.php.

3
Комментарии

Можем ли мы увидеть выходной код, чтобы помочь диагностировать проблему?

Chip Bennett Chip Bennett
28 окт. 2011 г. 21:20:49

Конечно, какой именно код? HTML, генерируемый виджетом? Там просто отображаются строки из функции _e, например: _e("Category") выводит "Category".

Fernando Briano Fernando Briano
28 окт. 2011 г. 21:29:57

Да: именно PHP код, который генерирует HTML вывод - в частности, строки, которые выводятся. ПОДСКАЗКА: Если вы используете _e( "Category" ), вы делаете это неправильно, и поэтому это не работает.

Chip Bennett Chip Bennett
28 окт. 2011 г. 21:31:33
Все ответы на вопрос 1
4

Основываясь на вашем комментарии:

HTML, генерируемый виджетом? Тот, который просто показывает строки в функции _e, например: _e("Category") отображает "Category"

Я подозреваю, что вы неправильно настроили строки перевода. Вам необходимо указать текстовый домен в каждом вызове функции перевода строк, иначе строки никогда не будут переведены.

Например, для вашего текстового домена 'list-category-posts':

_e( 'Category' )

...должно быть заменено на:

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

Убедитесь, что все ваши функции перевода строк объявлены соответствующим образом.

28 окт. 2011 г. 21:34:10
Комментарии

Упс, извините, я ошибся с комментариями, я использую его так, как и должен: _e("Category", 'list-category-posts')

Fernando Briano Fernando Briano
28 окт. 2011 г. 21:38:32

Вот почему нам нужно увидеть реальный код... :)

Chip Bennett Chip Bennett
28 окт. 2011 г. 21:53:47

Я добавил больше деталей к вопросу.

Fernando Briano Fernando Briano
28 окт. 2011 г. 22:04:37

Это старый вопрос, но я как раз проверял свой аккаунт здесь. i18n наконец-то добавлен: http://wordpress.org/extend/plugins/list-category-posts/changelog/, спасибо, Chip! :)

Fernando Briano Fernando Briano
8 февр. 2013 г. 07:48:10