Как можно локализовать значки и группы (поддерживать несколько языков)? Во время настройки я заметил, что заголовки значков и групп не меняются вместе с языком темы. Как сделать так, чтобы значки и группы следовали переключению темы?
Возможность локализации пользовательских значков и групп для многоязычного сайта пока отсутствует — на данный момент можно локализовать только посты, категории и теги.
Хорошо, спасибо. Но почему бейджи на этом сайте (meta.discourse.org) меняют язык вместе с темой? Это вызвано функцией перевода? Предлагаю официальному комьюнити добавить настройки многоязычной кастомизации для бейджей, групп и тегов; в противном случае многоязычные пользователи не смогут понять содержимое бейджей, групп и тегов.
На каждом сайте есть предустановленные значки, которые интернационализируются (i18n) через Crowdin.
Пользовательские значки хранят название и описание как обычный текст в базе данных. Когда вызывается I18n.t (функция интернационализации) с ключом вроде badges.my_custom_badge.name, соответствующий перевод не находится, поэтому система возвращается к значению, сохранённому в БД — один и тот же текст для всех локалей.
Существует обходной путь: администраторы могут вручную добавлять переводы для ключей пользовательских значков для каждой локали.
Вы можете настроить тексты своего сайта по адресу <ваш сайт>/admin/customize/site_texts.
Конкретные шаги для вас:
- Создайте значок
- Перейдите в /admin/badges → Новый значок
- Укажите название, описание, иконку и т. д. как обычно
- Определите ключ i18n
- Шаблон ключа:
badges.{snake_case_name}.name - snake_case_name — это название значка в нижнем регистре, где пробелы заменены на подчёркивания
- Например: “Pokémon Master” →
badges.pokémon_master.name
- Добавьте переопределения переводов
- Перейдите в /admin/customize/site_texts
- Найдите
badges.pokémon_master - Вы увидите ключи, такие как:
badges.pokémon_master.namebadges.pokémon_master.descriptionbadges.pokémon_master.long_description
- Переключитесь на нужную локаль (например, 简体中文), кликните по ключу и введите переведённый текст
- Повторите для каждой локали
- Переключайте локаль в выпадающем списке и добавляйте переводы для каждого необходимого языка
.name— заголовок значка.description— краткое описание, отображаемое на карточках значков.long_description— полное описание, отображаемое на странице деталей значка
английский
японский
Привет! Спасибо за ответ! Подскажите, пожалуйста, как именно реализуется второй шаг — поиск «i18n key»? Я не смог найти, где находится i18n key.
Вы не совсем «находите» его, а просто выводите из названия, которое вы дадите бейджу. (Обновлю второй шаг, чтобы использовать «выводить» вместо «находить»)
Так что, если вы используете «Bug Finder» в качестве названия бейджа, ключом будет badges.bug_finder.name
Неизвестно по какой причине, при поиске любого содержимого в `/admin/customize/site_texts` всегда отображается сообщение «No matching site texts found». Не могли бы вы подсказать, в чём может быть причина?
Ой, извините, мне нужно исправить мои предыдущие шаги!
Страница администрирования текстов сайта (/admin/customize/site_texts) может находить только ключи, которые уже существуют в файлах переводов Discourse. К сожалению, ключи для пользовательских значков, такие как badges.pokémon_master.name, там отсутствуют, поэтому поиск по ним ничего не вернёт (это именно та проблема, с которой вы столкнулись).
Скриншоты, которые я предоставил, были сделаны в среде, где я создал записи переводов через консоль Rails. Шаги, которые я указал для административного интерфейса, не работают в том виде, в котором они описаны. Приношу извинения за путаницу. На самом деле, если у вас есть доступ к консоли, вы можете создать переопределения переводов для пользовательских значков следующим образом:
# шаблон ключа: badges.{name_in_snake_case}.{name|description|long_description}
# например, для значка под названием "Pokemon Master":
TranslationOverride.upsert!("zh_CN", "badges.pokemon_master.name", "Мастер покемонов")
TranslationOverride.upsert!("zh_CN", "badges.pokemon_master.description", "Ваше описание")
После создания через консоль перевод появится в разделе /admin/customize/site_texts, и в дальнейшем его можно будет редактировать оттуда.
Если у вас нет доступа к консоли, это в настоящее время невозможно. Локализация пользовательских значков пока не поддерживается, как уже упоминал @awesomerobot.


