Кроме английского языка, наиболее распространенного в интернете, неплохо было бы подумать о людях, говорящих на других языках, которым часто приходится локализовать WordPress-темы. В сегодняшнем пошаговом руководстве, вы научитесь создавать тему для WordPress, которая будет переводимой для любого языка.
Шаг 1 – Добавление необходимых функций
Давайте начнем с основы: вставьте следующий код в ваш файл functions.php.
load_theme_textdomain( 'Cats Who Code', TEMPLATEPATH.'/languages' ); $locale = get_locale(); $locale_file = TEMPLATEPATH."/languages/$locale.php"; if ( is_readable($locale_file) ) require_once($locale_file);
В первой строке находится функция load_theme_textdomain()
. Эта функция позволяет загрузить Текстовый Домен. Вы можете выбрать для него любое имя, но помните, что оно должно быть уникальным. Так что наиболее практичным будет назвать его также как и саму тему.
Шаг 2 – Интернационализируйте свою тему
Для перевода нашей WordPress-темы, мы будем использовать функции PHP gettext
.
GetText
имеет две функции: _e
и __
(два подчеркивания).
Функция _e
используется для печати «простого текста», а функция ___
используется в тех случаях, когда отображаемый текст заключен в php-тэги.
Примеры:
<?php _e("The page you're looking for doesn't exist", "Cats Who Code"); ?> <?php the_content(__('Read more...', "Cats Who Code")); ?>
Снова обратите внимание на имя текстового домена (Cats Who Code) выше, помните, что оно должно быть точно таким же, как и в файле functions.php.
Самая скучная часть работы заключается в том, что вам придется заменить каждую одиночную строчку необходимой функцией. В зависимости от того, как много строк имеется в вашей теме, это может занять значительное количество времени. Я что-то слышал о GNU-инструментах, для более простого получения строк из файла, но сам никогда ими не пользовался, поэтому не могу ничего сказать. Если интересуетесь, поищите в гугле xgettext.
Шаг 3 – Создание собственного файла .po
Теперь, ваша тема WordPress, может быть легко переведена на любые языки. Но для отображения текста на иностранном языке, вам понадобится добавить файл .po
.
.po
файл расшифровывается как Portable Object, в основном эти файлы содержат строку и ее перевод на другой язык. Например, если вы загрузите французскую версию WordPress, у вас в архиве будет находиться файл fr_FR.po. Этот файл содержит все переводы, необходимые для того, чтобы ваша тема заговорила по-французски, так что она скажет Bienvenue, вместо обычного Welcome.
Хорошие новости в том, что вам не придется выискивать все, необходимые для перевода строчки в вашей теме. Существует бесплатный онлайн-инструмент под названием icanlocalize.com, который умеет сканировать PHP-файлы, и создавать .po файлы, посредством выбора всех строк, заключенных в функции __("txt", "домен")
, и _e("txt", "домен")
. Строки должны быть заключены в либо в двойные, либо в одинарные кавычки, в любой символьной кодировке.
Po файлы можно отредактировать с помощью PoEdit, бесплатной программы, специально предназначенной для этой задачи:
Как вы уже наверное догадались, вы можете перевести каждую строку текста. После того как все переведете, сохраните .po файл. PoEdit также генерирует .mo файл, который представляет собой скомпилированную версию .po файла.
Шаг 4 – Реализация
Теперь осталось выполнить наиболее «сложную» часть работы. Единственное, что вам осталось сделать, это описать вашу WordPress локаль.
Для этого, вам сначала нужно получить ваш язык и код страны. Например, если ваш язык французский, и ваше местоположение – Франция, ваш код будет fr_FR. GNU-инструкция по gettext
, содержит страницы, который помогут вам найти коды и вашей страны и языка.
После того, как вы узнаете ваши коды, откройте файл wp-config и найдите константу WPLANG
. Если она существует, просто замените существующий код, своим. Если ее нет, просто вставьте следующую строчку (со своим собственным кодом, конечно же)
define ('WPLANG', 'fr_FR');
Перевод статьи «How to make a translatable WordPress theme«, автор Jean-Baptiste Jung
Спасибо за пост! Но есть вопрос!
Адаптировал тему, создал .mo .po файлы и перевел содержимое, но на сайте отображается только переведенный язык, и при смене языка ничего не изменяется (перевод осуществлялся с русского на казахский язык)! То есть в обоих случаях отображается только казахский язык! Заранее благодарен!
Привет!
Таких сайтов навалом ты хоть в интернете смотрел?
открой яндех набери в поиске, и але, всё, что хочешь.
Наконец-то я нашел четкую инструкцию как мне перевести тему для блога WordPress.
А то меня мои клиенты уже замучили этим вопросом!
Спасибо автору за ценный совет!
Давно эта тема не поднималась)
Смотрю народ оживился
Спасибо за хорошую статью. Для подстраховки, кое-что хочу уточнить: а в случае этого кода, как будет выглядеть измененный (речь о шаге 2)?
Опубликовано в рубрике
пишу код, а отображается только «Опубликовано в рубрике» …..
напишу только кусочек:
eta»>Опубликовано в рубрике <?
Еле-еле нашёл что искал…Автору огромное спасибо!!!