Допустим вы написали плагин для wordpress. Что дальше? Можно ли как то расширить аудиторию пользователей, чтобы стяжать ещё большую славу :)? Ответ, конечно же, — да, можно. Иначе этой статьи бы не было. Расскажу, как сделать и подключить файлы переводов для некого абстрактного плагина.
Сначала разберемся как же устроена «многоязычность» в wordpress. Достаточно поковырять любой многоязычный проект и будут ясны составляющие этого коктейля, а именно:
- Использование специальных функций движка:
где $text — строка подлежащая переводу, а $domain — это префикс файла-словаря, откуда следует брать перевод. Весьма разумная задумка с префиксом файла, позволяет получать уникальный перевод одной и той же фразы в контексте данного модуля.
- Наличие специальных языковых файлов с переводами и расширениями .po и .mo. Файл PO — это по сути файл-проект, для системы он не нужен, а нужен он тем, кто тоже хочет по-переводить ваш плагин на свой язык. Тогда они берут его за основу для своего языка. Вообще, по правилам хорошего тона, следует выкладывать ещё файл с расширением .pot, но об этом чуть чуть позже. Файл .mo, как раз содержит скомпилированные для сайта переводы и загружается системой, если мы скажем, где его можно взять.
- Системе нужно сказать, что у нас есть файлы переводов, и указать где они лежат, но сделать это нужно до того, как сами фразы будут пытаться переводиться — т.е. на стадии инициализации.
Пойдем прямо по пунктам.
С функциями __($text, $domain) и _e($text, $domain), думаю, все понятно. Разве что, пока не ясно, где мы задаём значение $domain. Узнаем это позже.
Второй пункт — нужно подготовить словари. Где взять редактор и как вообще готовить эти словари. Такой редактор есть, называется PoEdit, в вот домашняя страничка PoEdit. Скачайте его от туда. Редактор позволит создать как новый файл .po, так и нужный нам .mo. Можно также сделать .po вручную, т.к. это обычный текстовый файл. Наиболее простой способ — взять какой то готовый .po (.pot) файл, поменять значения в шапке на подходящие вашему проекту и добавить после шапки строки с вашими ключевыми константами, переводом которых вы озадачены. Давайте взглянем на такой пример:
После шапки (в которой принципиальное значение, наверное, имеет только указание на кодировку) идут однотипные пары значений — msgid и msgstr. Сначала в msgid вы указываете что переводить, а потом в msgstr — на что переводить. Файл, в котором указаны только значения msgid (как в нашем примере) — записывается с расширением .pot — им будет удобно пользоваться другим разработчикам-локализаторам, которые захотят перевести ваш плагин на свой, к примеру, родной язык.
Копия .pot записывается с расширением .po и открывается PoEdit. Там мы видим довольно простую картину — два окошечка, в одном надо выбирать фразы, а во втором вводить переводы этих фраз. Все довольно просто, думаю, вы разберетесь. Перед выходом из программы, сохранитесь. Автоматически будет сгенерирован файл .mo.
У нас практически все готово. Осталось правильно назвать наши файлы и куда то их сложить. Имена языковых файлов состоят из двух частей: [domain]-[xx_XX].mo, [domain]-[xx_XX].po и файл [domain].pot. Вместо [domain] рекомендую использовать имя вашего плагина. [xx_XX] — это язык локализации. Он, к примеру, устанавливается в файле wp-config.php. Для русского языка выглядит как «ru_RU».
Куда сложить файлы. Рекомендую (это не обязательно) сделать для них отдельную папку внутри папки вашего плагина, например «languages».
Тогда нам останется выполнить последний шаг. А именно, сообщить wordpress, что у нас есть файлы перевода. Типично это выполняется так:
Теперь посмотрим пример кода (до и после), где мы выполняем вывод текстовой константы:
Если остались ещё вопросы — пишите.
Не получается по Вашей схеме русифицировать плагин eSop :(
Это, фактически, официальный гайд. Попробуйте почитать ещё и здесь — http://codex.wordpress.org/I18n_for_WordPress_Developers, авось найдете, что у вас не стыкуется.
Ой спасибо! Перевел FancyBox и подключил, до этого какие то продвинутые способы подключения насмотрелся, а так как в функциях несилен, то неполучалось, а по вашему способу, в легкую!
Если Вы заинтересованы в инструменте, который обеспечивает быстрый и эффективный перевод тем и плагинов WordPress, я рекомендую Вам использовать этот инструмент на базе web: http://poeditor.com/ Особенностью данного инструмента является наличие плагина, который Вы можете использовать для интеграции его API в Ваш WordPress. Это позволяет Вам сэкономить значительное время на процессе организации файлов.