Функция __() в WordPress: использование и примеры

# Функция __() в 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, и знание этих функций помогает создавать доступные и удобные для пользователей продукты.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *