--- 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