internationalization-ui
Skill4 starsChanged 3 months agoApache-2.0View on GitHub
Design interfaces that work across languages, scripts, and cultures. Covers RTL layouts, text expansion, date/number/currency formatting, iconography, color culture, and the i18n implementation checklist. Use when building for multiple languages or regions. Triggers on: "internationalization", "i18n", "RTL", "right-to-left", "localization", "multi-language", "translation", "global design".
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 37
Headlines: Test with 150% of English length
- Very specific: line 70
Use dir="rtl" on the <html> element and CSS logical properties everywhere.
- Distinctive: line 74
Never hardcode formats. Use locale-aware formatting:
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Internationalization (i18n) UI
Design so your interface works in every language — including ones you can't read. i18n is not translation; it's designing for variability.
Core Principle: Design for the Worst Case
Design for the language that expands most, scripts that flow opposite, and text that might double in length.
Text Expansion
English is compact. Most languages are longer.
| Target Language | Expansion from English |
| German | +20-35% |
| French | +15-20% |
| Spanish | +15-25% |
| Portuguese | +20-30% |
| Japanese | -30-50% (shorter!) |
| Chinese | -30-50% (shorter!) |
| Arabic | +5-15% (but RTL) |
| Hindi | +20-50% (complex scripts) |
Design Rules
- Buttons: Allow wrapping or truncation with ellipsis. Fixed-width buttons will break.
- Headlines: Test with 150% of English length
- Navigation: Horizontal nav breaks first. Design for wrapping or truncation.
- Forms: Labels above inputs handle expansion better than left-aligned labels
- Tables: Allow column resizing or horizontal scroll
RTL (Right-to-Left) Languages
Arabic, Hebrew, Persian, Urdu, and others read right-to-left.
What Flips
- Text alignment — right-aligned
- Layout direction — flex/grid
direction: rtl - Navigation — logo right, actions left
- Icons with directional meaning — arrows, back buttons, progress bars
- Form inputs — text entry starts from right
- Sliders — minimum on right, maximum on left
What Does NOT Flip
- Media playback controls — play still points right
- Circular progress — still clockwise
- Charts — still left-to-right (time flows left-to-right universally)
- Brand logos — never flip
- Numbers — still LTR within RTL text
Implementation
/* Logical properties handle this automatically */
.margin-inline-start { /* replaces margin-left */ }
.margin-inline-end { /* replaces margin-right */ }
.text-align-start { /* replaces text-align: left */ }
.border-inline-start { /* replaces border-left */ }Use dir="rtl" on the <html> element and CSS logical properties everywhere.
Date, Time, Number, and Currency
Never hardcode formats. Use locale-aware formatting:
| Element | USA | Germany | Japan |
| Date | 12/31/2024 | 31.12.2024 | 2024/12/31 |
| Time | 2:30 PM | 14:30 | 14:30 |
| Number | 1,234.56 | 1.234,56 | 1,234.56 |
| Currency | $1,234.56 | 1.234,56 € | ¥1,235 |
Always use Intl API or libraries like date-fns, moment (deprecated), or framework-specific i18n libraries.
Iconography & Imagery
| Element | Guideline |
| Icons | Use universally understood icons. A thumbs-up is not positive in all cultures. |
| Hand gestures | Avoid — meanings vary wildly across cultures |
| Animals | Research symbolism (e.g., owl = wisdom in West, bad luck in some East) |
| Colors | Don't rely on color meaning alone. Red = danger (West), luck (China), mourning (South Africa) |
| People in photos | Represent diversity. Avoid stock photos that are obviously from one region |
| Flags | Don't use flags for language selection (a country may have multiple languages) |
Content Considerations
- Avoid idioms — "Piece of cake" doesn't translate
- Avoid text in images — it can't be translated
- Provide context for translators — "Run" (a command) vs "Run" (a process)
- Pluralization rules — Some languages have multiple plural forms (Polish, Russian, Arabic)
- Gendered language — Some languages gender everything. Use gender-neutral where possible.
Implementation Checklist
- All UI text externalized (no hardcoded strings)
- Layout uses logical properties (margin-inline, padding-inline, inset)
- Flexbox/grid handles direction change
- Buttons allow text wrapping or have max-width + ellipsis
- Navigation handles longer labels
- Date/time/number formatted with locale API
- Currency formatting uses locale
- RTL tested with actual content (not just
dir="rtl") - Icons reviewed for cultural meaning
- Images don't contain untranslatable text
- Pluralization handled for all target languages
- Font supports all target scripts (not all fonts support Arabic, Devanagari, CJK)
Reference Map
references/rtl-logical-properties.md— flip vs no-flip rules and CSS logical propertiesreferences/locale-formatting.md— expansion table,Intlpatterns, i18n ship checklist
Related Skills
- For design tokens supporting multi-locale → use
design-systems - For typography considerations → use
ui-visual-design - For accessibility across languages → use
a11y-accessibility-design
In this repository80 other files it gives its agents.
- a11y-accessibility-designSkill
- agentic-ui-patternsSkill
- ai-native-ui-designSkill
- ai-ui-anti-patternsSkill
- ai-ui-heuristicsSkill
- calm-technology-uiSkill
- conversion-growth-designSkill
- cross-platform-designSkill
- dark-mode-designSkill
- data-visualizationSkill
- design-systemsSkill
- design-thinking-processSkill
- error-empty-statesSkill
- ethical-design-patternsSkill
- form-uxSkill
- information-architectureSkill
- interaction-design-patternsSkill
- mobile-touch-designSkill
- modal-classes-lifecycleSkill
- modal-container-imagesSkill
- modal-dicts-queuesSkill
- modal-endpointsSkill
- modal-fundamentalsSkill
- modal-gpu-computeSkill
- modal-networkingSkill
- modal-observabilitySkill
- modal-parallel-executionSkill
- modal-sandboxesSkill
- modal-scaling-performanceSkill
- modal-schedulingSkill
- modal-secretsSkill
- modal-serversSkill
- modal-storageSkill
- modal-web-servingSkill
- modal-workspace-adminSkill
- motion-design-principlesSkill
- notifications-permissionsSkill
- onboarding-uxSkill
- rust-api-designSkill
- rust-async-programmingSkill
- rust-cargo-masterySkill
- rust-cli-applicationsSkill
- rust-clippy-lintsSkill
- rust-closures-iteratorsSkill
- rust-compiler-internalsSkill
- rust-concurrencySkill
- rust-design-patternsSkill
- rust-editionsSkill
- rust-embeddedSkill
- rust-error-handlingSkill
- rust-game-developmentSkill
- rust-lifetimes-borrowingSkill
- rust-macrosSkill
- rust-performanceSkill
- rust-rustdocSkill
- rust-rustup-toolchainSkill
- rust-smart-pointersSkill
- rust-testing-benchmarkingSkill
- rust-type-systemSkill
- rust-unsafe-ffiSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

