# Функция __() в WordPress
Функция __() используется для получения перевода текста с помощью файла перевода (домена текста). Если перевода не существует или домен текста не загружен, возвращается оригинальный текст.
## Что такое l10n?
Сокращение **l10n** происходит от слова localization. Это означает локализацию, то есть адаптацию программного обеспечения для различных языков и регионов.
## Как пользоваться функцией __()?
Для отображения перевода на экране используйте похожую функцию _e().
Функция __() выполняется очень быстро:
- 1 раз — 0.000019 сек (очень быстро)
- 50,000 раз — 0.07 сек (практически мгновенно)
Версия PHP: 7.1.2, WordPress: 4.7.3.
### Возвращаемое значение
Функция возвращает строку — переведенный текст.
### Пример использования:
```php
$text = __( 'Комментарий:', 'mydomain' );
$text(string) (обязательный) — текст для перевода.$domain(string) — ID файла перевода, указываемый при регистрации и подключении файла перевода. Если не указан, будет использоваться файл перевода по умолчанию.
Примеры использования функции __()
Пример 1: Перевод строки
$str = __( 'Comment:' );
Если используется файл локализации на русском, он вернет: "Комментарий:".
Пример 2: Перевод строки с указанием домена
Для перевода строки из собственного файла перевода нужно указать второй параметр $domain:
$str = __( 'Comment:', 'mydomain' );
Пример 3: Сделать строку переводимой в вашем плагине или теме
$translated = __( 'Hello World', 'text_domain' );
Важно: "Hello World" и "text_domain" должны всегда передаваться как строковый литерал, как показано выше, а не как значение переменной.
Неправильный вариант:
$text_domain = 'text_domain';
$string = 'Hello World!';
$translated = __( $string, $text_domain );
Пример 4: Отображение перевода
Аналогичная функция _e() отображает результат, но не возвращает его. Например, следующие строки эквивалентны:
_e( 'this is some message', 'text_domain' );
// то же самое, что и
echo __( 'this is some message', 'text_domain' );
Пример 5: Экранирование текста с ссылками
Чтобы экранировать текст с ссылками, комбинируйте __() с sprintf(). Это предотвратит изменения ссылок переводчиком.
sprintf(
__( 'Вы можете посетить страницу, кликнув здесь.', 'text_domain' ),
'http://example.com'
);
Изменения в версии
Функция была внедрена с версии 2.1.0.
Код функции __()
function __( $text, $domain = 'default' ) {
return translate( $text, $domain );
}
Связанные функции
Для работоспособности перевода также используются другие функции, такие как:
_e()_n()load_textdomain()get_locale()- и многие другие.
Локализация — важный аспект разработки на WordPress, и знание этих функций помогает создавать доступные и удобные для пользователей продукты.