Локализация WordPress темы далеко не второстепенная вещь для каждого разработчика. Если ваша тема не готова к переводу, это может остановить ее распространение только на вашем языке. Чтобы сделать новую тему популярной, нужно добавить возможность перевести ее на свой язык.

Что такое i18n и l10n

Первое в чем следует разобраться это чем отличаются i18n и l10n.
Интернационализация и локализация (сокращенно i18n и l10n соответственно) являются терминами, которые используются для описания действий, чтобы сделать WordPress (и другие подобные проекты) доступными на других языках, кроме английского для людей из разных регионов, имеющих различные диалекты и местные предпочтения. Процесс локализации программного обеспечения происходит в два этапа. Первый шаг, когда разработчики предоставляют механизм и способ для возможного перевода программы и ее интерфейс в соответствии с местным предпочтениям и языков для пользователей по всему миру. Этот процесс является интернационализация (i18n). Разработчики WordPress это уже сделали, так что в теории, WordPress может быть использован на любом языке. Вторым шагом является фактическая локализация (l10n), процесс, с помощью которого текст на странице и настроек переведен и адаптирован к другому языку и культуре, используя нормативные рамки разработчиками программного обеспечения. WordPress уже был локализован на многие языки.

Понимание Localization Framework

Во-первых, давайте посмотрим на типы файлов, с которыми будем работать и таким образом, мы можем понять, что участвует в локализации темы. WordPress использует фреймворк локализации в GNU Gettext для перевода в нем есть три типа файлов:

POT (Portable Object Template)
Первый шаг в процессе локализации это использование программы, которая найдет в файлах WordPress код, содержащий функции __() или __e(), которые генерируются в POT-файл. Этот файл содержит весь текст для перевода.
PO (Portable Object)
Второй шаг включает в себя перевод текста из POT-файла в язык перевода, в котором хранятся оба языка — Английский и перевод, создается PO-файл. PO-файлы идентичны POT-файлам в каждом аспекте по их назначению.
MO (Machine Object)
Последний шаг, PO-файл преобразуется в читаемый формат машины.

Для чего нужен Text Domain

Первое, что вам нужно сделать, это определить свой текстовый домен (Text Domain). Что такое текстовый домен? Текстовый домен — это способ отметить переводы, которые принадлежат одному языку. Это делает языковые файлы гораздо более портативными, модульными и читаемыми. Обозначение текстового домена является простым делом, потому что название вашего плагина / темы определяет каким он будет. Текстовый домен должен соответствовать url названия (slug) вашей WordPress темы, которые, как правило, совпадает с именем папки с темой. Например, для темы Twenty Fifteen имя будет, Twenty Fifteen. Так называемый, slug – имя папки – будет «twentyfifteen». Так как текстовый домен должен быть таким же как url, следовательно это «twentyfifteen». Первое место, где должны нужно указать свой текстовый домен это в блоке комментариев в начальном блоке WordPress темы. Это делается, чтобы определить основные свойства вашего плагина/темы такие, как имя автора, название, тематические теги и так далее. Убедитесь, чтобы свойство Text Domain было добавлено верно. Вот блок комментариев темы Twenty Fifteen в файле style.css.

Включение функции load_theme_textdomain

Для того, чтобы ваша WordPress тема поддерживала файлы для локализации, необходимо включить следующую функцию в файл functions.php вашей темы:

Изменить «yourtheme» на имя вашей темы и «templatepath» на путь к месту назначения в папке WordPress Themes, где вы хотите сохранить ваши файлы перевода. Обычно создается папка «languages» в каталоге темы для сохранения в ней файлов.

Перевод для темы WordPress

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

Создание POT файла

Подробный процесс описан на официальной страничке http://codex.wordpress.org/I18n_for_WordPress_Developers#Generating_a_POT_file