dsc.bot / docs
DocsContributing

Translating dsc.bot

Help make dsc.bot clear and natural for users around the world.

Join the translator team

Translations are managed in Tolgee. To contribute, join the dsc.bot Discord server and open the information channel. Press Apply to Translate to apply for the translator team. After your application is accepted, you will be invited to the dsc.bot project in Tolgee. You do not need access to the source code to translate.

Translate in Tolgee

  1. Join the dsc.bot Discord server.
  2. Open the information channel and press Apply to Translate.
  3. After your application is accepted, accept your Tolgee invitation and open the dsc.bot project.
  4. Select the language you are contributing to.
  5. Filter for untranslated strings, or continue work assigned by the team.
  6. Read the English source, key name, description, and screenshots or tags when available.
  7. Enter a natural translation and save it. Leave a comment or ask in Discord if a string needs clarification.

A translation may be reviewed before it appears on dsc.bot. After a reviewed translation is exported, it will be included in a later site update; saving a string in Tolgee does not necessarily publish it immediately.

Find keys with the debug tool

dsc.bot includes a debug tool that helps you identify which translation key is used by a label, button, or message. Open the user menu, select Debug under the app settings, and enable Debug Language. The app will reload and replace translated text with key names such as bot.store.buy.

Copy the key shown in the interface and search for it in Tolgee. This is especially useful when similar English phrases have different meanings or appear in different contexts. Return to the Debug settings and turn off Debug Language when you are finished to restore normal text.

Use MessageFormat correctly

Some source strings use ICU MessageFormat to insert names and numbers or choose text at runtime. Text inside single braces has a technical meaning. Preserve its argument names exactly, including capitalization, while translating the surrounding words. You may move a placeholder to wherever it belongs in your language.

Placeholders

txtSimple placeholder
Welcome, {username}!

In this example, {username} is replaced with a person’s name. Keep username unchanged. Do not translate it, add spaces inside its braces, or replace it with a sample name.

Plurals

txtPlural message
{count, plural,
  =0 {No reviews}
  one {# review}
  other {# reviews}
}

The argument name count and the words plural, one, and other are syntax. The # inserts the formatted count. Translate the text inside each branch, add any plural categories required by your language, and always keep an other branch. A branch such as =0 matches that exact number.

Select messages

txtSelect message
{state, select,
  required {Comments (required)}
  optional {Comments (optional)}
  other {Comments}
}

Keep the argument name state and selector values such as required and optional unchanged. They are values supplied by the application. Translate only the text inside their branches, and keep the other fallback.

Translator expectations

  • Translate into a language you understand well enough to write naturally and accurately.
  • Preserve the source meaning and tone instead of translating word for word.
  • Keep terminology, capitalization, and punctuation consistent across the interface.
  • Do not translate product names such as dsc.bot, Discord, or Tolgee.
  • Preserve placeholders, MessageFormat selectors, links, Markdown, and other technical tokens.
  • Keep labels and buttons concise enough for the interface. Rephrase naturally when a literal translation would be unclear.
  • Review spelling and grammar before marking work ready for review.
  • Do not submit joke, offensive, copied, or unreviewed machine-generated translations.
  • Use Tolgee comments or the translator channels in Discord to coordinate changes and resolve uncertainty.

Before you finish

Check each translation one final time:

  • Does it sound natural to a speaker of the language?
  • Does it mean the same thing as the English source in this part of the interface?
  • Are all placeholders and MessageFormat branches present and spelled exactly as in the source?
  • Are product names and technical values unchanged?
  • Would more context or a screenshot change your wording?

If any answer is uncertain, leave a comment and ask the translator team before considering the string complete.