WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

gettext_with_context хук-фильтр . WP 2.8.0

Позволяет изменить переведённый текст, который переводится с указанием контекста перевода — функция _x().

Это фильтр для функции _x().

Использование

add_filter( 'gettext_with_context', 'filter_function_name_9241', 10, 4 );
function filter_function_name_9241( $translation, $text, $context, $domain ){
	// Изменяем...

	return $translation;
}
$translation(строка)
Переведённый текст. В файлах *.mo помечен как msgstr.
$text(строка)
Текст для перевода. В файлах *.mo помечен как msgid.
$context(строка)
Контекстная информация для переводчиков. В файлах *.mo помечен как msgctxt.
$domain(строка)
Текстовый домен. Уникальный идентификатор для получения переведенных строк. Указывается при регистрации перевода.

Примеры

Изменим в списке Записей фразу "На утверждении" на "Ждет проверки модератором" только в нужном месте.

#1 Изменим название статуса "На утверждении" (pending)

Слово "Pending" используется в разном контексте:

#: wp-includes/post.php:342
msgctxt "post status"
msgid "Pending"
msgstr "На утверждении"

#: wp-includes/post.php:392
msgctxt "request status"
msgid "Pending"
msgstr "В ожидании"

#: wp-includes/post.php:928
msgid "Pending"
msgstr "В ожидании"

В нашем случае перевод запрашивается с помощью _x() так:

_x( 'Pending', 'post status' )

Так как через фильтр проходит огромное количество переводов, а нам необходимо перевести определенную фразу и только в нужном месте, то используем условие:

  • Запрашивается перевод слова "Pending"
  • Запрашивается в контексте post status
  • Запрашивается домен default (перевод самого WordPress)
add_filter( 'gettext_with_context', 'change_gettext_pending', 10, 4 );

function change_gettext_pending( $translation, $text, $context, $domain ) {
	if ( $text === 'Pending' && $context === 'post status' && $domain === 'default' ) {
		$translation = 'Ждет проверки модератора';
	}

	return $translation;
}

Список изменений

С версии 2.8.0 Введена.

Где вызывается хук

translate_with_gettext_context()
gettext_with_context
wp-includes/l10n.php 234
return apply_filters( 'gettext_with_context', $translation, $text, $context, $domain );

Где используется хук (в ядре WP)

Использование не найдено.
campusboy 3430youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 7629
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться