# Как можно локализовать (мультиязычно) бейджи и группы?

**URL:** https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127
**Category:** Support
**Tags:** badges, groups, translation
**Created:** [11.Март.2026 04:19:17 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127 "2026-03-11T04:19:17Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![yingdong](https://avatars.discourse-cdn.com/v4/letter/y/cab0a1/32.png) [@yingdong](https://meta.discourse.org/u/yingdong)
#### Post date: [11.Март.2026 04:19:17 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/1 "2026-03-11T04:19:17Z")

</div>

Как можно локализовать значки и группы (поддерживать несколько языков)? Во время настройки я заметил, что заголовки значков и групп не меняются вместе с языком темы. Как сделать так, чтобы значки и группы следовали переключению темы?

---

<div class="post-metadata">

### Author: ![awesomerobot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/awesomerobot/32/142900_2.png) [@awesomerobot](https://meta.discourse.org/u/awesomerobot)
#### Post date: [11.Март.2026 21:04:32 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/2 "2026-03-11T21:04:32Z")

</div>

Возможность локализации пользовательских значков и групп для многоязычного сайта пока отсутствует — на данный момент можно локализовать только посты, категории и теги.

---

<div class="post-metadata">

### Author: ![yingdong](https://avatars.discourse-cdn.com/v4/letter/y/cab0a1/32.png) [@yingdong](https://meta.discourse.org/u/yingdong)
#### Post date: [12.Март.2026 03:02:16 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/3 "2026-03-12T03:02:16Z")

</div>

Хорошо, спасибо. Но почему бейджи на этом сайте ([meta.discourse.org](https://meta.discourse.org/)) меняют язык вместе с темой? Это вызвано функцией перевода? Предлагаю официальному комьюнити добавить настройки многоязычной кастомизации для бейджей, групп и тегов; в противном случае многоязычные пользователи не смогут понять содержимое бейджей, групп и тегов.

---

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [12.Март.2026 06:19:51 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/4 "2026-03-12T06:19:51Z")

</div>

На каждом сайте есть предустановленные значки, которые интернационализируются (i18n) через Crowdin.

 ![image](https://global.discourse-cdn.com/meta/original/4X/e/d/a/eda26f9cfccc22c09ef57e4fa0102174007e45a9.png)

Пользовательские значки хранят название и описание как обычный текст в базе данных. Когда вызывается `I18n.t` (функция интернационализации) с ключом вроде `badges.my_custom_badge.name`, соответствующий перевод не находится, поэтому система возвращается к значению, сохранённому в БД — один и тот же текст для всех локалей.

Существует обходной путь: администраторы могут вручную добавлять переводы для ключей пользовательских значков для каждой локали.

Вы можете настроить тексты своего сайта по адресу `<ваш сайт>/admin/customize/site_texts`.

* * *

Конкретные шаги для вас:

1. Создайте значок

- Перейдите в /admin/badges → Новый значок
- Укажите название, описание, иконку и т. д. как обычно

1. Определите ключ i18n

- Шаблон ключа: `badges.{snake_case_name}.name`
- snake\_case\_name — это название значка в нижнем регистре, где пробелы заменены на подчёркивания
- Например: “Pokémon Master” → `badges.pokémon_master.name`

1. Добавьте переопределения переводов

- Перейдите в /admin/customize/site\_texts
- Найдите `badges.pokémon_master`
- Вы увидите ключи, такие как:
  - `badges.pokémon_master.name`
  - `badges.pokémon_master.description`
  - `badges.pokémon_master.long_description`

- Переключитесь на нужную локаль (например, 简体中文), кликните по ключу и введите переведённый текст

1. Повторите для каждой локали

- Переключайте локаль в выпадающем списке и добавляйте переводы для каждого необходимого языка
  - `.name` — заголовок значка
  - `.description` — краткое описание, отображаемое на карточках значков
  - `.long_description` — полное описание, отображаемое на странице деталей значка

## английский

 ![Screenshot 2026-03-12 at 2.28.56 PM](https://global.discourse-cdn.com/meta/original/4X/a/0/f/a0f24f629a39e560a2c001fb2f2eb4c076eda0c1.png)

## японский

 ![Screenshot 2026-03-12 at 2.30.39 PM](https://global.discourse-cdn.com/meta/original/4X/c/2/b/c2b2180969bda532bf66ca83590c8b4c39783634.png)

---

<div class="post-metadata">

### Author: ![yingdong](https://avatars.discourse-cdn.com/v4/letter/y/cab0a1/32.png) [@yingdong](https://meta.discourse.org/u/yingdong)
#### Post date: [12.Март.2026 09:30:59 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/5 "2026-03-12T09:30:59Z")

</div>

Привет! Спасибо за ответ! Подскажите, пожалуйста, как именно реализуется второй шаг — поиск «i18n key»? Я не смог найти, где находится i18n key.

---

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [12.Март.2026 09:44:56 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/6 "2026-03-12T09:44:56Z")

</div>

Вы не совсем «находите» его, а просто выводите из названия, которое вы дадите бейджу. (Обновлю второй шаг, чтобы использовать «выводить» вместо «находить»)

Так что, если вы используете «Bug Finder» в качестве названия бейджа, ключом будет `badges.bug_finder.name`

---

<div class="post-metadata">

### Author: ![yingdong](https://avatars.discourse-cdn.com/v4/letter/y/cab0a1/32.png) [@yingdong](https://meta.discourse.org/u/yingdong)
#### Post date: [12.Март.2026 11:12:56 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/7 "2026-03-12T11:12:56Z")

</div>

Неизвестно по какой причине, при поиске любого содержимого в `/admin/customize/site_texts` всегда отображается сообщение «No matching site texts found». Не могли бы вы подсказать, в чём может быть причина?

---

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [12.Март.2026 13:53:08 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/8 "2026-03-12T13:53:08Z")

</div>

Ой, извините, мне нужно исправить мои предыдущие шаги!

Страница администрирования текстов сайта (/admin/customize/site\_texts) может находить только ключи, которые уже существуют в файлах переводов Discourse. К сожалению, ключи для пользовательских значков, такие как `badges.pokémon_master.name`, там отсутствуют, поэтому поиск по ним ничего не вернёт (это именно та проблема, с которой вы столкнулись).

Скриншоты, которые я предоставил, были сделаны в среде, где я создал записи переводов через консоль Rails. Шаги, которые я указал для административного интерфейса, не работают в том виде, в котором они описаны. Приношу извинения за путаницу. На самом деле, если у вас есть доступ к консоли, вы можете создать переопределения переводов для пользовательских значков следующим образом:

```plaintext
# шаблон ключа: 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.

---

<div class="post-metadata">

### Author: ![canbekcan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canbekcan/32/544186_2.png) [@canbekcan](https://meta.discourse.org/u/canbekcan)
#### Post date: [13.Апрель.2026 19:36:11 UTC](https://meta.discourse.org/t/how-can-badges-and-groups-be-localized-multilingual/398127/9 "2026-04-13T19:36:11Z")

</div>

Я решил эту проблему с помощью небольшого плагина ([GitHub - canbekcan/discourse-localized-badges · GitHub](https://github.com/canbekcan/discourse-localized-badges)). Вы можете создать свой собственный репозиторий на GitHub на его основе и изменить файлы локализации. Миграция не требуется, но если она нужна, проверьте папку db или удалите её.

Плагин работает путём добавления всей языковой информации в **config** → **locales**. Там есть несколько файлов, и вы можете создать свои собственные файлы для нужного языка. После завершения перевода необходимо добавить ваш репозиторий в файл **app.yml** (если вы используете Docker), а затем выполнить _пересборку_. Как упоминал выше @nat, просто назовите новые бейджи в формате **badges.name\_вашего\_бейджа**. Они автоматически будут отображаться с обычным названием, определённым в файлах локализации. При обновлении ваших текущих файлов локализации вы можете обновить их через панель администратора, не выполняя _пересборку_ приложения.

Вы можете изучить структуру файлов и создать свои собственные файлы локализации в папке locales, но файлы очень чувствительны к _пробелам_ 🙂

**Примечание:** Это моё решение проблемы с локализацией бейджей. Если существует лучшее решение, буду рад услышать 🙂
