How can badges and groups be localized (multilingual)?

There are some seeded badges on every site that are internationalised (i18n) through Crowdin.

Custom badges store name/description as plain text in the database. When I18n.t (internationalization feature) is called with a key like badges.my_custom_badge.name, there’s no matching translation, so it falls back to the stored DB value — same text for all locales.

There’s a workaround where admins can manually add translations for custom badge keys per locale.

You can customize your site texts at <your site>/admin/customize/site_texts.


Some concrete steps for you

  1. Create the badge
  • Go to /admin/badges → New Badge
  • Set name, description, icon, etc. as normal
  1. Derive the i18n key
  • The key pattern is badges.{snake_case_name}.name
  • The snake_case_name is the badge name lowercased with spaces replaced by underscores
  • So “Pokémon Master” → badges.pokémon_master.name
  1. Add translation overrides
  • Go to /admin/customize/site_texts
  • Search for badges.pokémon_master
  • You’ll see keys like:
    • badges.pokémon_master.name
    • badges.pokémon_master.description
    • badges.pokémon_master.long_description
  • Switch to the target locale (e.g. 简体中文), click the key, and enter the translated text
  1. Repeat per locale
  • Switch locale in the dropdown, add translations for each language you need
    • .name - badge title
    • .description - short description shown on badge cards
    • .long_description - full description shown on the badge detail page

english

japanese

4 Likes