softsprint menu Заказать

Перевод темы WordPress: _e функция и .mo, .po файлы

Декабрь 5, 2016 в 12:56 | wiki

Эта заметка посвящена переводу тем WordPress без подключения плагинов, например, qTranslate X.

Краткий алгоритм такой:

1) В файлах PHP применяем функцию такого вида (пример для тега h1):

1
<h1><?php _e('title', 'softsprint'); ?></h1>

‘title’ — это текст, который мы будем переводить. Он и будет отображаться в теге h1 нашей темы.
‘softsprint’ — название папки темы, которую подвергаем переводу. В нашем случае папка называется softsprint.
Подробнее о функции _e можете прочитать здесь:
https://codex.wordpress.org/Function_Reference/_e
http://wp-kama.ru/function/_e

2) Вытягиваем значения для перевода из файла PHP с помощью онлайн-сервисов, например, http://www.icanlocalize.com/tools/php_scanner и получаем файл .po

3) Открываем полученный файл .po в софте Poedit и прописываем переводы для каждого значения. Там же определяем локаль (задаём язык): например, ru_RU:
poedit-ru_ru

4) Сохраняем наш .po файл и компилируем его в .mo файл. Скомпилированный .mo файл переименовываем в ru_RU.mo (или иначе, согласно локации нужного нам языка).
Список языков и стран:
http://www.gnu.org/software/gettext/manual/html_chapter/gettext_16.html#Language-Codes
http://www.gnu.org/software/gettext/manual/html_chapter/gettext_16.html#Country-Codes

5) Помещаем файл ru_RU.mo в папку languages, расположенную в папке нашей темы (в нашем случае это — softsprint). Файл .po необязательно помещать в папку, но сохранить его себе нужно для возможных редактирований/добавлений переводов, которые могут понадобиться в будущем

6) В файле functions.php нашей темы прописываем:

1
2
3
4
<?php function my_theme_setup(){
	load_theme_textdomain('softsprint', get_template_directory() . '/languages');
}
add_action('after_setup_theme', 'my_theme_setup');?>

‘softsprint’ — название папки нашей темы;
‘/languages’ — папка, в которой размещён файл ru_RU.mo

Детальнее о функции load_theme_textdomain здесь: http://wp-kama.ru/function/load_theme_textdomain
В результате получаем лаконичный код в файлах PHP без лишних плагинов (например, qTranslate X ) и конструкций такого вида:

1
<li><?php _e('Google Analytics и счётчики'); ?></li>

Кроме того, редактирование перевода становится централизованным (с одного файла .po) и не требует открывать и редактировать каждый файл php отдельно.

Давайте обсудим

softsprint heart

Наши контакты

Львов, Украина
mob: +380 97 551 44 55
skype: softsprint.net

Скажите Привет!