<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Localization Coverage</title><link>https://sourceforge.net/p/sucrose/wiki/Localization%2520Coverage/</link><description>Recent changes to Localization Coverage</description><atom:link href="https://sourceforge.net/p/sucrose/wiki/Localization%20Coverage/feed" rel="self"/><language>en</language><lastBuildDate>Sat, 04 Jul 2026 04:15:52 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/sucrose/wiki/Localization%20Coverage/feed" rel="self" type="application/rss+xml"/><item><title>Localization Coverage modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Localization%2520Coverage/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,36 +1,33 @@
 # 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](Translating-Localizer).
+*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](Translating-Localizer).

 ## Contents

-- [Two translation surfaces](#two-translation-surfaces)
-- [Application languages (23)](#application-languages-23)
-- [Website locales (28)](#website-locales-28)
-- [Why the two sets differ](#why-the-two-sets-differ)
+- [Translation surfaces](#translation-surfaces)
+- [Application languages (25)](#application-languages-25)

 - [Runtime locale files](#runtime-locale-files)
 - [How each surface is maintained](#how-each-surface-is-maintained)
 - [See also](#see-also)

 ---

-## Two translation surfaces
+## Translation surfaces

 | 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_&amp;lt;lang&amp;gt;.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.
+| **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/` |

 ---

-## Application languages (23)
+## Application languages (25)

-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.&lt;code&gt;.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.)
+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.&lt;code&gt;.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 |
@@ -38,6 +35,7 @@
 | EN | English |
 | ES | Español |
 | FR | Français |
+| HE | עברית |
 | HI | हिन्दी |
 | ID | Indonesia |
 | IT | Italiano |
@@ -59,26 +57,6 @@

 ---

-## Website locales (28)
-
-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
-
----
-
-## Why the two sets differ
-
-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 `no`** while the **app uses `NB`**.
-
-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.
-
----
-
 ## Runtime locale files

 At runtime the app loads one XAML `ResourceDictionary` per language from `src/Library/Sucrose.Resources/Locales/`:
@@ -94,8 +72,7 @@
 ## How each surface is maintained


 - **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](Translating-Localizer).
-- **Website** — maintained directly as Nuxt i18n JSON in `.pages/i18n/locales/`, independent of the app and the Localizer.
-- **Installer** — its ~70 `Resources_&amp;lt;lang&amp;gt;.xaml` files and the error-page translations are maintained within the `Sucrose.Bundle` project (see [Bundle Installer Internals](Bundle-Installer-Internals)).
+- **Installer** — its 59 `Resources_&amp;lt;lang&amp;gt;.xaml` files are maintained within the `Sucrose.Bundle` project (see [Bundle Installer Internals](Bundle-Installer-Internals)).

 Contributions to app translations are welcome — open an issue or PR per the [Contributing](Contributing) guidelines.

&amp;lt;/lang&amp;gt;&amp;lt;/lang&amp;gt;&lt;/code&gt;&lt;/code&gt;&amp;lt;/lang&amp;gt;&lt;/pre&gt;&lt;code&gt;&lt;code&gt;
&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:52 -0000</pubDate><guid>https://sourceforge.netd6c3f70dad10c11bd1aef3af16af98f6a5f07a64</guid></item><item><title>Localization Coverage modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Localization%2520Coverage/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -21,13 +21,13 @@
 | **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 roughly **70 `Resources_&amp;lt;lang&amp;gt;.xaml` files**, and its checksum-error page has 29 inline UI translations. The installer's localization is independent of both the app's 23 and the website's 28 sets.
+The **installer** (`Sucrose.Bundle`) is a third, separate surface: it ships **48 `Resources_&amp;lt;lang&amp;gt;.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.

 ---

 ## Application languages (23)

-The runtime app ships these 23 languages. The source of truth is `src/Library/Sucrose.Resources/Locales/Locale.csv` (and the matching `Locale.&lt;code&gt;.xaml` files), which records each language's two-letter code, display name, and a translation-maturity version number.
+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.&lt;code&gt;.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 |
 |------|--------------|
@@ -83,9 +83,9 @@

 At runtime the app loads one XAML `ResourceDictionary` per language from `src/Library/Sucrose.Resources/Locales/`:

-- `Locale.&lt;code&gt;.xaml` — top-level language registry entries.
-- Grouped, area-specific files such as `Portal.&lt;area/&gt;.&lt;code&gt;.xaml` (including `Portal.Enum.&lt;code&gt;.xaml`, which localizes enum display names like `StoreServerType`, `ReportThemeType`, and `Category`), plus Launcher and Discord groups.
-- `Locale.csv` — the locale registry mapping each code to its display name and version.
+- `Locale.xaml` — top-level language registry entries (display names + maturity versions); `Locale.&lt;code&gt;.xaml` — per-language merge dictionaries aggregating that language's area-specific resource files.
+- Grouped, area-specific files such as `Portal.&lt;area/&gt;.&lt;code&gt;.xaml` (including `Portal.Enum.&lt;code&gt;.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](Settings-General)). Strings are resolved at runtime with segment keys via `Sucrose.Resources.Extension.Resources.GetValue(...)`.

&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&amp;lt;/lang&amp;gt;&amp;lt;/lang&amp;gt;&lt;/pre&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;
&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:46 -0000</pubDate><guid>https://sourceforge.net56802da9828c56f6c2641d96190c6828165db49f</guid></item><item><title>Localization Coverage modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Localization%2520Coverage/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-localization-coverage"&gt;Localization Coverage&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Audience: users, translators.&lt;/em&gt; Sucrose is translated on &lt;strong&gt;two separate surfaces&lt;/strong&gt; that do not share the same language set or tooling: the &lt;strong&gt;application&lt;/strong&gt; (WPF runtime, currently &lt;strong&gt;23 languages&lt;/strong&gt;) and the &lt;strong&gt;project website&lt;/strong&gt; (&lt;code&gt;.pages/&lt;/code&gt;, currently &lt;strong&gt;28 locales&lt;/strong&gt;). 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 &lt;a href="./Translating-Localizer"&gt;Translating with the Localizer&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-contents"&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#two-translation-surfaces"&gt;Two translation surfaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#application-languages-23"&gt;Application languages (23)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#website-locales-28"&gt;Website locales (28)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#why-the-two-sets-differ"&gt;Why the two sets differ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#runtime-locale-files"&gt;Runtime locale files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-each-surface-is-maintained"&gt;How each surface is maintained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#see-also"&gt;See also&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="h-two-translation-surfaces"&gt;Two translation surfaces&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Surface&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Tooling&lt;/th&gt;
&lt;th&gt;Location&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Application&lt;/strong&gt; (WPF runtime)&lt;/td&gt;
&lt;td&gt;23 languages&lt;/td&gt;
&lt;td&gt;XAML &lt;code&gt;ResourceDictionary&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Sucrose.Localizer&lt;/code&gt; (XAML ⇄ CSV ⇄ POEditor)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;src/Library/Sucrose.Resources/Locales/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Website&lt;/strong&gt; (&lt;code&gt;.pages/&lt;/code&gt;, Nuxt)&lt;/td&gt;
&lt;td&gt;28 locales&lt;/td&gt;
&lt;td&gt;i18n JSON&lt;/td&gt;
&lt;td&gt;Nuxt i18n (separate, &lt;strong&gt;not&lt;/strong&gt; the Localizer)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.pages/i18n/locales/*.json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The &lt;strong&gt;installer&lt;/strong&gt; (&lt;code&gt;Sucrose.Bundle&lt;/code&gt;) is a third, separate surface: it ships roughly &lt;strong&gt;70 &lt;code&gt;Resources_&amp;lt;LANG&amp;gt;.xaml&lt;/code&gt; files&lt;/strong&gt;, and its checksum-error page has 29 inline UI translations. The installer's localization is independent of both the app's 23 and the website's 28 sets.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-application-languages-23"&gt;Application languages (23)&lt;/h2&gt;
&lt;p&gt;The runtime app ships these 23 languages. The source of truth is &lt;code&gt;src/Library/Sucrose.Resources/Locales/Locale.csv&lt;/code&gt; (and the matching &lt;code&gt;Locale.&amp;lt;CODE&amp;gt;.xaml&lt;/code&gt; files), which records each language's two-letter code, display name, and a translation-maturity version number.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;th&gt;Display name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CS&lt;/td&gt;
&lt;td&gt;Čeština&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DA&lt;/td&gt;
&lt;td&gt;Dansk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DE&lt;/td&gt;
&lt;td&gt;Deutsch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EL&lt;/td&gt;
&lt;td&gt;Ελληνική&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EN&lt;/td&gt;
&lt;td&gt;English&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ES&lt;/td&gt;
&lt;td&gt;Español&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FR&lt;/td&gt;
&lt;td&gt;Français&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HI&lt;/td&gt;
&lt;td&gt;हिन्दी&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID&lt;/td&gt;
&lt;td&gt;Indonesia&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IT&lt;/td&gt;
&lt;td&gt;Italiano&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JA&lt;/td&gt;
&lt;td&gt;日本語&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KO&lt;/td&gt;
&lt;td&gt;한국어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MS&lt;/td&gt;
&lt;td&gt;Melayu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NB&lt;/td&gt;
&lt;td&gt;Norsk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NL&lt;/td&gt;
&lt;td&gt;Nederlands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PL&lt;/td&gt;
&lt;td&gt;Polski&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PT&lt;/td&gt;
&lt;td&gt;Português&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RO&lt;/td&gt;
&lt;td&gt;Română&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RU&lt;/td&gt;
&lt;td&gt;Русский&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SV&lt;/td&gt;
&lt;td&gt;Svenska&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TR&lt;/td&gt;
&lt;td&gt;Türkçe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UK&lt;/td&gt;
&lt;td&gt;Українська&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ZH&lt;/td&gt;
&lt;td&gt;中文&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Maturity notes:&lt;/strong&gt; EN and TR are the most complete (v1.4 in the registry, e.g. &lt;code&gt;Locale.EN = "English (v1.4)"&lt;/code&gt;). ID, MS, and PT trail at around v0.9. Newly created languages start at v0.1 (see &lt;a href="./Translating-Localizer"&gt;Translating with the Localizer&lt;/a&gt;).&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-website-locales-28"&gt;Website locales (28)&lt;/h2&gt;
&lt;p&gt;The marketing website in &lt;code&gt;.pages/&lt;/code&gt; (Nuxt + Tailwind, built with &lt;strong&gt;bun&lt;/strong&gt;, deployed to GitHub Pages by &lt;code&gt;nuxt-deploy.yml&lt;/code&gt;) ships 28 locale JSON files under &lt;code&gt;.pages/i18n/locales/*.json&lt;/code&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;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
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr/&gt;
&lt;h2 id="h-why-the-two-sets-differ"&gt;Why the two sets differ&lt;/h2&gt;
&lt;p&gt;The website set is a &lt;strong&gt;superset&lt;/strong&gt; of the app set, plus one code difference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The website &lt;strong&gt;adds six locales&lt;/strong&gt; the app does not have: &lt;code&gt;bg&lt;/code&gt; (Bulgarian), &lt;code&gt;fi&lt;/code&gt; (Finnish), &lt;code&gt;hu&lt;/code&gt; (Hungarian), &lt;code&gt;sk&lt;/code&gt; (Slovak), &lt;code&gt;th&lt;/code&gt; (Thai), &lt;code&gt;vi&lt;/code&gt; (Vietnamese).&lt;/li&gt;
&lt;li&gt;For Norwegian, the &lt;strong&gt;website uses &lt;code&gt;no&lt;/code&gt;&lt;/strong&gt; while the &lt;strong&gt;app uses &lt;code&gt;NB&lt;/code&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are &lt;strong&gt;separate translation surfaces&lt;/strong&gt;: the website's i18n JSON is maintained inside the Nuxt project and is &lt;strong&gt;not&lt;/strong&gt; produced by the &lt;code&gt;Sucrose.Localizer&lt;/code&gt; tool, which targets only the app's XAML resources. Updating one does not update the other.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-runtime-locale-files"&gt;Runtime locale files&lt;/h2&gt;
&lt;p&gt;At runtime the app loads one XAML &lt;code&gt;ResourceDictionary&lt;/code&gt; per language from &lt;code&gt;src/Library/Sucrose.Resources/Locales/&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Locale.&amp;lt;CODE&amp;gt;.xaml&lt;/code&gt; — top-level language registry entries.&lt;/li&gt;
&lt;li&gt;Grouped, area-specific files such as &lt;code&gt;Portal.&amp;lt;area&amp;gt;.&amp;lt;CODE&amp;gt;.xaml&lt;/code&gt; (including &lt;code&gt;Portal.Enum.&amp;lt;CODE&amp;gt;.xaml&lt;/code&gt;, which localizes enum display names like &lt;code&gt;StoreServerType&lt;/code&gt;, &lt;code&gt;ReportThemeType&lt;/code&gt;, and &lt;code&gt;Category&lt;/code&gt;), plus Launcher and Discord groups.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Locale.csv&lt;/code&gt; — the locale registry mapping each code to its display name and version.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The active language is chosen by the &lt;code&gt;Culture&lt;/code&gt; setting (see &lt;a href="./Settings-General"&gt;Settings — General&lt;/a&gt;). Strings are resolved at runtime with segment keys via &lt;code&gt;Sucrose.Resources.Extension.Resources.GetValue(...)&lt;/code&gt;.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-how-each-surface-is-maintained"&gt;How each surface is maintained&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Application&lt;/strong&gt; — maintained with &lt;code&gt;Sucrose.Localizer&lt;/code&gt;, which round-trips between the runtime XAML, the working CSVs in &lt;code&gt;.localize/&lt;/code&gt;, and POEditor CSVs in &lt;code&gt;.localize/POEditor/&lt;/code&gt;. Adding a language is menu option 9 of the tool. Full pipeline: &lt;a href="./Translating-Localizer"&gt;Translating with the Localizer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Website&lt;/strong&gt; — maintained directly as Nuxt i18n JSON in &lt;code&gt;.pages/i18n/locales/&lt;/code&gt;, independent of the app and the Localizer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Installer&lt;/strong&gt; — its ~70 &lt;code&gt;Resources_&amp;lt;LANG&amp;gt;.xaml&lt;/code&gt; files and the error-page translations are maintained within the &lt;code&gt;Sucrose.Bundle&lt;/code&gt; project (see &lt;a href="./Bundle-Installer-Internals"&gt;Bundle Installer Internals&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Contributions to app translations are welcome — open an issue or PR per the &lt;a href="/p/sucrose/wiki/Contributing/"&gt;Contributing&lt;/a&gt; guidelines.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="h-see-also"&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="./Translating-Localizer"&gt;Translating with the Localizer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Settings-General"&gt;Settings — General&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/p/sucrose/wiki/Contributing/"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Repository-Layout"&gt;Repository Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="./Bundle-Installer-Internals"&gt;Bundle Installer Internals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:31 -0000</pubDate><guid>https://sourceforge.net383b039b28279edf9c0dce08722af70dfc157843</guid></item></channel></rss>