Intereting Posts
Пользовательский запрос WordPress для отображения сообщений за последние шесть лет add_rewrite_rule и проблема с разбивкой по страницам Сделать nav-menus.php доступным для редактора Как исправить параметр входа в WordPress Как показать пользовательское уведомление конкретному пользователю? Установите первое изображение (внешнее) в качестве отображаемого изображения / эскиза Добавить фильтр в конец сообщения Как сбрасывать несколько captcha на той же странице с контактной формой 7? Разное количество сообщений в строке в макете Условия таксономии заказа wordpress делать ошибки журнала wordpress в файле журнала Apache Как зарегистрировать пользователя в группе по коду приглашения? Наиболее эффективный способ поиска значений из CPT в почтовом контенте Добавить сообщение meta на основе другого значения meta сообщения перед публикацией публикации Как установить значения по умолчанию для edit_post_link () в моей теме?

Использовать переведенные метки таксономии в плагине

Я пишу плагин, который работает с таксономическими терминами. Он, помимо прочего, обладает возможностью создавать новые термины. Я собираюсь предположить, что если пользователи имеют пользовательские таксономии, они позаботились о том, чтобы имена и множественные имена были созданы и переведены.

Возникает вопрос: как мне форматировать мои сообщения плагина для использования переведенных меток для таксономий?

Мне нужно вывести такие сообщения, как:

  • «Создано 1 категория».
  • «Совмещенные 2 тега».
  • «Обновлено 5 фильмов». (Предположим, что «фильмы» – это обычная таксономия.)

По моему мнению, (переведенные) единственные и множественные метки для таксономии доступны как $term_object->labels->singular_name и $term_object->labels->name .

Правильно ли предположить, что эти свойства содержат переведенные строки? Или необходимо обернуть их некоторой функцией i18n?

Функции _n() и _nx() обеспечивают единичные и множественные формы, но использовать их не имеет смысла. Я использовал:

 $message = sprintf( 'Created %d %s', count($created), count($created) == 1 ? $term_object->labels->singular_name : $term_object->labels->name ); 

Какая здесь самая лучшая практика?

Solutions Collecting From Web of "Использовать переведенные метки таксономии в плагине"

Вы должны использовать множественные функции, такие как _n() или _nx() , потому что слова вокруг номера могут меняться на некоторых языках в зависимости от количества элементов.
Для видимых чисел используйте number_format_i18n() и %s , а не %d .

Вы не можете повторно использовать метки, потому что множественные формы изменяются в зависимости от контекста на некоторых языках.

Вот как я напишу ваш пример:

 // bare number, needed for _n() $num = count( $created ); // Singular or plural, we use %s, because we don't know what // number_format_i18n() will return. $text = _n( 'Created %s category', 'Created %s categories', $num, 'unique_plugin_textdomain' ); // thousands separator etc. $display_number = number_format_i18n( $num ); // Finally, the result: $message = sprintf( $text, $display_number ); 

Да, register_taxonomy() ожидает, что массив переведенных меток и get_taxonomy_labels() предоставлять переведенные значения по умолчанию.

Вам не нужно дополнительно передавать метки через функцию перевода, так как они предположительно проходят через нее.

Обратите внимание, что вам нужно перевести свою собственную строку ( Created... ).