-
-
Notifications
You must be signed in to change notification settings - Fork 60
Localization Coverage
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 23 languages) and the project website (.pages/, currently 28 locales). This page lists exactly which languages each surface ships, explains why the two sets differ, and points to how each is maintained. To actually add or update a translation in the app, see Translating with the Localizer.
- Two translation surfaces
- Application languages (23)
- Website locales (28)
- Why the two sets differ
- Runtime locale files
- How each surface is maintained
- See also
| Surface | Count | Format | Tooling | Location |
|---|---|---|---|---|
| Application (WPF runtime) | 23 languages | XAML ResourceDictionary
|
Sucrose.Localizer (XAML ⇄ CSV ⇄ POEditor) |
src/Library/Sucrose.Resources/Locales/ |
Website (.pages/, Nuxt) |
28 locales | i18n JSON | Nuxt i18n (separate, not the Localizer) | .pages/i18n/locales/*.json |
The installer (Sucrose.Bundle) is a third, separate surface: it ships 48 Resources_<LANG>.xaml files, and its checksum-error page has 30 inline UI translations. The installer's localization is independent of both the app's 23 and the website's 28 sets.
The runtime app ships these 23 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 |
|---|---|
| CS | Čeština |
| DA | Dansk |
| DE | Deutsch |
| EL | Ελληνική |
| EN | English |
| ES | Español |
| FR | Français |
| 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).
The marketing website in .pages/ (Nuxt + Tailwind, built with bun, deployed to GitHub Pages by nuxt-deploy.yml) ships 28 locale JSON files under .pages/i18n/locales/*.json:
bg, cs, da, de, el, en, es, fi, fr, hi, hu, id, it, ja, ko,
nl, no, pl, pt, ro, ru, sk, sv, th, tr, uk, vi, zh
The website set is a superset of the app set, plus one code difference:
- The website adds six locales the app does not have:
bg(Bulgarian),fi(Finnish),hu(Hungarian),sk(Slovak),th(Thai),vi(Vietnamese). - For Norwegian, the website uses
nowhile the app usesNB.
These are separate translation surfaces: the website's i18n JSON is maintained inside the Nuxt project and is not produced by the Sucrose.Localizer tool, which targets only the app's XAML resources. Updating one does not update the other.
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. - Grouped, area-specific files such as
Portal.<area>.<CODE>.xaml(includingPortal.Enum.<CODE>.xaml, which localizes enum display names likeStoreServerType,ReportThemeType, andCompatibilityType(theCategoryenum 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.csvis 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(...).
-
Application — maintained with
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. -
Website — maintained directly as Nuxt i18n JSON in
.pages/i18n/locales/, independent of the app and the Localizer. -
Installer — its ~70
Resources_<LANG>.xamlfiles and the error-page translations are maintained within theSucrose.Bundleproject (see Bundle Installer Internals).
Contributions to app translations are welcome — open an issue or PR per the Contributing guidelines.
Getting Started
- Installation
- System Requirements
- Quick Start
- Portal Interface Tour
- Updating Sucrose
- Uninstalling Sucrose
Wallpaper Types
Using Sucrose
- Managing Library
- Using Store
- Customizing Wallpaper
- Multi-Monitor
- Wallpaper Cycling
- Choosing Engines
- Performance Rules
- Theme, Tray & Startup
- Discord Rich Presence
Settings Reference
- Settings Overview
- Settings: General
- Settings: Personal
- Settings: Performance
- Settings: Wallpaper
- Settings: System
- Settings: Other
- Settings: All Keys
Creating Wallpapers
- Create Overview
- Create: Step By Step
- Create: Package Format
- Create: Customization Controls
- Create: JS Bridge
- Create: Audio API
- Create: System API
- Create: Property Listener & Filters
- Create: Web Architecture
- Create: Compatibility
- Create: Example Wallpapers
- Create: Sharing & Publishing
Engine Reference
- Engines Overview
- Engine: MpvPlayer
- Engine: VlcPlayer
- Engine: WebView
- Engine: CefSharp
- Engine: Nebula
- Engine: Vexana
- Engine: Xavier
- Engine: Aurora
- Engine Comparison
Automation & Command Line
Architecture & Internals
- Architecture Overview
- Lifecycle
- Commandog Dispatcher
- Single-Instance Mutexes
- IPC
- Backgroundog Service
- Crash Reporting
- Update Internals
- Property Service
- Undo Internals
Data, Files & Diagnostics
Building & Contributing
- Building From Source
- Repository Layout
- Shared Item Projects
- Code Conventions
- Preprocessor Symbols
- Publish Pipeline
- Bundle Installer Internals
- Extending Sucrose
- Contributing
- Translating with Localizer
- Localization Coverage
- Security Policy
- Privacy & Telemetry
Help & Support