docs(34): capture phase context
This commit is contained in:
92
.planning/phases/34-i18n-foundation/34-DISCUSSION-LOG.md
Normal file
92
.planning/phases/34-i18n-foundation/34-DISCUSSION-LOG.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Phase 34: i18n Foundation - Discussion Log
|
||||
|
||||
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
|
||||
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
|
||||
|
||||
**Date:** 2026-04-13
|
||||
**Phase:** 34-i18n Foundation
|
||||
**Areas discussed:** Translation scope & boundaries, Library & architecture, Language selection UX, First additional language
|
||||
|
||||
---
|
||||
|
||||
## Translation Scope & Boundaries
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| UI chrome only | Buttons, labels, headings, empty states, errors, navigation | |
|
||||
| UI chrome + system content | UI chrome plus default categories, onboarding text, MCP descriptions | ✓ |
|
||||
| Everything including catalog | UI + system + catalog item names/descriptions per locale | |
|
||||
|
||||
**User's choice:** UI chrome + system content
|
||||
**Notes:** Catalog data translation deferred — too much content to maintain translations for.
|
||||
|
||||
---
|
||||
|
||||
## Library & Architecture
|
||||
|
||||
### Library choice
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| react-i18next | Most popular, hook-based, JSON files, namespaces, lazy loading | |
|
||||
| Lingui | Compile-time extraction, smaller runtime, macro-based | |
|
||||
| You decide | Claude picks based on stack fit | ✓ |
|
||||
|
||||
**User's choice:** Claude's discretion
|
||||
|
||||
### Translation storage
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| JSON files in repo | en.json, de.json checked into git. Simple, reviewable in PRs | ✓ |
|
||||
| External translation service | Crowdin/Lokalise with web UI for translators | |
|
||||
| You decide | Claude picks | |
|
||||
|
||||
**User's choice:** JSON in repo. User asked whether this is easy to switch later — confirmed it is. Translation keys are the same regardless of storage; switching to external service is a CI/sync change, not a code rewrite.
|
||||
|
||||
---
|
||||
|
||||
## Language Selection UX
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Separate setting | Language and currency/market are independent | |
|
||||
| Tied to market | EUR/DE = German, GBP/UK = English | |
|
||||
| Auto-detect with override | Browser locale auto-detect, independent from market, overridable | ✓ |
|
||||
|
||||
**User's choice:** Auto-detect with override, independent from market/currency.
|
||||
|
||||
---
|
||||
|
||||
## First Additional Language
|
||||
|
||||
### Language choice
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| German (de) | Primary target market, user speaks it natively | ✓ |
|
||||
| French (fr) | Tests different grammar family | |
|
||||
| Both German + French | Stress-tests the system | |
|
||||
|
||||
**User's choice:** German. User noted they can't validate French ("aint speaking french, can only send ai agents to test").
|
||||
|
||||
### Translation production
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Manual translation | User writes German strings | |
|
||||
| AI-generated, user reviews | Claude generates, user does formal review pass | |
|
||||
| AI-generated, fix organically | Claude generates, user catches issues during normal app usage | ✓ |
|
||||
|
||||
**User's choice:** AI-generated, no dedicated review — fix issues as they're noticed.
|
||||
|
||||
## Claude's Discretion
|
||||
|
||||
- Library choice (react-i18next vs. Lingui)
|
||||
- String key naming convention
|
||||
- Dynamic content interpolation patterns
|
||||
- Extraction strategy (bulk vs. incremental)
|
||||
|
||||
## Deferred Ideas
|
||||
|
||||
None — discussion stayed within phase scope.
|
||||
Reference in New Issue
Block a user