Skip to content

Add translations for 16 languages - #166

Open
danielchalmers wants to merge 3 commits into
masterfrom
claude/ai-translated-localization-1b9e00
Open

danielchalmers wants to merge 3 commits into
masterfrom
claude/ai-translated-localization-1b9e00

Conversation

@danielchalmers

@danielchalmers danielchalmers commented Sep 22, 2026 •

Copy link
Copy Markdown
Owner

The app now follows the Windows display language. It includes translations for Simplified and Traditional Chinese, Japanese, Korean, German, French, Italian, Dutch, Spanish, Brazilian Portuguese, Indonesian, Vietnamese, Russian, Ukrainian, Polish, and Turkish. Regional variants use the closest translation (de-AT gets German, zh-CN gets Simplified Chinese), and anything else falls back to English:

  • All UI text lives in Localization/Strings.resx, used with {local:Loc Key} in XAML and Loc.Get in code
  • Translations compile into the exe instead of satellite assemblies, because Costura doesn't embed the app's own satellites and the release ships only DesktopClock.exe
  • Relative time ("in 3 days") uses each language's plural forms, including the three forms Polish, Russian, and Ukrainian need
  • Countdown presets that contain words and theme preset names are translated
  • Docs links drop /en-us so they open in the reader's language
  • The English UI is unchanged: the settings sidebar renders pixel-identical, and the menu's size slider moves 1px
  • Tests check every translation for missing or extra keys, changed placeholders or links, duplicate access keys, and plural form counts, and check that every key used in XAML or code exists
image

Not included:

  • Presets like {h:mm tt} are 12-hour patterns, so German shows 1:01 for 1:01 PM
  • No right-to-left languages yet
  • Font style, font weight, and image fit dropdowns still show English values

Closes #160

@github-actions github-actions Bot added the enhancement New feature or request label Sep 22, 2026
All user-facing text now lives in Localization/Strings.resx and is looked up with {local:Loc Key} in XAML or Loc.Get in code, following the Windows display language with English as the fallback. The English UI is unchanged.

- Translations compile into the exe instead of satellite assemblies, because Costura doesn't embed the app's own satellites and the app ships as a single file
- Relative time ("in 3 days") picks plural forms per language instead of a fixed singular/plural pair
- Countdown presets that contain words ("{%d} days left") are translatable; theme preset names too
- Docs links drop /en-us so they open in the reader's language
- Tests that assert English text pin the UI language
Chinese (Simplified and Traditional), Japanese, Korean, German, French, Italian, Dutch, Spanish, Brazilian Portuguese, Indonesian, Vietnamese, Russian, Ukrainian, Polish, and Turkish. Regional variants fall back to the closest translation, such as de-AT to German and zh-CN to Simplified Chinese.

Tests check every translation for missing or extra keys, changed placeholders or links, one unique access key per label, and the right number of plural forms. Another test makes sure every key used in XAML or code exists.

Closes #160
@danielchalmers
danielchalmers force-pushed the claude/ai-translated-localization-1b9e00 branch from 65923af to 65ec08c Compare September 22, 2026 19:49
@danielchalmers
danielchalmers added this pull request to stack #170 September 22, 2026 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Could you add a Simplified Chinese version?

1 participant