gettext хук-фільтрWP 2.0.11

Дозволяє змінити рядок (текст) перекладу.

Використання

add_filter( 'gettext', 'wp_kama_gettext_filter', 10, 3);

/**
 * Function for `gettext` filter-hook.
 *
 * @param string $translation Translated text.
 * @param string $text Text to translate.
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 *
 * @return string
 */
function wp_kama_gettext_filter( $translation, $text, $domain ){

	// Filter...
	return $translation;
}
$translation
(рядок)
Перекладений текст. У файлах
*.poпозначений як
msgstr.
$text
(рядок)
Текст для перекладу. У файлах
*.poпозначений як
msgid.
$domain
(рядок)
Домен тексту. Унікальний ідентифікатор для одержання перекладених рядків. Вказується при підключенні MO файлу перекладу функції
load_textdomain() .

Приклади

0

#1 Замінимо “Коментарі” на “Відгуки”

Замінимо в адмінці на сторінці управління коментарями заголовок з “Коментарі” на “Відгуки”.

На сторінці управління коментарями ( edit-comments.php ) слово “Коментарі” виводиться за допомогою цього коду:

_e ( 'Comments');

Функція translate() , в якій спрацьовує описуваний хук.

Так як через фільтр проходить безліч перекладів, а нам необхідно перекласти певну фразу і тільки в потрібному місці, то використовуємо умову:

  • Запрошується переклад слова “Comments”
  • Запрошується домен default (переклад WordPress)
add_filter( 'gettext', 'filter_gettext', 10, 3);

function filter_gettext( $translation, $text, $domain ) {
	if ( $text === 'Comments' && $domain === 'default' ) {
		$translation = 'Відгуки';
	}

	return $translation;
}

Після застосування фільтра
Після застосування фільтра

Виникає питання, чому на скріншотах слово “Коментарі” не змінилося у правому меню? У файлі wp-admin/menu.php ми можемо знайти код цього пункту меню:

$menu[25] = array(
	/* translators: %s: Number of comments. */
	sprintf( __( 'Comments %s' ), ​​'<span class="awaiting-mod count-' . absint( $awaiting_mod ) . '"><span class="pending-count" aria-hidden="true"> ' . $awaiting_mod_i18n . '</span><span class="comments-in-moderation-text screen-reader-text">' .
	'edit_posts',
	'edit-comments.php',
	'',
	'menu-top menu-icon-comments',
	'menu-comments',
	'dashicons-admin-comments',
);

Тобто фраза для перекладів тут вже Comments %s, а значить наш код має бути таким:

add_filter( 'gettext', 'filter_gettext', 10, 3);

function filter_gettext( $translation, $text, $domain ) {
	if ( $text === 'Comments %s' && $domain === 'default' ) {
		$translation = 'Відгуки %s';
	}

	return $translation;
}

список змін

З версії 2.0.11Введено.

Де викликається хук

Де використовується хук у WordPress

Використання не знайдено.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *