. Создание плагина wordpress – часть 2 | Makarou.com - когда сайты превращаются в бизнес

Создание плагина wordpress – часть 2

Ну что же, настало время приступить к продолжению урока по созданию плагина для wordpress.

В прошлом уроке мы рассматривали с вами основы создания плагина. Сегодня мы с вами рассмотрим такую непростую вещь, как локализация плагина. :)

Сама система WordPress использует для локализации формат GNU gettext. Файлы имеют формат .PO и .MO, которые создаются программой Poedit. Саму программу можно скачать здесь.

Вообще, файл .PO можно отредактировать с помощью того же блокнота, но вот чтобы получить файл .MO, нужно открывать файл .PO в программе Poedit, и просто сохранить. После этого у вас в той же директории появится файл .MO, который и используется WordPress.

Я буду рассматривать пример локализации, с помощью обычного редактора php кода. :)

И так, приступим.

Возьмем любой файл .PO из шаблона вашей темы, или любой другой. Откроем его редактором php кода PHP Expert Edition, и в начале файла увидим вот примерно такие строки.


msgid ""

msgstr ""

"Project-Id-Version: So so def 1.0\n"

"Report-Msgid-Bugs-To: \n"

"POT-Creation-Date: 2008-12-15 21:57+0800\n"

"PO-Revision-Date: \n"

"Last-Translator: Andrey <macarou.com@gmail.com>\n"

"Language-Team: Andrey <http://www.makarou.com/>\n"

"MIME-Version: 1.0\n"

"Content-Type: text/plain; charset=UTF-8\n"

"Content-Transfer-Encoding: 8bit\n"

"X-Poedit-Language: Chinese\n"

"X-Poedit-Country: CHINA\n"

"X-Poedit-SourceCharset: utf-8\n"

"X-Poedit-KeywordsList: _e;__\n"

"X-Poedit-Basepath: C:\\php\\n"

"X-Poedit-SearchPath-0: .\n"

Это просто базовая информация о файле локализации, которую вы вводите, когда создаете .PO файл в программе Poedit.

Если захотите, можете как раз создать новый файл, а не открывать с шаблона.

И так, идем далее. :)

А вот дальше мы видим вот такие строки.


#: test-plugin.php:35

msgid "Test Plugin"

msgstr "Тестовый плагин"

Название файлов и строк, понятное дело отличается. :)

#: test-plugin.php:35 – название файла, в котором переводится надпись и соответственно номер строки  переводимой надписи.

msgid » Test Plugin » – фраза на английском языке (то есть стандартный язык с которого будем переводить).

msgstr » Тестовый плагин « – нужный перевод.

Теперь не закрывая этот файл, открываем наш главный файл плагина.

И перед вот этой строкой:


add_action('admin_menu', 'tp_add_tools_menu');

[/ccN_php]

Добавляем следующий код.

1

add_action('init', 'tp_init_locale',98);

add_action(‘init’, ‘tp_init_locale’,98); – с помощью этой функции выполняется установка нашей локализации.

tp_init_locale – это название нашей с вами функции которую мы напишем далее, для установки локализации по определению установленной локали в нашем движке.

Приступим к написанию самой функции. После функции:


add_action('init', 'tp_init_locale',98);

Пишем следующий код:


function tp_init_locale() {

$locale = get_locale();

$mo_file = dirname(__FILE__) . "/locale/".$locale.".mo";

load_textdomain('tesp_plugin', $mo_file);

}

$locale — определяет установленную локаль  в вашем движке.

$mo_file – здесь вы указываете путь до .MO файла вашего плагина, с названием .MO файла на конце.

load_textdomain – функция WordPress, которая устанавливает локализацию плагина в ваш движок. Первое значение — это название локализации (должно быть уникальное в вашем движке), которое будет использоваться в движке. Второе значение — это путь до .MO файла.

В итоге у нас получится вот такой файл.


/*

Plugin Name: Test Plugin

Plugin URI: http://makarou.com/

Description: Let's go!

Version: 1.0

Author: So so Def

Author URI: http://makarou.com/

*/

/*

Copyright 2010 So so Def (email : makarou.com@gmail.com)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with this program; if not, write to the Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/

add_action('init', 'tp_init_locale',98);

function tp_init_locale() {

$locale = get_locale();

$mo_file = dirname(__FILE__) . "/locale/".$locale.".mo";

load_textdomain('tesp_plugin', $mo_file);

}

add_action('admin_menu', 'tp_add_tools_menu');

function tp_add_tools_menu() {

add_submenu_page('tools.php', 'Test Plugin', 'Test Plugin', 10, <a href="http://www.php.net/basename">basename</a>(__FILE__), 'tp_manage_menu');

}

function tp_manage_menu(){

echo'Hello World';

}

Теперь я покажу, как использовать gettext функции WordPress , которые осуществляют перевод нужных нам строк.

__($message, $domain) – функция, переводит $message с использованием текущей локали $domain. С помощью этой функции вы можете переводить значения которые используются в функцияx для расчета, или для чего-нибудь другого, но не для перевода строк которые выдаются пользователю, то есть на экран монитора. :)

Пример использования:


__(' Test Plugin ', 'tesp_plugin');

_e($message, $domain) – функция аналогична предыдущей, но только она используется для перевода строк, которые выдаются пользователю, или если проще, то на экран монитора. :)

Пример использования:


_e(' Test Plugin ', 'tesp_plugin');

Теперь вы можете перевести название вашего плагина в пункте меню. Для этого отредактируем вот эту строку.


add_submenu_page('tools.php', __('Test Plugin', 'tesp_plugin'), __('Test Plugin', 'tesp_plugin'), 10, basename(__FILE__), 'tp_manage_menu');

Это все что могу сказать о локализации плагина. Теперь вы можете редактировать файл .PO под свой перевод. :)

Так же эти функции используются для локализации темы для wordpress, но мы это рассмотрим в других уроках.

Честно говоря, вроде ничего сложного тут и нет, но с другой стороны кто незнаком с азами программирования на php, для него это будет не очень легко. Если будут вопросы, задавайте, всегда рад на них ответить.

Постовой

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

WordPress

Понравился пост? добавь его к себе в закладки:
Хочешь быть всегда в курсе обновлений блога? подписывайся через: