internationalisation - francois yergeau - paris web 2008
DESCRIPTION
Comme son nom l'indique, le Web se veut mondial. Mais pour remplir cette promesse, l'internationalisation de toutes ses parties constituantes s'impose. Pas acquise au début, cette internationalisation s'est réalisée petit à petit et est encore en cours. Nous passerons en revue les progrès accomplis, les chantiers d'aujourd'hui et les perspectives d'avenir.TRANSCRIPT
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:
ⵜⴰⵏⵎⵉⵔⵜ
شـكـرا�