76 lines
2.8 KiB
Markdown
76 lines
2.8 KiB
Markdown
# Localization Catalog
|
|
|
|
## Rules
|
|
|
|
- Every user-facing string must be localizable
|
|
- Stable key names only
|
|
- English is the fallback locale
|
|
- Swedish must be present at launch
|
|
- Keys are mirrored in `contracts/localization/en.json` and `contracts/localization/sv.json`
|
|
|
|
## Current Keys
|
|
|
|
| Key | Purpose |
|
|
| --- | --- |
|
|
| `app.name` | App name |
|
|
| `common.continue` | Continue action |
|
|
| `common.cancel` | Cancel action |
|
|
| `common.close` | Close action |
|
|
| `common.retry` | Retry action |
|
|
| `common.loading` | Loading state |
|
|
| `common.error_title` | Error title |
|
|
| `common.ok` | OK action |
|
|
| `onboarding.title` | Study intro title |
|
|
| `onboarding.subtitle` | Study intro body |
|
|
| `onboarding.consent_title` | Consent title |
|
|
| `onboarding.consent_body` | Consent body |
|
|
| `onboarding.language_title` | Language picker title |
|
|
| `onboarding.start_session` | Start session CTA |
|
|
| `feed.next_round_title` | Next round title |
|
|
| `feed.next_round_body` | Next round body |
|
|
| `feed.watch_preview` | Watch preview CTA |
|
|
| `feed.round_ready` | Round ready label |
|
|
| `feed.title` | Feed title |
|
|
| `feed.subtitle` | Feed subtitle |
|
|
| `feed.hero_title` | Feed hero title |
|
|
| `feed.hero_subtitle` | Feed hero subtitle |
|
|
| `feed.lock_label` | Feed lock label |
|
|
| `feed.odds_label` | Feed odds label |
|
|
| `feed.cta` | Feed CTA |
|
|
| `round.countdown_label` | Countdown label |
|
|
| `round.locked_label` | Locked label |
|
|
| `round.selection_prompt` | Selection prompt |
|
|
| `round.selection_confirmed` | Selection accepted |
|
|
| `round.selection_submitting` | Selection submitting |
|
|
| `round.odds_label` | Odds label |
|
|
| `round.title` | Round title |
|
|
| `round.subtitle` | Round subtitle |
|
|
| `round.video_placeholder` | Video placeholder |
|
|
| `round.preview_label` | Preview label |
|
|
| `round.primary_cta` | Round confirm CTA |
|
|
| `round.home` | Home outcome label |
|
|
| `round.away` | Away outcome label |
|
|
| `reveal.title` | Reveal title |
|
|
| `reveal.subtitle` | Reveal subtitle |
|
|
| `reveal.status` | Reveal status |
|
|
| `reveal.cta` | Reveal CTA |
|
|
| `result.title` | Result title |
|
|
| `result.selection_label` | Result selection label |
|
|
| `result.outcome_label` | Result outcome label |
|
|
| `result.win` | Winning result label |
|
|
| `result.lose` | Losing result label |
|
|
| `result.next_round` | Next round CTA |
|
|
| `result.subtitle` | Result subtitle |
|
|
| `result.selection_label` | Result selection label |
|
|
| `result.outcome_label` | Result outcome label |
|
|
| `result.win` | Winning result label |
|
|
| `result.lose` | Losing result label |
|
|
| `settings.title` | Settings title |
|
|
| `settings.language` | Language setting |
|
|
| `settings.haptics` | Haptics setting |
|
|
| `settings.analytics` | Analytics setting |
|
|
| `errors.generic` | Generic error copy |
|
|
| `errors.network` | Network error copy |
|
|
| `errors.playback` | Playback error copy |
|
|
| `errors.session_expired` | Session expired copy |
|