Internationalisation


    François Yergeau
Plan

•   Internationalisation et Unicode
•   Les ancêtres (HTTP, HTML,...)
•   Quelques camemberts
•   URL et noms de dom...
Internationalisation (i18n)
Processus consistant à :
• Préparer un système pour de multiples localisations
    – Internati...
Mojibake




Paris-Web 2008    I18n du Web   4
C'est quoi Unicode ?

           Unicode est un standard qui définit un
           numéro unique pour chaque caractère,
  ...
ASCII
          0   1     2   3   4   5   6   7

     0   NUL DLE SP     0   @ P     `   p
     1   SOH DC1    !   1   A Q...
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 ...
Unicode
                00• 11• 22• 33• 44• 55• 66• 77• 88• 99• AA• BB• CC• DD• EE• F• •
                  •    •  •  •   ...
Codages d'Unicode
• Il existe trois codages standardisés d'Unicode
    – codage = manière de stocker/transmettre les n° de...
ISO/CEI 10646 et Unicode
• Même répertoire :
    –   même caractères
                                     Noms français of...
Un bon livre




Paris-Web 2008      I18n du Web   11
Et ça marche, Unicode ?
• Oui, mais…
• Unicode ne garantit pas
    – qu'il y a des polices pour mes caractères
    – qu'il...
HTTP
• HTTP internationalisé depuis milieu des 1990
    – Octets arbitraires permis dès le début
         • Contrairement ...
HTML
• HTML internationalisé depuis 1997
    –   RFC 2070, repris par HTML 4 au W3C
    –   Modèle de référence, pivot Uni...
CSS
• CSS bien internationalisé depuis CSS2 (1998)
    –   Modèle de référence Unicode (00E9 → é)
    –   @charset pour id...
XML, XSL
• XML internationalisé dès le premier jour
    – Modèle de référence Unicode
    – Détection de codage
    – Attr...
Javascript
• Mi-figue, mi-raisin
    – Basé sur Unicode (depuis 1999)
    – Pas de mécanisme de gestion de ressources
    ...
Langues sur le web
                                               Chinois
                                               J...
Écritures sur le web




Paris-Web 2008          I18n du Web     19
Écritures sur le web : autres




Paris-Web 2008       I18n du Web         20
Unicode sur le web




                          Source : Mark Davis, Google
                          http://www.macchiat...
URL
• Internationalisation bien plus tardive
    – RFC 3987 (2005)
    – Définit les Internationalized Resource Identifier...
Noms de domaine
• Avant : sous-ensemble d'ASCII, 37 caractères : a-z, 0-9, -
    – Normalisation : repli de casse (A→a)


...
Exemple IDN

                                                 DNS


     Conversion à Unicode
        (si nécessaire)

   ...
Nameprep
• RFC 3491, un profil de Stringprep (RFC 3454)
• Normalisation et filtrage
    – Certains caractères remplacés pa...
Hameçonnage
• Attaque par homographie
                    www.pаypal.com
    – Existait déjà (I ≈ l ≈ 1)
    – Fortement a...
Politique de registre
• Exemple : registre du .CH


                 à   á   â    ã      ä     å   æ   ç
                 ...
Autres problèmes avec les IDN
• Unicode 3.2     →   5.1
    – Autres versions à venir
• Certains problèmes avec Bidi
    –...
IDN en pratique
• Plus de 40 domaines acceptent d'enregistrer des IDN
• Adoption particulièrement forte en Asie
    – En C...
IDN de premier niveau (iTLD)
• Les Japonais préfèrerait . 日本 à .jp
• Encore ici, forte inertie, le DNS est crucial
• L'ICA...
I18n du courriel
• Courriel ⊂ Web ?
    –   Pas stricto sensu, bien sûr
    –   URL mailto:
    –   Hotmal, Yahoo Mail, Gm...
EAI
• EAI = Email Address Internationalization

                 Jean.Dupont @ exemple.org

                 Partie locale...
Cadre EAI
• RFC 4952 (2007, Informationnel) décrit le cadre :
    – Nouveau format d'en-têtes de courriel (From:, To: etc....
Une session SMTP
S: 220 mail.example.org ESMTP
C: EHLO mail.example.com
S: 250-mail.example.org
 250-ENHANCEDSTATUSCODES
 ...
Conséquences d'EAI
• Ça va marcher ?
    ↓ C'est expérimental
    ↓ Il faut tout changer, clients et serveurs
    ↑ L'Asie...
Sélection de langue
• Soit la page d'accueil d'un site multilingue :




                 Allons voir en Chine...
Paris-We...
• Le sélecteur de langue (pays en fait) est bien en
  évidence, mais incompréhensible


Paris-Web 2008            I18n du ...
Page de sélection




• Bitte? Sprechen Sie Deutsch?


Paris-Web 2008          I18n du Web   38
Sélecteurs de langue
                                   Liste
      Drapeaux                   (Unicode)    Boutons-images...
Avenir
•   Mise en page japonaise (CSS, XSL)
•   Retour sur les pertes de CSS 2.1
•   WebFonts, le retour
•   Librairies J...
Traduction automatique
• La langue est la dernière frontière
• Solution technique : traduction automatique
    –   Aujourd...
ⵜⴰⵏⵎⵉⵔⵜ
спасибо                           Ευχαριστώ

Grazie                              Danke
                   Merci
Gr...
Prochain SlideShare
Chargement dans…5
×

Internationalisation - Francois Yergeau - Paris Web 2008

2 314 vues

Publié le

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.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 314
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
21
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Internationalisation - Francois Yergeau - Paris Web 2008

  1. 1. Internationalisation François Yergeau
  2. 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 2
  3. 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 3
  4. 4. Mojibake Paris-Web 2008 I18n du Web 4
  5. 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 5
  6. 6. ASCII 0 1 2 3 4 5 6 7 0 NUL DLE SP 0 @ P ` p 1 SOH DC1 ! 1 A Q a q 2 STX DC2 quot; 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 Paris-Web 2008 I18n du Web 6
  7. 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 quot; 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 C1 ¦ ¶ Æ Ö æ ö 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 { « » Ë Û ë û 2008 FS Paris-Web FF , < L I18n du Web l | 7 C ¬ ¼ Ì Ü ì ü
  8. 8. Unicode 00• 11• 22• 33• 44• 55• 66• 77• 88• 99• AA• BB• CC• DD• EE• F• • • • • • • • • • • • • • • • • F 0• 1• 2• 3• 4• 5• 6• 7• 8• 9• A• B• C• D• E• F• 00• 1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 • A • B • C • D • E • F • ðð• 00• 11• 22• 33• 44• 55• 66• 77• 88• 99• AA• BB• CC• DD• EE• F F• •• 0• 0 ð• • 0• 1• 0• 1• ðð• ññ• • • 1• ñ• SP 0 @ P ` p   ° À Ð à ð ñ• òò• C1 0 1•NUL DLE 1• 2• 2• ñ• • 2• ò• 1 2• 3• DC1 ! 2• SOH3• 1 A Q a q ¡ ± Á Ñ á ñ ò• óó• ò• • óó• ô• 3• (default: 2 3•STX DC2 quot; 3• 4• 4• 2 B R b r ¢ ² Â Ò â ò • • ô• ó 4• ô• 4• 4 55• 3 • ETX DC3 # • 3 C S c s ISO 6429) £ ³ Ã Ó ã ó ô• õõ• ô• • õõ• ö• 5• 4 5• 6• 5• EOT DC4 $ 6• 4 D T d t 8 ¤ ´ Ä Ô ä ô • öö• õ • 6• • 6• 7• 6• ENQ NAK % 5 5 77• E U e u 9 ¥ µ Å Õ å õ ÷• öö• ÷÷• • • • 7• 8• ÷÷•øø• • ¦ ¶ Æ Ö æ ö øø• • 7• 8• 6 8• ACK SYN & 6 F V f v 8• 8• 99• • ø• •ùù• • 7 9• BEL ETB ' 7 G W g w § · Ç × ç ÷ ùù• 9• 9• AA• • ù• • úú•• 8 AABS CAN ( • • B• 8 H X h x ¨ ¸ È Ø è ø úú• û• • A• B• ú• û• BHT EM • 9 B• C• B• C• ) 9 I Y i y © ¹ É Ù é ù ûû• ü• û• • ü• C• ü• A C• LF • SUB * C• DD • : J Z j z ª º Ê Ú ê ú ü• ýý•ü• • D• ý• D• VT • ESC + B• E D E• ; K [ k { « » Ë Û ë û ý• þþ• ý• • þþ• ÿ• E• C • • F• • FS E E FF F , < L l | ¬ ¼ Ì Ü ì ü • • ÿ• þ ÿÿ• F• F• D • CR GS F - = M ] m } ­ ½ Í Ý í ÿ • ý• 2008 Paris-Web SO RS . > N ^ I18n du Web n ~ E ® ¾ Î Þ î þ 8
  9. 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 9
  10. 10. ISO/CEI 10646 et Unicode • Même répertoire : – même caractères Noms français officiels – mêmes noms dans la 10646 ! – 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) Paris-Web 2008 I18n du Web 10
  11. 11. Un bon livre Paris-Web 2008 I18n du Web 11
  12. 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 12
  13. 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 13
  14. 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 14
  15. 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 15
  16. 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 16
  17. 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 17
  18. 18. Langues sur le web Chinois Japonais Allemand Espagnol Français Autres Russe Coréen Portugais Chinois (T) Italien Polonais Tchèque Néerlandais Turc Anglais ≈ 40 % Autres Paris-Web 2008 I18n du Web 18
  19. 19. Écritures sur le web Paris-Web 2008 I18n du Web 19
  20. 20. Écritures sur le web : autres Paris-Web 2008 I18n du Web 20
  21. 21. Unicode sur le web Source : Mark Davis, Google http://www.macchiato.com/slides/unicode_at_google.ppt Paris-Web 2008 I18n du Web 21
  22. 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 22
  23. 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 23
  24. 24. Exemple IDN DNS Conversion à Unicode (si nécessaire) 216.21.239.197 Normalisation Surcodage ASCII xn--wgv71a119e.jp Paris-Web 2008 I18n du Web 24
  25. 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 25
  26. 26. Hameçonnage • Attaque par homographie www.pаypal.com – Existait déjà (I ≈ l ≈ 1) – Fortement aggravé par Unicode LETTRE MINUSCULE CYRILLIQUE A – 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 Paris-Web 2008 I18n du Web 26
  27. 27. Politique de registre • Exemple : registre du .CH à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ œ • françois.ch fonctionne, mais pas avec a cyrillique Paris-Web 2008 I18n du Web 27
  28. 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 28
  29. 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 29
  30. 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 30
  31. 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 31
  32. 32. EAI • EAI = Email Address Internationalization Jean.Dupont @ exemple.org Partie locale Nom de domaine Jusqu'à cette année, Depuis 2003, IDNA ASCII-only •mais courriel demande ASCII (punycode) •pas vraiment i18n Paris-Web 2008 I18n du Web 32
  33. 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 33
  34. 34. Une session SMTP S: 220 mail.example.org ESMTP C: EHLO mail.example.com S: 250-mail.example.org 250-ENHANCEDSTATUSCODES 250-8BITMIME Préalable à UTF8SMTP 250-UTF8SMTP 250 DSN C: MAIL FROM:<françois@example.com> ALT-ADDRESS=francois@example.com S: 250 2.1.0 Ok C: RCPT TO: <Cézanne@musée.example.org> S: 250 2.1.5 Ok Paris-Web 2008 I18n du Web 34
  35. 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 35
  36. 36. Sélection de langue • Soit la page d'accueil d'un site multilingue : Allons voir en Chine... Paris-Web 2008 I18n du Web 36
  37. 37. • Le sélecteur de langue (pays en fait) est bien en évidence, mais incompréhensible Paris-Web 2008 I18n du Web 37
  38. 38. Page de sélection • Bitte? Sprechen Sie Deutsch? Paris-Web 2008 I18n du Web 38
  39. 39. Sélecteurs de langue Liste Drapeaux (Unicode) Boutons-images (sites distribués) (ou encore carte) • Il manque une icône « sélecteur de langue » universelle – Reconnaissable par tous – La terre : trop vague ? – Établir une convention ☢☮☠ Paris-Web 2008 I18n du Web 39
  40. 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 40
  41. 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 41
  42. 42. ⵜⴰⵏⵎⵉⵔⵜ спасибо Ευχαριστώ Grazie Danke Merci Gracias ‫شـكـرا‬ Dank u θæŋk ju: Paris-Web 2008 I18n du Web 42

×