agentleFS
botirkhaltaevbotirkhaltaev/botir-skills/skills/internationalization-ui/SKILL.md

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
  1. Distinctive:

    Headlines: Test with 150% of English length

    line 37
  2. Very specific:

    Use dir="rtl" on the <html> element and CSS logical properties everywhere.

    line 70
  3. Distinctive:

    Never hardcode formats. Use locale-aware formatting:

    line 74

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 LanguageExpansion 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:

ElementUSAGermanyJapan
Date12/31/202431.12.20242024/12/31
Time2:30 PM14:3014:30
Number1,234.561.234,561,234.56
Currency$1,234.561.234,56 €¥1,235

Always use Intl API or libraries like date-fns, moment (deprecated), or framework-specific i18n libraries.

Iconography & Imagery

ElementGuideline
IconsUse universally understood icons. A thumbs-up is not positive in all cultures.
Hand gesturesAvoid — meanings vary wildly across cultures
AnimalsResearch symbolism (e.g., owl = wisdom in West, bad luck in some East)
ColorsDon't rely on color meaning alone. Red = danger (West), luck (China), mourning (South Africa)
People in photosRepresent diversity. Avoid stock photos that are obviously from one region
FlagsDon'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 properties
  • references/locale-formatting.md — expansion table, Intl patterns, 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

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.