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.