Для этого вам понадобятся:
Эта функция echo-ит строку и обычно используется для перевода фрагментов интерфейса модуля или элементов темы:
_e('string'[, 'textdomain'])
Здесь и далее:
string— подлежащая переводу строка
textdomain— пространство перевода — указание на то, где искать перевод для строки: в файле перевода модуля/темы или, если этот параметр пропущен, в файле с переводом ядра WordPress.
До:
<h2>Broken Link Checker Options</h2>
После:
<h2><?php _e('Broken Link Checker Options', 'broken-link-checker'); ?></h2>
Эта функция просто возвращает строку и используется в тех случаях, когда надо перевести часть составной строки, сообщение об ошибке и тому подобное:
__('string'[, 'textdomain'])
До:
add_options_page('Link Checker Settings', 'Link Checker', 'manage_options', __FILE__,array(&$this, 'options_page'));
После:
add_options_page(__('Link Checker Settings', 'broken-link-checker'), __('Link Checker', 'broken-link-checker'), 'manage_options', __FILE__,array(&$this, 'options_page'));
Эта функция необходима в тех случаях, когда у одной и той же строки может быть несколько значений:
_c('string|case'[, 'textdomain'])
case— «расшифровка», один из вариантов использования
До:
<?php /* If this is a monthly archive */ } elseif (is_month()) { ?> <h2 class="pagetitle"><?php printf('Archive for %s', get_the_time('F, Y')); ?></h2> <?php /* If this is a yearly archive */ } elseif (is_year()) { ?> <h2 class="pagetitle"><?php printf('Archive for %s', get_the_time('Y')); ?></h2>
После:
<?php /* If this is a monthly archive */ } elseif (is_month()) { ?> <h2 class="pagetitle"><?php printf(_c('Archive for %s|Monthly archive page', 'kubrick'), get_the_time(__('F, Y', 'kubrick'))); ?></h2> <?php /* If this is a yearly archive */ } elseif (is_year()) { ?> <h2 class="pagetitle"><?php printf(_c('Archive for %s|Yearly archive page', 'kubrick'), get_the_time(__('Y', 'kubrick'))); ?></h2>
Эта функция используется в тех случаях, когда может меняться число упоминаемых объектов («1 комментарий», «2 комментария», «5 комментариев»). Она возвращает строку:
__n('single', 'plural', value[, 'textdomain'])
single— подлежащая переводу строка в единственном числе
plural— подлежащая переводу строка во множественном числе
value— подстановочное значение
textdomain— пространство перевода — указание на то, где искать перевод для строки: в файле перевода модуля/темы или, если этот параметр пропущен, в файле с переводом ядра WordPress.
До:
<?php printf('%s hit(s)', number_format_i18n($file->file_hits)) ?>
После:
<?php printf(__n('%s hit', '%s hits', number_format_i18n($file->file_hits),'wp-downloadmanager'), number_format_i18n($file->file_hits)) ?>
1. В модуль
Для загрузки перевода модуля необходимо вызвать функцию load_plugin_textdomain(). У нее три аргумента:
load_plugin_textdomain('textdomain, 'abspath', 'plugindir-path')
textdomain— пространство перевода — часть названия .mo-файла с переводом (например, broken-link-checkerиз broken-link-checker-ru-RU.mo)
abspath— путь к файлу с переводом относительно ABSPATH
plugindir-path— путь к файлу с переводом относительно директории с модулями
Обычно это выглядит примерно так:
### Create text domain for translations add_action('init', 'blc_textdomain'); function blc_textdomain() { load_plugin_textdomain('broken-link-checker', false, 'broken-link-checker'); }
2. В тему
Для загрузки перевода темы в файл functions.phpнеобходимо добавить функцию load_theme_textdomain('textdomain'), где textdomain— название вашего .mo-файла с переводом.
Обычно это выглядит так:
load_theme_textdomain('kubrick');
Откройте Poedit и создайте новый каталог с помощью команды File -> New Catalog.
Заполните необходимые поля: укажите название и версию проекта, сведения о переводчике, язык, кодировку текста, и, если необходимо, формулу обработки множественных чисел — именно с помощью этой формулы слово «комментарий», например, будет принимать правильные формы.

Для русского языка plural formula такова:
nplurals=3; plural=(n%10==1 && n%100!=11) ? 0 : ((n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20)) ? 1 : 2);
Укажите путь к файлам с кодом модуля или темы:

Укажите «ключевые слова» — то есть те функции, которые использованы для пометки строк:

Сохраните изменения, сохраните файл.
Имейте в виду, что название файла с переводом модуля должно формироваться по следующему принципу:
texdomain-languagecode
Где textdomain— пространство перевода (как правило, совпадает с названием темы или модуля или является сокращением от него), а languagecode— код языка.
Например: wp-downloadmanager-ru_RU.
Название файла с переводом темы состоит только из кода языка. Название пространства перевода используется только при пометке строк.
Переведите модуль или тему. Все готово!
Больше спасибо за статью! Очень помогло, особенно описание функции подключения mo файлов.
Кстати, может пригодится мой плагин для WP — Target Visitors — показывает сообщение для пользователей, пришедших с поисковых систем, очень полезный. Вчера доделала поддержку русского и английского, благодаря вам
Спасибо. Для меня оказалась полезной информация о существовании редактора «Poedit». До него альтернативы редактору «Vi» не видел
но для редактирования словарей «Poedit» безусловно лучше.
Спасибо за полезную информацию. Всё понятно и подробно расписано!