Здравствуйте, уважаемые читатели wmbn.ru! Сегодня хотелось бы затронуть немного нестандартную тему для многих блоггеров, а именно перевод движка WordPress, так сказать его полную или частичную локализацию. Почему нестандартную, ну я не думаю, что кто-то будет загружать WordPress на родном английском языке, а установит готовый локализованный движок. Хотя, возможно, есть такие, кому будет интересным локализация (по крайней мере тем, кто выкладывает уже готовые русифицированные движки).

Локализация WordPress

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

Принцип локализации WordPress, файлы перевода

Для начала хотелось бы поговорить об общих принципах перевода исходного кода WordPress, а точнее файлах перевода. Весь перевод реализуется в *.mo и *.po файлах, которые используются при переводе шаблонов WordPress. Однако тут есть небольшие различия, а именно — *.po файл является файлом для «редактирования», в котором производятся все изменения, касаемые локализации WordPress и не только.

А *.mo файл является уже «скомпилированным» файлом перевода, который в блокноте то и не откроешь. Для открытия WordPress потребуется специальные редакторы, которые предоставлены на странице, посвященной переводу. Там же и советы, а так же способы перевода, которые можно использовать. Я же воспользуюсь готовым решением — плагином, с помощью которого можно русифицировать, да и вообще перевести на любой другой язык ваш сайт. Данный подход называется, если правильно понял, backend (бэкэенд), а перевод шаблонов frontend (фронтэнд).

Для интереса давайте рассмотрим файл локализации *.po (ru_RU.po):

msgid ""
msgstr ""
"Project-Id-Version: WordPress 3.3.1 Russian \n"

Это начальный код файла, который содержит информацию о локализации. Если взять код из страницы помощи при локализации, то он начинается:

# LANGUAGE (LOCALE) translation for WordPress.
# Copyright (C) YEAR WordPress contributors.
# This file is distributed under the same license as the WordPress package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.

Разница в том, что… короче символы другие, а затем все точно так же, как и в первом файле:

msgid ""
msgstr ""
"Project-Id-Version: WordPress VERSION\n"

Далее начинается сам перевод, который имеет следующую структуру:

  • Указание названия файла движка, в котором будет осуществляться перевод (имя.расширение и строка перевода);
  • Оригинальное обозначение (текст или сообщение), которое будет переводиться;
  • Текст перевода сообщения;

Собственно так и выглядит данная реализация перевода:

#: wp-comments-post.php:13
msgid "Sorry, comments are closed for this item."
msgstr "Извините, но это пример перевода движка WordPRess."

Вот таких вот участков можно встретить очень большое количество — все зависит от того, сколько элементов нужно перевести. Осталось данный файл преобразовать в *.mo переводчик и залить его в папку wp-content/languages (создать его, если он не имеется).

Добавить бы хотелось про принципы перевода (локализации) — не надо создавать файлы *.po и *.mo. Первый создается автоматически редактором, так как для удобного перевода WordPress на другие языки разработчики заранее подготовились, добавив в участки кода операторы (символы), которые указывают, что при создании *.po файла нужно учесть эту строку для перевода (gettext вроде бы, который заменен на __). Ну а *.mo файл, или готовый файл локализации, редактировать вообще не надо, та как это результат от первого файла, где перевод создавался.

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>