Очередной блог фрилансера

коротко и полезно о веб-разработке

Menu Close

Как создать переводимую тему для WordPress

translatable-wordpress-themeКроме английского языка, наиболее распространенного в интернете, неплохо было бы подумать о людях, говорящих на других языках, которым часто приходится локализовать 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", "домен"). Строки должны быть заключены в либо в двойные, либо в одинарные кавычки, в любой символьной кодировке.

icanlocalize

Po файлы можно отредактировать с помощью PoEdit, бесплатной программы, специально предназначенной для этой задачи:

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

Рассказать друзьям

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