gettext_with_context
Дозволяє змінити перекладений текст, який перекладається із зазначенням контексту перекладу – функція _x() .
Це фільтр для функції _x() .
Використання
add_filter( 'gettext_with_context', 'wp_kama_gettext_with_context_filter', 10, 4); /** * Function for `gettext_with_context` filter-hook. * * @param string $translation Translated text. * @param string $text Text to translate. * @param string $context Context information for the translators. * @param string $domain Text domain. Unique identifier for retrieving translated strings. * * @return string */ function wp_kama_gettext_with_context_filter( $translation, $text, $context, $domain ){ // Filter... return $translation; }
-
$translation
(рядок) -
Перекладений текст. У файлах
*.po позначений як
msgstr
. -
$text
(рядок) -
Текст для перекладу. У файлах
*.po позначений як
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 | Введено. |
Де викликається хук
gettext_with_context
Де використовується хук у WordPress
Використання не знайдено.