Lab 10: Internationalization Architecture

Time: 60 minutes | Level: Architect | Docker: node:20-alpine

Overview

Global CSS architecture for i18n: CSS logical properties migration (physical→logical), RTL/LTR switching, CJK/Arabic/Devanagari font stacks, writing-mode layouts, Intl-aware spacing, and unicode-range font splitting.


Step 1: Physical → Logical Properties Migration

Physical properties (direction-aware):     Logical properties (flow-relative):
  margin-left       →  margin-inline-start
  margin-right      →  margin-inline-end
  margin-top        →  margin-block-start
  margin-bottom     →  margin-block-end
  padding-left      →  padding-inline-start
  padding-right     →  padding-inline-end
  padding-top       →  padding-block-start
  padding-bottom    →  padding-block-end
  border-left       →  border-inline-start
  border-right      →  border-inline-end
  left              →  inset-inline-start
  right             →  inset-inline-end
  top               →  inset-block-start
  bottom            →  inset-block-end
  width             →  inline-size
  height            →  block-size
  text-align: left  →  text-align: start
  text-align: right →  text-align: end
  float: left       →  float: inline-start
  float: right      →  float: inline-end

Step 2: RTL/LTR Switching

💡 padding-inline: X is shorthand for padding-inline-start: X; padding-inline-end: X — it sets both inline sides simultaneously, equivalent to the old padding-left + padding-right.


Step 3: Multi-Script Font Stacks


Step 4: Writing-Mode Layouts


Step 5: Unicode-Range Font Splitting

💡 With unicode-range splitting, browsers download only the font subsets containing characters present in the document. An English-only page downloads only the Latin subset.


Step 6: Intl-Aware Spacing


Step 7: Automated Migration Tool


Step 8: Capstone — Logical Property Converter

📸 Verified Output:


Summary

Topic
Technique
Benefit

Physical→logical

margin-inline-start etc.

Auto RTL support

RTL switching

dir attribute + :dir()

No duplicate CSS

Icon mirroring

:dir(rtl) { scaleX(-1) }

Directional icons

CJK fonts

Noto family stack

All CJK coverage

Arabic

writing-system: 0; letter-spacing: 0

Connected script

Font subsetting

unicode-range

Smaller font loads

Writing modes

vertical-rl

CJK vertical text

Density

Per-lang line-height vars

Readable in all scripts

Last updated