WordPress предлагает разработчикам множество функций для упрощения создания мультиязычных сайтов. Одной из таких функций является __()
. В этой статье мы подробно рассмотрим, что такое функция __()
, как она работает и как её правильно использовать.
Что такое функция __()
в WordPress?
Функция __()
является одной из основных функций для интернационализации (i18n) и локализации (l10n) в WordPress. Она используется для перевода строк текста, что позволяет разработчикам создавать многоязычные темы и плагины. Основная задача функции — возвращать переведённую строку, если перевод доступен, или оригинальную строку, если перевода нет.
Синтаксис функции __()
__( $text, $domain );
$text
(обязательно): Строка текста, которую нужно перевести.$domain
(необязательно): Текстовый домен. Используется для группировки связанных строк перевода. Если не указан, используется текстовый домен по умолчанию.
Примеры использования функции __()
Рассмотрим несколько примеров использования функции __()
в реальных сценариях.
Базовое использование
echo __( 'Hello, World!', 'my-text-domain' );
В этом примере строка 'Hello, World!'
будет переведена на язык, установленный в WordPress, если для неё существует перевод в указанном текстовом домене 'my-text-domain'
.
Перевод с переменными
Иногда вам нужно перевести строку, содержащую переменные. В этом случае можно использовать функцию sprintf()
вместе с __()
.
$number_of_posts = 5;
printf( __( 'You have %d new posts', 'my-text-domain' ), $number_of_posts );
Здесь %d
заменяется значением переменной $number_of_posts
, а строка переводится.
Локализация вашей темы или плагина
Чтобы ваши строки переводов работали, нужно создать файлы переводов (.po
и .mo
). Вот шаги для локализации вашей темы или плагина:
- Создайте файл шаблона переводов (
.pot
):Используйте инструмент, например, Poedit или WP-CLI, чтобы сгенерировать файл шаблона переводов из вашего кода.
wp i18n make-pot . languages/my-plugin.pot --exclude=tests
- Создайте файлы перевода (
.po
и.mo
):
Откройте .pot
файл в Poedit, переведите строки и сохраните их как .po
и .mo
файлы.
- Загрузите переводы:
Используйте функцию load_textdomain()
в вашем плагине или функции load_theme_textdomain()
в вашей теме, чтобы загрузить переводы.
function my_plugin_load_textdomain() {
load_plugin_textdomain( 'my-text-domain', false, basename( dirname( __FILE__ ) ) . '/languages' );
}
add_action( 'plugins_loaded', 'my_plugin_load_textdomain' );
Заключение
Функция __()
в WordPress — это мощный инструмент для создания мультиязычных сайтов и плагинов. Понимание её работы и правильное использование поможет вам сделать ваш контент доступным для более широкой аудитории. Следуя приведённым примерам и рекомендациям, вы сможете эффективно локализовать ваши проекты на WordPress.