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

Веб-сайты на WordPress посещают миллионы людей во всем мире. Для многих из них, английский язык не родной.

Целью данной статьи является показать вам, как правильно переводить любую тему или плагин с помощью методов интернационализации и локализации. Короче говоря, интернационализации (i18n) — это строки текста завернуты в конкретные функций вызова. Это практика делает текст готовым к локализации, в то время как сам процесс локализации (l10n) перевода текста для определенного региона. WordPress обрабатывает процесс локализации проверки конкретных файлов перевода, а затем выполняет перевод.

Приступая к работе

Первое, что вам нужно сделать, это решить, где хранить переводы. Обычно перевод файлов кладут в корневом каталоге темы или плагина. Процесс перевода состоит из трех этапов. Первый этап, создать тему или плагин, перевод заключается в использовании специальной функции, которая говорит WordPress , чтобы он загрузил файл перевода, если он существует на языке пользователя. Вы можете поместить вызов этой функции в файл functions.php вашей темы код:



<?php
$domain = "myplugin";
$path = "myplugin/languages/";
load_theme_textdomain($domain, $path);


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

Вот пример из файла functions.php темы twentyeleven:



<?php
load_theme_textdomain( 'twentyeleven', TEMPLATEPATH.'/languages' );

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


Здесь «twentyeleven» является областью, которая соответствует названию каталога темы. Вы можете использовать все, что хотите, но это лучший вариант. В качестве второго параметра, TemplatePath константа используется для того, чтобы получить корневой каталог темы, а затем объединить строку « /languages » и путь к файлам, для получения перевода файлов из папки языков.

В случае, если функция плагина используется аналогично, и использует три параметра:



<?php load_plugin_textdomain($domain, $abs_rel_path, $plugin_rel_path);


$ Abs_rel_path — старый параметр, лучше не использовать, просто установить false или null . $ plugin_rel_path — это относительный путь к файлу перевода. Вы должны поместить его в файл плагина, а не в functions.php:



<?php
       add_action("init", "pluginname_init");

       function pluginname_init() {
          load_plugin_textdomain("имя плгина", false, "myplugin/languages/");
}


Использование функций локализации

Далее вам необходимо определить, какие текстовые строки будут переведены. Это можно сделать, заключив содержание текста с функциями, которые определяются типом локализации. Существует много функции локализации, но мы используем только два.

Первая функция готовит что ваш текст для перевода и возвращает его для использования в PHP. Вот два примера:



<?php
       $text = "Привет мир!";
       $domain = "название плагина";
         __($text, $domain); // начинается с двойного подчеркивания


и



<?php edit_post_link(__("Edit", "twentyeleven"), '<span class="edit-link">', "</span>");


__ () Функция принимает текстовую строку в качестве параметра, и смотрит на переведенную версию $text в указанном файле с переводом, и возвращает результат, если таковой имеется. Он используется для управления отображением текста, и уже содержится внутри тегов PHP. При отсутствии файлов локализации, отличающихся от русского, то текст останется прежним. Значение переменной $domain позволяет WordPress признать его как часть вашей темы или файлы перевода плагина.

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



<?php
_e($text, $domain);


_e () функция ищет переведенную версию $text и отображает результат на экран. Это может быть использовано для заголовков, которые будет отображаться на экране, которые еще не содержатся в тегах PHP.

В некоторых случаях вы будете использовать заполнители для вставки динамических данных в текстовые строки во время выполнения. Заполнители полезны, поскольку они позволяют переводить строки, не путая их друг от друга. Функций перевода в WordPress заполнители не выходят сами по себе, так что вам нужно использовать соответствующую функцию PHP, такую как printf() или sprintf() .



<?php printf(__("About %s", "twentyeleven"), get_the_author());


Здесь get_the_author () возвращает автора, который заменяет заполнитель на printf() .

Иногда нужно несколько заполнителей в одной строке printf() и sprintf() справиться с этим замечательно. Лучше всего использовать пронумерованные заполнители, потому что порядок слов в одном языке может быть разный.



<?php
$site_name = get_bloginfo("name");
$comments_count = wp_count_comments();
$mod_comments = $comments_count->moderated
$appr_comments = $comments_count->approved
$all_comments = $comments_count->total_comments

printf(__('There are %3$s comments on %4$s. %2$s approved and %1$s in moderation.', $domain), $mod_comments, $appr_comments, $all_comments, $site_name);


Создание файлов с переводами

Теперь с вашей темой или плагином, вам нужно создать файлы, которые WordPress будет использовать для поиска переводов.

Вам нужно создать первый файл POT (Portable Template Object) — в этом файле перечислены все переведённые строки текста, которые можно найти в приложении, и служит в качестве шаблона для отдельных файлов PO. PO (Portable Object) — это файл отображает текстовые строки с фактическим переводом. Переводчики работают с этим файлом, чтобы сделать перевод. POT и PO файлы не являются необходимыми для выполнения перевода вашего плагина, но хорошо упаковав его с помощью плагина для использования другими пользователями, что может понадобиться для обновления переводов в соответствии с их потребностями. И, наконец, файл PO компилируются в МО (Machine Object) — этот файл является готовым файлом перевода, который WordPress использует для перевода интернационализации текстовых строк для вашей темы или плагина.

Когда переводчики создают переводы в вашу тему или плагин они используют POT файл, чтобы создать два файла, $locale .po и $locale .mo. моменты для темы, а pluginname-$locale .po и pluginname-$locale .mo моменты для плагина. > $locale здесь представляет собой сочетание кода языка и страны , указанный на GNU Gettext, вы можете увидеть сокращение язык и страну в руководстве Gettext. Например, WordPress использует « en_US » в качестве языка по умолчанию. «EN» представляет английский язык, и США представляет страну и диалект (country/dialect).

Разнообразие средств для перевода, которые доступны с открытым исходным кодом их можно скачать бесплатно. Однако одним из наиболее распространенных инструментов является Poedit который прост и удобен в использовании. Вот шаги для создания POT файл, используя Poedit :

Откройте редактор Poedit , выберите Файл > Новый каталог . Настройки окна с тремя вкладками. На вкладке Название проекта и версия , нужно заполнить все поля ввода, которые имеют отношение к вашему плагину или теме. В строке Команда пишем имя плагина или темы в нашем примере тема twentyeleven . Формы множественного числа можно использовать такие:



nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;


.

перевод WordPress тем и плагинов
Свойства каталога с переводом

В закладке Пути исходных файлов , изменить путь к базе .. / и добавить дополнительные пути . если перевод в папке плагина languages . Если нет, то оставьте это по умолчанию.

перевод WordPress тем и плагинов
Пути исходных файлов

На вкладке Ключевые слова исходных файлов , введите функций, которые вы узнали выше, в качестве ключевых слов.

перевод WordPress тем и плагинов
Ключевые слова исходных файлов

Нажмите кнопку ОК и сохраните файл в themename.po или pluginname.po в каталог c языком. Poedit будет сканировать файлы PHP __ () и _e() завернутые строки и автоматически выводить их в диалоговом окне.

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

Нажмите кнопку ОК . Теперь вы увидите окно с строками.

перевод WordPress тем и плагинов
Тема или плагин готовы к переводу

Сохраните файл снова и закройте его. В вашем каталоге languages вы увидите PO и MO файлы, созданные Poedit . Удалите файл MO и переименуйте файл PО в расширение .pot вот и все. Теперь ваша тема или плагин готовы к переводу.

Если у вас есть необходимые навыки, вы можете сделать перевод файлов. Для этого, выберите Файл > Создать каталог из POT файла… Найдите POT файл, откройте его и нажмите кнопку ОК для последующей настройки каталога (они точно такие же). Poedit спросит вас, вы хотите сохранить ваш новый файл PO без изменений — дать ему соответствующее имя, например ru_RU.po или pluginname-ru_RU.po и сохранить его в каталоге с языком.

Теперь достаточно нажать на строку, которую Вы хотели бы перевести в Poedit и введите перевод в поле в нижней части окна Poedit .

перевод WordPress тем и плагинов
Перевод текста файлов PO, MO

Последнее, что вам нужно сделать, чтобы увидеть вашу тему или плагин с переводом редактируйте config.php файл. WordPress ищет любые переводы с языком и загрузит их. Если вы установите ru_RU (русский), WordPress будет подключать файл под названием ru_RU.mo для темы, или pluginname-ru_ru.mo для плагина.

Файл config.php


<?php
define('WPLANG', ''); // это значение установлено по умолчанию для свежей установки WordPress
define('WPLANG', 'ru_RU') // значение второго параметра вашей локализации


Заключение

Перевод тем и плагинов WordPress довольно простой процесс. Не нужно быть гуру в PHP, это всего лишь несколько простых шагов, в логической последовательности.

2 комментария на тему “Перевод плагинов и тем WordPress”

  1. комментарии

    Помогите, плиз, разобраться.
    Сделал перевод шаблона с помощью плагина CodeStyling Localization.
    Переведено всё. Вот плагин выдал информацию:
    Total ( 4576 / 4576 ) |
    Plural ( 104 ) |
    Context ( 172 ) |
    Not translated ( 0 ) |
    Comments ( 0 ) |
    Code Hint ( 0 ) |
    Trailing Space ( 26 )
    Нажимал: «Генерировать мо-файл».
    Когда открываю файл ru_RU.po там вообще 0% переведено. Песец какой-то.
    Файлам .ро и .мо дал права на запись 777. Как сохранить перевод?

  2. комментарии

    Очень подробно и понятно все описано, благодарю за труд.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML -теги и атрибуты: <a href= http://pixelcom.crimea.ua/"" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>