Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-016 — Internationalisation native et localisation progressive

Statut : Accepté — document fondateur. Édition directe autorisée en phase de design pré-ouverture publique ; immuable après ouverture publique (toute évolution via RFC, ADR-015). Catégorie : Architecture (internationalisation, toutes couches).

Contexte

L’internationalisation ajoutée après coup produit des systèmes où le texte non latin casse, où le tri dépend de la locale du serveur, et où le sens de lecture est un cas particulier.

La traiter comme un fondement impose de choisir tôt un socle Unicode, un modèle de locales et une politique de repli.

Décision

🔗 EXTENSION (2026-06-30, ADR-053). icu4x ne sert pas qu’aux couches hautes (AirString, air-ui, formats) : il sous-tend aussi la libc C d’Air (ctype/locale/i18n — caractères, casse, collation, normalisation, segmentation, calendriers). La libc Air donne donc l’i18n correcte par défaut au C, sans bolt-on. Locales BCP-47 (et non POSIX) y compris au niveau libc, les noms POSIX étant mappés. Voir ADR-053.

Unicode 16+ supporté nativement. UTF-8 partout, pas de codages legacy en interne. Type AirString Unicode-aware (normalisation, casing locale-aware, segmentation par grapheme, comparaison locale-aware).

Locales identifiées par BCP 47, pas POSIX. Trois niveaux : système, utilisateur, application. Cascade de fallback macOS-style.

Socle technique : icu4x adopté comme dépendance structurante, exception explicite à la règle des 80 % du Principe d’ingénierie 6. Justification : référence Unicode mondiale, reproduction impossible, sécurité par adoption massive, modularité native.

Formats culturels via APIs air-runtime consommant icu4x. Direction du texte RTL via cosmic-text + HarfBuzz. air-ui utilise des coordonnées logiques (leading/trailing).

IME via text-input-v3 Wayland standard dans air-wm. Compatible Fcitx5 et IBus. Support IME en mode console tier-2.

Traductions : format Fluent (Mozilla). Fichiers .ftl par composant et par langue.

Polices : famille Noto comme défaut. Mécanisme de fallback automatique.

Calendriers : grégorien par défaut, autres calendriers disponibles via API AirCalendar.

Genre et inclusivité : traductions officielles en formes standard, variantes communautaires possibles. Position politiquement neutre.

Langues prioritaires initiales (9 langues) : anglais, français, allemand, espagnol, italien, portugais, chinois mandarin simplifié, arabe, japonais.

Conséquences

Voir la section « Décision » : cet ADR énonce une politique dont les conséquences sont directement celles des règles qu’elle pose.

Alternatives rejetées

Aucune alternative n’a été consignée lors de l’instruction.


Licence du document : MPL 2.0