You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.7 KiB
2.7 KiB
Display names and locale rules (AutoHero)
Town names on Russian UI
For locale ru, town names are not translated by meaning. They use pragmatic Cyrillic transliteration of the English fantasy names (the same names shown in en). This keeps a single world identity across languages and avoids awkward calques (for example, not «Зола-крепость» for Cinderkeep).
Guidelines:
- Read like the English name: consonants and vowels map so a Russian player can recognize the original (Willowdale → Виллоудейл, Cinderkeep → Синдеркип).
- Keep word boundaries where the English has them (Thorn + watch → Торнвотч; Red + cliff → Редклифф).
- Do not translate semantic meaning of the compound (no «красная скала», «звездопад», etc.) for these labels.
- Stable keys: DB/API use
towns.name_key(e.g.town.cinderkeep.v1); only therustring incontentLabels/ UI bundle changes.
Current Russian labels (transliteration target):
name_key |
English | Russian (UI) |
|---|---|---|
town.willowdale.v1 |
Willowdale | Виллоудейл |
town.thornwatch.v1 |
Thornwatch | Торнвотч |
town.ashengard.v1 |
Ashengard | Ашенгард |
town.redcliff.v1 |
Redcliff | Редклифф |
town.boghollow.v1 |
Boghollow | Богхоллоу |
town.cinderkeep.v1 |
Cinderkeep | Синдеркип |
town.starfall.v1 |
Starfall | Старфолл |
town.mossharbor.v1 |
Mossharbor | Моссхарбор |
town.emberwell.v1 |
Emberwell | Эмбервелл |
town.frostmark.v1 |
Frostmark | Фростмарк |
town.duskwatch.v1 |
Duskwatch | Дасквотч |
Quest descriptions in Russian should use these same spellings when they mention a town.
Quest copy
- Server stores English
title/descriptiononquests(authoring and fallback). - Client resolves text by
quests.quest_keyusingfrontend/src/i18n/quests.en.ymlandquests.ru.yml(loaded inloadLocales.tstogether withen.yml/ru.yml). Keys must matchquest_keyin the database; EN and RU files must have the same set of keys (validated at startup). - If a key is missing in YAML, the client falls back to the server string (usually English).
- For
visit_townrows, the API includesquest.targetTownId. The quest log usestownDisplayById()so the destination city name follows the town transliteration rules above, not the raw EnglishtargetTownNamefrom SQL.
Related files
- Town labels and
towns.idmap:frontend/src/i18n/contentLabels.ts - Quest strings:
frontend/src/i18n/quests.en.yml,frontend/src/i18n/quests.ru.yml,localizedQuestTextinfrontend/src/i18n/loadLocales.ts