Перевод шаблона (темы) или плагина 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
- Устанавливаем и производим начальную настройку (я оставил все опции по-умолчанию). Далее переходим в меню Файл->Создать каталог и вводим информацию о проекте:
Самые важные строки: Кодировка и Кодировка исходного кода. Рекомендую выставлять оба этих параметра как utf-8.
- На следующей вкладке Пути необходимо прописать путь к папке в которой располагаются файлы шаблона / плагина:
По непонятной причине сделать это можно только вручную. Советую воспользоваться технологией copy/paste :)
- Вкладка Ключевые слова. Здесь необходимо прописать названия функций «__» и «_e» (без кавычек и без круглых скобок):
- Далее нажимаем Ок. После чего программа предложит создать .po файл. Если перевод выполняется на русский язык, сохраняем файл с именем ru_RUв папке шаблона / плагина:
- После сохранения откроется окно Сводка об обновлении. Если все работает правильно, в окне будет отображен список найденных фраз, доступных для перевода:
- Нажимаем Ок и в следующем окне приступаем к переводу найденных фраз:
- Не забываем регулярно сохраняться.
На этом все!
21 ответ к “Как русифицировать шаблон / плагин WordPress”
Вместо
нужно в файле functions.phpвашего шаблона вставить
.
спасибо! очень помогло!
Странная штука — обновил вп из консоли — на русскую. Теперь
«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 — всё работало.
Вот так и оставьте. В wp-config.php пусть тоже будет ru_RU
в фанкшанс.пхп нашёл
// 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.
Ничего не понял, но всё равно спасибо! А на русский тоже можно таким способом переводить??
Конечно! С любого языка на любой. Хоть с русского на русский )