I18n Review
Purpose
Evaluate internationalization readiness across UI, data, and content layers to ensure the product works correctly for users in any locale.
Scope Constraints
Reads source code, templates, and configuration for i18n analysis. Does not modify files or execute code. Does not perform actual translations.
Inputs
- Feature description or codebase path to review
- Target locales (or "all" for general readiness)
- Known i18n framework in use (react-intl, next-intl, i18next, etc.), if any
- Any existing translation files or locale configs
Input Sanitization
No user-provided values are used in commands or file paths. All inputs are treated as read-only analysis targets.
Procedure
Progress Checklist
Step 1: Audit String Externalization
- Scan for hardcoded user-facing strings in source files.
- Verify all strings use the project's i18n extraction method (message IDs, translation keys).
- Check for string concatenation that breaks translator context.
- Flag template literals with embedded logic that prevent proper translation.
Step 2: Evaluate Locale Strategy
- Identify how locale is detected (browser, URL, user preference, geo-IP).
- Verify locale persistence across sessions and navigation.
- Check fallback chain (e.g.,
fr-CA -> fr -> en).
- Confirm locale switching does not cause full page reloads or state loss.
Step 3: Review Pluralization Handling
- Check usage of ICU MessageFormat or equivalent plural rules.
- Verify plural categories beyond "one/other" for languages that need them (zero, two, few, many).
- Flag any manual plural logic (ternary operators,
count === 1 checks).
Step 4: Check Date/Number/Currency Formatting
- Verify use of
Intl.DateTimeFormat, Intl.NumberFormat, or equivalent locale-aware APIs.
- Flag hardcoded date patterns (MM/DD/YYYY) or number separators.
- Check currency display respects locale conventions.
- Verify timezone handling for date display.
Step 5: Assess RTL Layout Support
- Check for CSS logical properties (
inline-start/inline-end vs left/right).
- Verify
dir="rtl" attribute propagation.
- Flag hardcoded directional icons (arrows, chevrons) that need mirroring.
- Check text alignment and reading order in mixed-direction content.
Step 6: Evaluate Cultural UX Adaptation
- Review form fields for locale assumptions (name format, address, phone).
- Check for culturally sensitive icons, colors, or imagery.
- Verify text expansion accommodation (German ~30% longer than English).
- Assess sort order and collation for locale-appropriate sorting.
Compaction resilience: If context was lost, re-read the Inputs section to identify the review target, check the Progress Checklist for completed steps, then resume from the earliest incomplete step.
Output Format
| Category |
Finding |
Severity |
Recommendation |
| String externalization |
... |
High/Med/Low |
... |
| Locale strategy |
... |
... |
... |
| Pluralization |
... |
... |
... |
| Date/Number formatting |
... |
... |
... |
| RTL support |
... |
... |
... |
| Cultural adaptation |
... |
... |
... |
Handoff
- Hand off to interaction-design if component-level state changes are needed for locale-specific UI adaptations.
- Hand off to craftsman/pattern-analysis if i18n framework integration patterns need implementation review.
Quality Checks
Evolution Notes
1---2name: i18n-review3description: Use when reviewing internationalization readiness of a feature or codebase. Covers locale strategy, RTL layout, string externalization, pluralization, date/number formatting, and cultural UX adaptation. Do not use for general accessibility audits (use interaction-design).4---56# I18n Review78## Purpose910Evaluate internationalization readiness across UI, data, and content layers to ensure the product works correctly for users in any locale.1112## Scope Constraints1314Reads source code, templates, and configuration for i18n analysis. Does not modify files or execute code. Does not perform actual translations.1516## Inputs1718- Feature description or codebase path to review19- Target locales (or "all" for general readiness)20- Known i18n framework in use (react-intl, next-intl, i18next, etc.), if any21- Any existing translation files or locale configs2223## Input Sanitization2425No user-provided values are used in commands or file paths. All inputs are treated as read-only analysis targets.2627## Procedure2829### Progress Checklist30- [ ] Step 1: Audit string externalization31- [ ] Step 2: Evaluate locale strategy32- [ ] Step 3: Review pluralization handling33- [ ] Step 4: Check date/number/currency formatting34- [ ] Step 5: Assess RTL layout support35- [ ] Step 6: Evaluate cultural UX adaptation3637### Step 1: Audit String Externalization3839- Scan for hardcoded user-facing strings in source files.40- Verify all strings use the project's i18n extraction method (message IDs, translation keys).41- Check for string concatenation that breaks translator context.42- Flag template literals with embedded logic that prevent proper translation.4344### Step 2: Evaluate Locale Strategy4546- Identify how locale is detected (browser, URL, user preference, geo-IP).47- Verify locale persistence across sessions and navigation.48- Check fallback chain (e.g., `fr-CA` -> `fr` -> `en`).49- Confirm locale switching does not cause full page reloads or state loss.5051### Step 3: Review Pluralization Handling5253- Check usage of ICU MessageFormat or equivalent plural rules.54- Verify plural categories beyond "one/other" for languages that need them (zero, two, few, many).55- Flag any manual plural logic (ternary operators, `count === 1` checks).5657### Step 4: Check Date/Number/Currency Formatting5859- Verify use of `Intl.DateTimeFormat`, `Intl.NumberFormat`, or equivalent locale-aware APIs.60- Flag hardcoded date patterns (MM/DD/YYYY) or number separators.61- Check currency display respects locale conventions.62- Verify timezone handling for date display.6364### Step 5: Assess RTL Layout Support6566- Check for CSS logical properties (`inline-start`/`inline-end` vs `left`/`right`).67- Verify `dir="rtl"` attribute propagation.68- Flag hardcoded directional icons (arrows, chevrons) that need mirroring.69- Check text alignment and reading order in mixed-direction content.7071### Step 6: Evaluate Cultural UX Adaptation7273- Review form fields for locale assumptions (name format, address, phone).74- Check for culturally sensitive icons, colors, or imagery.75- Verify text expansion accommodation (German ~30% longer than English).76- Assess sort order and collation for locale-appropriate sorting.7778> **Compaction resilience**: If context was lost, re-read the Inputs section to identify the review target, check the Progress Checklist for completed steps, then resume from the earliest incomplete step.7980## Output Format8182| Category | Finding | Severity | Recommendation |83|----------|---------|----------|----------------|84| String externalization | ... | High/Med/Low | ... |85| Locale strategy | ... | ... | ... |86| Pluralization | ... | ... | ... |87| Date/Number formatting | ... | ... | ... |88| RTL support | ... | ... | ... |89| Cultural adaptation | ... | ... | ... |9091## Handoff9293- Hand off to interaction-design if component-level state changes are needed for locale-specific UI adaptations.94- Hand off to craftsman/pattern-analysis if i18n framework integration patterns need implementation review.9596## Quality Checks9798- [ ] All hardcoded user-facing strings identified99- [ ] Locale detection and fallback chain documented100- [ ] Plural rules go beyond simple one/other where needed101- [ ] Date/number formatting uses locale-aware APIs102- [ ] RTL layout assessed with logical properties103- [ ] Text expansion impact on layouts evaluated104- [ ] Form fields checked for locale assumptions105- [ ] Severity ratings applied to all findings106107## Evolution Notes108<!-- Observations appended after each use -->