--- title: '34 i18n Fields' --- # 34 i18n Fields ## Scope Field-level i18n editing in project t1, including language tabs, active-language switching, and AI-assisted subtree translation for supported text widgets. ## Prerequisites - Mock mode enabled - Project t1 - Collection i18n_content - Entry ic2 for missing EN translations ## Test Cases | ID | Description | Expected Result | Priority | | --- | --- | --- | --- | | I18N-01 | i18n field shows language tabs | Tabs for configured languages are visible on detected i18n fields | High | | I18N-10 | Switching tabs changes visible content | Active language content changes without losing the other language value | High | | I18N-30 | Editing one language marks the entry dirty | Unsaved badge appears after editing an i18n value | High | | I18N-33 | AI translation fills a missing simple target value | Switching to the target tab and clicking translate inserts the translated target value and marks the entry dirty | High | | I18N-34 | AI translation fills a nested subtree | Switching to the target tab and clicking translate on a nested i18n object fills supported target leaves while preserving the field shape | High | ## Edge Cases - Translation button is hidden for readonly i18n fields - Empty source language content does not overwrite the target - Invalid AI JSON response shows an error toast and does not mutate the field - Only supported string widgets are translated; other values remain local copies from the source subtree ## Accessibility - Language tabs remain keyboard-focusable buttons with correct tab semantics - Translate actions expose a descriptive aria-label for translating into the active target language from the auto-selected best source language