Рубрики
WordPress Плагины Шаблоны

Как русифицировать шаблон / плагин 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 : окно перевода

     

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

На этом все!

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

Вместо

load_theme_textdomain('')

нужно в файле functions.phpвашего шаблона вставить

load_theme_textdomain( 'имя_директории_шаблона', get_template_directory() . 'путь_к_файлу_с_переводом(PO)' );

.

Странная штука – обновил вп из консоли – на русскую. Теперь
“1 комментарий” – НО “4 камментария”.

Видимо, косяк перевода.
И похоже, что он в переводе темы, а не самого WP.
В общем ищите глюк в файлах перевода темы, или напрямую отредактируйте шаблон (comments.php)

Спасибо!
Опыт по этому делу имеется, но както так получается что каждый раз как надо перевести, я забываю “как”.
В общем, спасибо! Полезно!

Почему мошенники? ))
Я вот тоже предлагаю. Не все же знают английский, а некоторые шаблоны вообще надо подготавливать к переводу. В общем спрос есть на такие услуги.

вообще в прошлый раз, когда у меня был старый пре старый поедит я делал вот по этой инструкции: http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/3/
 
наверное в теме косяк (не знаю ) или в новом самом последнем поэдите..заи..ся уже..раньше то всё работало..стоило обновиться и на тебе надо отдохнуть..пусть будет на английском хрен сним
 
спасибо! что помогали всё это время

неделю спустя разобрался =)) ну это вообще прикол!!!
у меня на компе файлы вида ru_RU копирую их на фтп через тотал командер.. ну всё нормально вроде.. блин..и сегодня пришла идея..дай ка попрбую на самом фтп просто переименовал в ru_RU и всё заработало!!
 
п.с
вопрос как получается что ru_RU при заливании на хостинг становятся ru_ru =(( что за такое..

Добрый день..пользуювь версией поедит 1.4.6
хочу перевести тему
– открыл фаил по
– перевёл всё что надо было
– указал в настройках имя + имаил + страну кодировку не трогал там было UTF
– нажал обновить (update) если жму ОК то всё хорошо если жмут возврат то выскакивает ошибка – не удалось обновить
– жму ОК
– жму сохранить
– проверяю все переводы есть внутри
– жму save as сохраная ru-ru, Mo Он сам создаёт
– заливаю и нифига!! =(( весь день угробил..все варианты перепробовал!! =((
кэш чистил , вп конфиг проверял (там ру-ру) и англ и ру версии одновременно закидывал.. и даже все ПО и МО версии удалял!! ну нифига..английская версия и всё!!!! помогите..а то сейчас будет нервный срыв..что могло быть не так?

Во-первых по стандарту имя языкового файла должно быть ru_RU. Файлы перевода должны находится в корневой папке темы.

Также в файле functions.php должна быть вызвана функция load_theme_textdomain(‘id’), где id – это идентификатор, который также должен присутствовать в функциях __() и _e(). Например _e(‘Дата’, ‘id’).

c ru_RU пробовал а вот с functions.php ничего не знал =( ведь до этого я переводил другую тему и не трогал functions.php – всё работало.

в фанкшанс.пхп нашёл
// Localization Init
load_theme_textdomain(‘mytheme”);
 
извините за спамм…пытаюсь уточнить максимум деталей

Ага, значит идентификатор у вас – mytheme.

Если посмотреть например в index.php – все фразы подлежащие переводу должны быть внутри функций – типа __(‘Фраза’, ‘mytheme’). Здесь важно наличие идентификатора mytheme в каждой функции. Если вы видите функцию без идентификатора – __(‘Фраза’). То внутри скобок через запятую надо добавить ‘mytheme’.

Добрый день, такой вопрос, тема вордпресса на английском языке, пытаюсь вручную перевести на испанский, так как сайт для испанца, учитывая, что испанский отличается от английского, в частности много слов пишутся с ударением. Так например, при замене английского слова прописываю Suscripción мне выдает Suscripci�n , не подскажете от чего это зависит? заранее спасибо

Был в отъезде, так что сразу ответить не мог.

По теме. Советую проверить везде настройки кодировки (везде установить UTF-8).

Сначала в Poedit. При создании проекта в поле кодировка UTF-8.

Проверить настройки WordPress (Параметры -> Чтение -> Кодировка страниц и лент).

Проверить настройки php. В php.ini параметр default_charset.

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

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