Audience: users, translators. Sucrose is translated on two separate surfaces that do not share the same language set or tooling: the application (WPF runtime, currently 25 languages) and the installer (Sucrose.Bundle, currently 59 languages). This page lists exactly which languages each surface ships and points to how each is maintained. To actually add or update a translation in the app, see Translating with the Localizer.
| Surface | Count | Format | Tooling | Location |
|---|---|---|---|---|
| Application (WPF runtime) | 25 languages | XAML ResourceDictionary |
Sucrose.Localizer (XAML ⇄ CSV ⇄ POEditor) |
src/Library/Sucrose.Resources/Locales/ |
Installer (Sucrose.Bundle) |
59 languages | XAML ResourceDictionary |
Bundle Source | src/Bundle/Sucrose.Bundle/Properties/ |
The runtime app ships these 25 languages. The display-name and maturity-version registry lives in src/Library/Sucrose.Resources/Locales/Locale.xaml (singular), which records each language's two-letter code, display name, and a translation-maturity version number. The per-language Locale.<CODE>.xaml files are merge dictionaries that aggregate each language's area-specific resource files. (The Localizer's working CSV registry is the tooling artifact .localize/Locale.csv, not a file under Sucrose.Resources.)
| Code | Display name |
|---|---|
| AR | العربية |
| CS | Čeština |
| DA | Dansk |
| DE | Deutsch |
| EL | Ελληνική |
| EN | English |
| ES | Español |
| FR | Français |
| HE | עברית |
| HI | हिन्दी |
| ID | Indonesia |
| IT | Italiano |
| JA | 日本語 |
| KO | 한국어 |
| MS | Melayu |
| NB | Norsk |
| NL | Nederlands |
| PL | Polski |
| PT | Português |
| RO | Română |
| RU | Русский |
| SV | Svenska |
| TR | Türkçe |
| UK | Українська |
| ZH | 中文 |
Maturity notes: EN and TR are the most complete (v1.4 in the registry, e.g. Locale.EN = "English (v1.4)"). ID, MS, and PT trail at around v0.9. Newly created languages start at v0.1 (see Translating with the Localizer).
At runtime the app loads one XAML ResourceDictionary per language from src/Library/Sucrose.Resources/Locales/:
Locale.xaml — top-level language registry entries (display names + maturity versions); Locale.<CODE>.xaml — per-language merge dictionaries aggregating that language's area-specific resource files.Portal.<area>.<CODE>.xaml (including Portal.Enum.<CODE>.xaml, which localizes enum display names like StoreServerType, ReportThemeType, and CompatibilityType (the Category enum is not among the localized enums)), plus Launcher and Discord groups.Locale.xaml — the runtime locale registry mapping each code to its display name and maturity version. (The Localizer's .localize/Locale.csv is a tooling artifact, not a runtime locale file in this folder.)The active language is chosen by the Culture setting (see Settings — General). Strings are resolved at runtime with segment keys via Sucrose.Resources.Extension.Resources.GetValue(...).
Sucrose.Localizer, which round-trips between the runtime XAML, the working CSVs in .localize/, and POEditor CSVs in .localize/POEditor/. Adding a language is menu option 9 of the tool. Full pipeline: Translating with the Localizer.Resources_<LANG>.xaml files are maintained within the Sucrose.Bundle project (see Bundle Installer Internals).Contributions to app translations are welcome — open an issue or PR per the Contributing guidelines.