21

Как русифицировать шаблон / плагин WordPress

Перевод шаблона (темы) или плагина WordPress осуществляется по одинаковой схеме.


Описание методики перевода изначально нашел здесь (на английском языке).

Весь процесс перевода разбивается на два основных этапа:

Подготовка файлов

Самое главное: текст, подлежащий переводу, должен выводится на экран с помощью php-функций __() и _e()
Если автор шаблона / плагина позаботился о переводе, и весь текст обработан с помощью этих функций, то можно сразу переходить к следующему этапу.
Если текст не обработан, обработан не полностью, или вы хотите добавить поддержку переводов в свою собственную разработку, тогда:

  • Придумайте идентификатор. Он нужен, чтобы отделять языковые файлы вашего шаблона / плагина от других. В качестве идентификатора лучше всего взять название шаблона или плагина, т.к. они уникальны. В нашем примере идентификатор: andreas09
  • В файлах шаблона весь текст, который требуется перевести, необходимо поместить в функции вида: _e("текст","идентификатор") или __("текст","идентификатор")
  • Функцию _e("текст","идентификатор") используйте, когда надо перевести простой текст. Например:
    <h2>Not Found</h2>

    надо заменить на

    <h2><?php _e("Not Found","andreas09");?></h2>
  • Функцию __(«текст»,»идентификатор») используйте, когда текст передается в качестве параметра в другую функцию. Например:
    <?php edit_post_link("Edit"," "," ");?>

    заменить на

    <?php edit_post_link(__("Edit","andreas09")," "," ");?>
  • В некоторых случаях можно использовать функции «__()» и «_e()» без идентификатора. Например при разработке плагина на странице настроек очень часто используется кнопка Сохранить изменения (Save changes):
    <p class="submit">
    <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
    </p>

    В таком варианте (без использования идентификатора), перевод будет взят из основных языковых файлов WordPress. Поэтому эта стандартная фраза будет переведена на всех языках, для которых существует локализованная версия WordPress. Если же мы добавим идентификатор, то перевод будет взят из языковых файлов шаблона / плагина.

  • Для загрузки языковых файлов  шаблона, в файл functions.php необходимо добавить следующий php-код :
    <?php load_theme_textdomain('andreas09')?>
  • Для загрузки языковых файлов плагина, рекомендую использовать следующую функцию:
    function load_language() {
      $currentLocale = get_locale();
      $langDir = 'lang/'; // папка для mo-файлов
      $domain = 'andreas09';
      if (!empty($currentLocale)) {
        $moFile = dirname(__FILE__).'/'.$langDir.$currentLocale.".mo";
        if (@file_exists($moFile) && is_readable($moFile)) load_textdomain($domain, $moFile);
      }
    }

После подготовки всех файлов переходим к следующему этапу.

Перевод текста в Poedit

  • Скачиваем Poedit
  • Устанавливаем и производим начальную настройку (я оставил все опции по-умолчанию). Далее переходим в меню Файл->Создать каталог и вводим информацию о проекте:
    Poedit : информация о проекте

    Poedit : информация о проекте

    Самые важные строки: Кодировка и Кодировка исходного кода. Рекомендую выставлять оба этих параметра как utf-8.

  • На следующей вкладке Пути необходимо прописать путь к папке в которой располагаются файлы шаблона / плагина:
    Poedit : пути

    Poedit : пути

    По непонятной причине сделать это можно только вручную. Советую воспользоваться технологией copy/paste :)

  • Вкладка Ключевые слова. Здесь необходимо прописать названия функций «__» и «_e» (без кавычек и без круглых скобок):
    Poedit : ключевые слова

    Poedit : ключевые слова

     

  • Далее нажимаем Ок. После чего программа предложит создать .po файл. Если перевод выполняется на русский язык, сохраняем файл с именем ru_RUв папке шаблона / плагина:
    Poedit : сохранение .po файла

    Poedit : сохранение .po файла

     

  • После сохранения откроется окно Сводка об обновлении. Если все работает правильно, в окне будет отображен список найденных фраз, доступных для перевода:
    Poedit : сводка об обновлении

    Poedit : сводка об обновлении

     

  • Нажимаем Ок и в следующем окне приступаем к переводу найденных фраз:
    Poedit : окно перевода

    Poedit : окно перевода

     

  • Не забываем регулярно сохраняться.

На этом все!