Context
iOS v1.6.2 (#153) refactored all language-specific data into pure-data LanguageProfile structs — one file per language (overrides, accent map, contractions, collapse rules, seed bigrams). Result: adding German in v1.7.0 took one data file + enum case; picker entries, autocorrect and layout follow automatically. Android should adopt the same shape before adding Spanish/German, to avoid the six-files-per-language mess iOS had.
What to do
- Kotlin
LanguageProfile data class: overrides (ca→ça…), accentMap, contractions (l'/d'/qu'…), collapseRules (ae→ä for DE), seedBigrams, layout default (AZERTY/QWERTY), localized space/return labels
- One object per language under e.g.
ime/.../languages/ (French, English to start)
- Settings language picker derived from the enum (
SupportedLanguage.entries) so new languages appear automatically
- Correction/prediction engines read profile data instead of hardcoded values
- Add Autocorrect on/off toggle in Settings → CLAVIER (iOS has it; persists to DataStore, IME observes)
Per iOS ADR 0001: non-native languages launch with empty overrides/seeds (populate from real user feedback) — adopt the same policy.
Acceptance criteria
iOS reference: DictusCore/Sources/DictusCore/Languages/, ADR 0001, release v1.6.2.
Context
iOS v1.6.2 (#153) refactored all language-specific data into pure-data
LanguageProfilestructs — one file per language (overrides, accent map, contractions, collapse rules, seed bigrams). Result: adding German in v1.7.0 took one data file + enum case; picker entries, autocorrect and layout follow automatically. Android should adopt the same shape before adding Spanish/German, to avoid the six-files-per-language mess iOS had.What to do
LanguageProfiledata class:overrides(ca→ça…),accentMap,contractions(l'/d'/qu'…),collapseRules(ae→ä for DE),seedBigrams, layout default (AZERTY/QWERTY), localized space/return labelsime/.../languages/(French, English to start)SupportedLanguage.entries) so new languages appear automaticallyPer iOS ADR 0001: non-native languages launch with empty overrides/seeds (populate from real user feedback) — adopt the same policy.
Acceptance criteria
iOS reference:
DictusCore/Sources/DictusCore/Languages/, ADR 0001, release v1.6.2.