Локализация вашей темы WordPress

Категория: WordPress Тэги:

Важной частью разработки WordPress тем, то что его можно сделать многоязычным. И для это используются файлы локализации. Но для работы с ними надо объявить так называемые «text domain». Тут я расскажу как сделать свои файлы локализации. Первое, что нужно сделать, это загрузить «text domain», добавив следующую строку в файл functions.php нашей темы:

load_theme_textdomain('mydomain', get_template_directory() . '/languages');

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

Второй аргумент определяет папку языковых файлов. Чтобы загрузить эти файлы, функция должна быть привязана к after_setup_theme действия:

add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
    load_theme_textdomain('mydomain', get_template_directory() . '/languages');
}

Таким образом мы указываем что языковые файлы для вашего «mydomain» будут находиться в папке «languages» вашей темы сайта. Эти файлы имеют расширение .po и .mo.

Файл .po это файл с вашими переводами. Вот пример  содержания этого файла:

# Translation of Development in Russian
# This file is distributed under the same license as the Development package.
msgid ""
msgstr ""
"PO-Revision-Date: 2015-09-24 10:15+0200\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 1.8.1\n"
"Project-Id-Version: Development\n"
"POT-Creation-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ru_RU\n"

# @ mytheme
#: wp-activate.php:114 wp-signup.php:177
msgid "Blog"
msgstr "Блог"

# @ mytheme
#: footer.php
msgid "All rights reserved"
msgstr "Все права защищены"

В начале идёт небольшая общая информация, а дальше уже переводы. Перевод состоит из 2х параметров «msgid» — что переводим, «msgstr» — на что переводим (сам перевод). Так же что бы знать в где стоит переводимое слово в шаблоне, можно указывать комментарием после символа # название файла и строку.

После того как файл с расширением ru_RU.po составлен, его надо скомпилировать в файл в расширением ru_RU.mo. Это можно сделать с помощью программы Poedit, в меню Файл -> Компилировать в формат МО. На этом работа с фалами перевода окончена. 

Теперь для добавления перевода в сам шаблон нам достаточно вставить такой php код: 

<?php _e("Categories", "mydomain");?>

Первым параметром передаём слово которое будет выводиться по умолчанию и будет переводиться на другой версии сайта.  И вторым параметром передаётся наш «text domain».