initial commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
---
|
||||
epic: 14
|
||||
story: 14.5
|
||||
title: "Localization Framework"
|
||||
status: draft
|
||||
---
|
||||
|
||||
## Epic 14 — Accessibility & Internationalization
|
||||
**Goal:** Make CalcPad usable by everyone regardless of ability, language, or locale.
|
||||
|
||||
### Story 14.5: Localization Framework
|
||||
|
||||
As a CalcPad user who speaks a language other than English,
|
||||
I want the entire UI translated into my language,
|
||||
So that I can use CalcPad comfortably in my native language.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
|
||||
**Given** the macOS native application
|
||||
**When** localization is implemented
|
||||
**Then** all user-facing strings are defined in `.strings` and `.stringsdict` files
|
||||
**And** pluralization rules use `.stringsdict` for correct plural forms per language
|
||||
|
||||
**Given** the Windows and web applications
|
||||
**When** localization is implemented
|
||||
**Then** all user-facing strings are managed through `fluent-rs` (Project Fluent `.ftl` files)
|
||||
**And** message references and parameterized strings are used for dynamic content (e.g., "Sheet {$name} saved")
|
||||
|
||||
**Given** the localization framework is in place
|
||||
**When** all strings are translated
|
||||
**Then** the following 8 languages are fully supported: English (EN), French (FR), German (DE), Spanish (ES), Italian (IT), Portuguese-Brazil (PT-BR), Chinese Simplified (ZH), Korean (KO)
|
||||
**And** each language has 100% string coverage -- no fallback to English for any UI element
|
||||
|
||||
**Given** the user changes their language preference in CalcPad settings
|
||||
**When** the change is applied
|
||||
**Then** all menus, labels, tooltips, error messages, onboarding text, and template descriptions switch to the selected language
|
||||
**And** the change takes effect immediately without restarting the application
|
||||
|
||||
**Given** a new language is added in the future
|
||||
**When** a developer adds the translation files
|
||||
**Then** no code changes are required beyond adding the new `.strings`/`.stringsdict` or `.ftl` file and registering the locale
|
||||
**And** the language automatically appears in the language selection dropdown
|
||||
Reference in New Issue
Block a user