Internationalisation
François Yergeau
Paris-Web 2008 I18n du Web 2
Plan
• Internationalisation et Unicode• Les ancêtres (HTTP, HTML,...)• Quelques camemberts• URL et noms de domaines• Courriel• Sélection de langues• Avenir
Paris-Web 2008 I18n du Web 3
Internationalisation (i18n)
Processus consistant à :• Préparer un système pour de multiples localisations
– Internationalisation de base (années 80)– Rendre localisation plus facile, plus économique– Extraction des éléments traduisibles (externalisation)
• Rendre un système multilingue– Internationalisation avancée (années 90)– Généralisation– Rend aussi la localisation plus facile– Briser les silos isolant les langues– Unicode
Paris-Web 2008 I18n du Web 4
Mojibake
Paris-Web 2008 I18n du Web 5
C'est quoi Unicode ?
Unicode est un standard qui définit un numéro unique pour chaque caractère,
quelle que soit la plate-forme,quel que soit le logiciel,
quelle que soit la langue.
Paris-Web 2008 I18n du Web 6
ASCII0 1 2 3 4 5 6 7
0 NUL DLE SP 0 @ P ` p1 SOH DC1 ! 1 A Q a q2 STX DC2 " 2 B R b r3 ETX DC3 # 3 C S c s4 EOT DC4 $ 4 D T d t5 ENQ NAK % 5 E U e u6 ACK SYN & 6 F V f v7 BEL ETB ' 7 G W g w8 BS CAN ( 8 H X h x9 HT EM ) 9 I Y i yA LF SUB * : J Z j zB VT ESC + ; K [ k {C FF FS , < L \ l |D CR GS - = M ] m }E SO RS . > N ^ n ~
0 1 2 3 4 5 6 7
Paris-Web 2008 I18n du Web 7
ISO Latin 1 (ISO 8859-1)0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL DLE SP 0 @ P ` p NBSP ° À Ð à ð1 SOH DC1 ! 1 A Q a q ¡ ± Á Ñ á ñ2 STX DC2 " 2 B R b r ¢ ² Â Ò â ò3 ETX DC3 # 3 C S c s £ ³ Ã Ó ã ó4 EOT DC4 $ 4 D T d t ¤ ´ Ä Ô ä ô5 ENQ NAK % 5 E U e u ¥ µ Å Õ å õ6 ACK SYN & 6 F V f v ¦ ¶ Æ Ö æ ö7 BEL ETB ' 7 G W g w § · Ç × ç ÷8 BS CAN ( 8 H X h x ¨ ¸ È Ø è ø9 HT EM ) 9 I Y i y © ¹ É Ù é ùA LF SUB * : J Z j z ª º Ê Ú ê úB VT ESC + ; K [ k { « » Ë Û ë ûC FF FS , < L \ l | ¬ ¼ Ì Ü ì üD CR GS - = M ] m } SHY ½ Í Ý í ýE SO RS . > N ^ n ~ ® ¾ Î Þ î þ
0 1 2 3 4 5 6 7 8 9 A B C D E F
C1
Paris-Web 2008 I18n du Web 8
•ÿ•F
•þ•E
•ý•D
•ü•C
•û•B
•ú•A
•ù•9
•ø•8
•÷•7
•ö•6
•õ•5
•ô•4
•ó•3
•ò•2
•ñ•1
•ð•0
•F•E•D•C•B•A•9•8•7•6•5•4•3•2•1•0
•ÿ•F
•þ•E
•ý•D
•ü•C
•û•B
•ú•A
•ù•9
•ø•8
•÷•7
•ö•6
•õ•5
•ô•4
•ó•3
•ò•2
•ñ•1
•ð•0
•F•E•D•C•B•A•9•8•7•6•5•4•3•2•1•0
•ÿ•F
•þ•E
•ý•D
•ü•C
•û•B
•ú•A
•ù•9
•ø•8
•÷•7
•ö•6
•õ•5
•ô•4
•ó•3
•ò•2
•ñ•1
•ð•0
•F•E•D•C•B•A•9•8•7•6•5•4•3•2•1•0
•ÿ•F
•þ•E
•ý•D
•ü•C
•û•B
•ú•A
•ù•9
•ø•8
•÷•7
•ö•6
•õ•5
•ô•4
•ó•3
•ò•2
•ñ•1
•ð•0
•F•E•D•C•B•A•9•8•7•6•5•4•3•2•1•0
Unicode
•ÿ•F
•þ•E
•ý•D
•ü•C
•û•B
•ú•A
•ù•9
•ø•8
•÷•7
•ö•6
•õ•5
•ô•4
•ó•3
•ò•2
•ñ•1
•ð•0
•F•E•D•C•B•A•9•8•7•6•5•4•3•2•1•00 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL DLE SP 0 @ P ` p C1(default:
ISO 6429) 89
° À Ð à ð1 SOH DC1 ! 1 A Q a q ¡ ± Á Ñ á ñ2 STX DC2 " 2 B R b r ¢ ² Â Ò â ò3 ETX DC3 # 3 C S c s £ ³ Ã Ó ã ó4 EOT DC4 $ 4 D T d t ¤ ´ Ä Ô ä ô5 ENQ NAK % 5 E U e u ¥ µ Å Õ å õ6 ACK SYN & 6 F V f v ¦ ¶ Æ Ö æ ö7 BEL ETB ' 7 G W g w § · Ç × ç ÷8 BS CAN ( 8 H X h x ¨ ¸ È Ø è ø9 HT EM ) 9 I Y i y © ¹ É Ù é ùA LF SUB * : J Z j z ª º Ê Ú ê úB VT ESC + ; K [ k { « » Ë Û ë ûC FF FS , < L \ l | ¬ ¼ Ì Ü ì üD CR GS - = M ] m } ½ Í Ý í ýE SO RS . > N ^ n ~ ® ¾ Î Þ î þ
0 1 2 3 4 5 6 7 A B C D E F
Paris-Web 2008 I18n du Web 9
Codages d'Unicode
• Il existe trois codages standardisés d'Unicode– codage = manière de stocker/transmettre les n° de caractères
• UTF-8– Très populaire avec HTML et protocoles Internet car ASCII préservé– Marche avec logiciels avec peu de changements
• UTF-16– Compromis entre accès efficace et place réduite– Java, ICU, Windows (NT 3.1 en 1992!), etc.
• UTF-32– Le plus simple, mais le plus vorace– Utilisé quand espace pas un problème
Paris-Web 2008 I18n du Web 10
ISO/CEI 10646 et Unicode
• Même répertoire : – même caractères– mêmes noms– mêmes numéros– mêmes codages– Résultat d’une fusion des deux normes légèrement différentes à
l’origine
• Unicode est un consortium industriel• ISO et CEI des organismes internationaux (les membres
sont des pays)
Noms français officielsdans la 10646 !
Paris-Web 2008 I18n du Web 11
Un bon livre
Paris-Web 2008 I18n du Web 12
Et ça marche, Unicode ?
• Oui, mais…• Unicode ne garantit pas
– qu'il y a des polices pour mes caractères– qu'il y a un clavier pour ma langue– que les algorithmes sensibles à la langue (coupure de ligne,
correcteur, etc.) sont adaptés
• Si déjà fait ailleurs, Unicode favorise la réutilisation• Beaucoup de ces services sont traditionnellement fournis
par la plate-forme (système d'exploitation)• Parfois, Unicode complique aussi un peu les choses
Paris-Web 2008 I18n du Web 13
HTTP
• HTTP internationalisé depuis milieu des 1990– Octets arbitraires permis dès le début
• Contrairement au courriel (ASCII)• Utile pour images ...
– En-têtes à la MIME (Content-Type avec paramètre charset)– Accept-Language
• Un de quatre Accept-*• Le plus utile• Fonctionnel mais sous-utilisé
Paris-Web 2008 I18n du Web 14
HTML
• HTML internationalisé depuis 1997– RFC 2070, repris par HTML 4 au W3C– Modèle de référence, pivot Unicode (é → é toujours)– Mécanismes d'identification de codage, attributs LANG, DIR– Éléments <SPAN>, <BDO>– Point noir : soumission de formulaire
• Intersection avec URL
Paris-Web 2008 I18n du Web 15
CSS
• CSS bien internationalisé depuis CSS2 (1998)– Modèle de référence Unicode (\00E9 → é)– @charset pour identifier codage– Guillemets, listes numérotées, text-transform, etc.– Sélecteurs de langue– WebFonts– La théorie et la pratique diffèrent beaucoup– CSS 2.1 une reculade
Paris-Web 2008 I18n du Web 16
XML, XSL
• XML internationalisé dès le premier jour– Modèle de référence Unicode– Détection de codage– Attribut xml:lang
• XSL-FO (2001) reprend CSS, améliore i18n– Directions d'écriture multiples (lr-tb, tb-rl, etc.)– before/after, start/end au lieu de top/bottom, left/right– Césure sensible à la langue
Mais est-ce bien le web ?
Paris-Web 2008 I18n du Web 17
Javascript
• Mi-figue, mi-raisin– Basé sur Unicode (depuis 1999)– Pas de mécanisme de gestion de ressources
• Souvent versions linguistiques distinctes du code– Philosophie est de se fier à la plateforme (navigateur et S/E)
• Pas de formatage de nombres et dates internationalisé– L'évolution de librairies Javascript ± standardisées peut aider
Paris-Web 2008 I18n du Web 18
Langues sur le webChinoisJaponaisAllemandEspagnolFrançaisRusseCoréenPortugaisChinois (T)ItalienPolonaisTchèqueNéerlandaisTurcAutres
Autres
Anglais ≈ 40 %
Paris-Web 2008 I18n du Web 19
Écritures sur le web
Paris-Web 2008 I18n du Web 20
Écritures sur le web : autres
Paris-Web 2008 I18n du Web 21
Unicode sur le web
Source : Mark Davis, Googlehttp://www.macchiato.com/slides/unicode_at_google.ppt
Paris-Web 2008 I18n du Web 22
URL
• Internationalisation bien plus tardive– RFC 3987 (2005)– Définit les Internationalized Resource Identifiers (IRI)
• Syntaxe identique aux URI, sauf que la classe des caractères non-réservés est étendue à presque tout Unicode
• Opérations (par ex. résolution d'IRI relatifs) identiques– Définit une transformation IRI → URI pour compatibilité arrière
• Exprimer l'IRI en Unicode UTF-8 NFC• Remplacer les octets non-ASCII par %HH• Exprimer chaque octet par caractère ASCII correspondant
– http://www.example.org/Dürst– http://www.example.org/D%C3%BCrst
Paris-Web 2008 I18n du Web 23
Noms de domaine
• Avant : sous-ensemble d'ASCII, 37 caractères : a-z, 0-9, -– Normalisation : repli de casse (A→a)
• IDNA (Internationalized Domain Names in Applications), RFC 3490, 2003– Sous-ensemble d'Unicode 3.2– Normalisation plus complexe, filtrage (Nameprep)– Surcodage ASCII (Punycode)– Serveur DNS inchangés, tout se passe dans les applications
Paris-Web 2008 I18n du Web 24
Exemple IDN
Conversion à Unicode(si nécessaire)
Normalisation
Surcodage ASCII
xn--wgv71a119e.jp
DNS
216.21.239.197
Paris-Web 2008 I18n du Web 25
Nameprep
• RFC 3491, un profil de Stringprep (RFC 3454)• Normalisation et filtrage
– Certains caractères remplacés par d'autres• Repli de casse et quelques autres cas
– Certains caractères enlevés• Par ex. SÉLECTEUR DE VARIANTE, ESPACE SANS CHASSE
– Normalisation Unicode NFKC• K : fi → f + i, カ→カ , ⅓→1+ / + 3, etc.• C : e + ACCENT AIGU → é
– Caractères interdits• Espaces, commandes, privés, déconseillés, etc.• Erreur si présents
Paris-Web 2008 I18n du Web 26
Hameçonnage
• Attaque par homographiewww.pаypal.com
– Existait déjà (I ≈ l ≈ 1)– Fortement aggravé par Unicode– Solutions :
• Interdiction de plusieurs écritures dans même étiquette (mais exceptions)• Politiques d'enregistrement (registres)• Conception de polices écran (I ≈ l ≈ 1)• Prudence dans les navigateurs
– Exemple : Firefox» IDN affiché si domaine a une bonne politique» Sinon, affiche punycode
LETTRE MINUSCULECYRILLIQUE A
Paris-Web 2008 I18n du Web 27
Politique de registre
• Exemple : registre du .CH
• françois.ch fonctionne, mais pas avec a cyrillique
à á â ã ä å æ çè é ê ë ì í î ïð ñ ò ó ô õ ö øù ú û ü ý þ ÿ œ
Paris-Web 2008 I18n du Web 28
Autres problèmes avec les IDN
• Unicode 3.2 → 5.1– Autres versions à venir
• Certains problèmes avec Bidi– Déjà quelques règles dans IDNA2003– Accent final interdit, pas acceptable
• IDNAbis en cours de normalisation– Cf. http://stupid.domain.name/idnabis/
Paris-Web 2008 I18n du Web 29
IDN en pratique
• Plus de 40 domaines acceptent d'enregistrer des IDN• Adoption particulièrement forte en Asie
– En Chine, plus de 90 % des sites gouvernementaux ont des IDN
• Infrastructure pas complètement mise à niveau– Navigateurs modernes ont IDN, mais pas IE6 (moderne ?)– Google AdWords n'accepte pas de pointer vers un IDN–
Paris-Web 2008 I18n du Web 30
IDN de premier niveau (iTLD)
• Les Japonais préfèrerait . 日本 à .jp• Encore ici, forte inertie, le DNS est crucial• L'ICANN a fait faire des essais avec 11 IDN dans les
serveurs racines– Aucun problème,
cf. http://www.icann.org/en/topics/idn/idn-report-07jan08.pdf • L'ICANN met en place un processus rapide pour définir des équivalents
IDN pour les ccTLD qui le désire• Parallèlement, appel à nouveaux domaines de premier niveau lancé,
incluant IDN
Paris-Web 2008 I18n du Web 31
I18n du courriel
• Courriel ⊂ Web ?– Pas stricto sensu, bien sûr– URL mailto:– Hotmal, Yahoo Mail, Gmail et al.– Identifiants de compte, confirmation d'abonnement, etc.
• Le courriel fait partie de l'infrastructure du web
• Courriel i18n depuis MIME (RFC 1341, 1992)• Grosse lacune : adresses de courriel
Paris-Web 2008 I18n du Web 32
EAI
• EAI = Email Address Internationalization
Jean.Dupont @ exemple.org
Partie locale Nom de domaine
Jusqu'à cette année, ASCII-only
Depuis 2003, IDNA•mais courriel demande ASCII (punycode)•pas vraiment i18n
Paris-Web 2008 I18n du Web 33
Cadre EAI
• RFC 4952 (2007, Informationnel) décrit le cadre :– Nouveau format d'en-têtes de courriel (From:, To: etc.) avec adresses
en UTF-8• RFC 5335 (Septembre 2008, Expérimental)
– Nouvelle extension ESMTP permettant d'utiliser ce format• RFC 5336 (Septembre 2008, Expérimental)
– Internationalisation des messages de notification de livraison• RFC 5337 (Septembre 2008, Expérimental)
– Extensions à POP et IMAP (livraison finale des messages)• RFC à paraître
– Mécanisme de repli vers format ASCII• RFC à paraître
Paris-Web 2008 I18n du Web 34
Une session SMTPS: 220 mail.example.org ESMTPC: EHLO mail.example.comS: 250-mail.example.org 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-UTF8SMTP 250 DSNC: MAIL FROM:<franç[email protected]> [email protected]: 250 2.1.0 OkC: RCPT TO: <Cézanne@musée.example.org>S: 250 2.1.5 Ok
Préalable à UTF8SMTP
Paris-Web 2008 I18n du Web 35
Conséquences d'EAI
• Ça va marcher ?↓ C'est expérimental↓ Il faut tout changer, clients et serveurs↑ L'Asie pousse très fort→ Ça va être long
• Et si ça marche ?– Mise à niveau des sites utilisant adresses comme identifiant– Mise à niveau des sites utilisant des validateurs d'adresses
• Beaucoup sont déjà mauvais, belle occasion de corriger– Peut être fait tout de suite sans rien casser
Paris-Web 2008 I18n du Web 36
Sélection de langue
• Soit la page d'accueil d'un site multilingue :
Allons voir en Chine...
Paris-Web 2008 I18n du Web 37
• Le sélecteur de langue (pays en fait) est bien en évidence, mais incompréhensible
Paris-Web 2008 I18n du Web 38
Page de sélection
• Bitte? Sprechen Sie Deutsch?
Paris-Web 2008 I18n du Web 39
Sélecteurs de langue
Drapeaux(sites distribués)
Liste(Unicode) Boutons-images
• Il manque une icône « sélecteur de langue » universelle– Reconnaissable par tous– La terre : trop vague ?– Établir une convention
(ou encore carte)
☢☮☠
Paris-Web 2008 I18n du Web 40
Avenir
• Mise en page japonaise (CSS, XSL)• Retour sur les pertes de CSS 2.1• WebFonts, le retour• Librairies Javascript
– Plus généralement : maturité des plate-formes de développement
Paris-Web 2008 I18n du Web 41
Traduction automatique
• La langue est la dernière frontière• Solution technique : traduction automatique
– Aujourd'hui répandue– Gratuite– Lecture seulement, pas de rédaction– Qualité pitoyable, pas d'espoir à court/moyen terme
• Pas d'effet social notable (pas une solution à la tour de Babel)
• Quand même bien utile quand on est coincé
Paris-Web 2008 I18n du Web 42
Dank u
Grazie Danke
Gracias
Merci
спасибо Ευχαριστώ
θæŋk ju:
ⵜⴰⵏⵎⵉⵔⵜ
شـكـرا�
Top Related