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

