Transcript
Page 1: Internationalisation - Francois Yergeau - Paris Web 2008

Internationalisation

François Yergeau

Page 2: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 3: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 4: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 4

Mojibake

Page 5: Internationalisation - Francois Yergeau - Paris Web 2008

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.

Page 6: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 7: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 8: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 9: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 10: Internationalisation - Francois Yergeau - Paris Web 2008

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 !

Page 11: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 11

Un bon livre

Page 12: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 13: Internationalisation - Francois Yergeau - Paris Web 2008

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é

Page 14: Internationalisation - Francois Yergeau - Paris Web 2008

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 (&#233; → é toujours)– Mécanismes d'identification de codage, attributs LANG, DIR– Éléments <SPAN>, <BDO>– Point noir : soumission de formulaire

• Intersection avec URL

Page 15: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 16: Internationalisation - Francois Yergeau - Paris Web 2008

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 ?

Page 17: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 18: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 18

Langues sur le webChinoisJaponaisAllemandEspagnolFrançaisRusseCoréenPortugaisChinois (T)ItalienPolonaisTchèqueNéerlandaisTurcAutres

Autres

Anglais ≈ 40 %

Page 19: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 19

Écritures sur le web

Page 20: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 20

Écritures sur le web : autres

Page 21: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 21

Unicode sur le web

Source : Mark Davis, Googlehttp://www.macchiato.com/slides/unicode_at_google.ppt

Page 22: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 23: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 24: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 25: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 26: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 27: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 27

Politique de registre

• Exemple : registre du .CH

• françois.ch fonctionne, mais pas avec a cyrillique

à á â ã ä å æ çè é ê ë ì í î ïð ñ ò ó ô õ ö øù ú û ü ý þ ÿ œ

Page 28: Internationalisation - Francois Yergeau - Paris Web 2008

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/

Page 29: Internationalisation - Francois Yergeau - Paris Web 2008

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–

Page 30: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 31: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 32: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 33: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 34: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 35: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 36: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 36

Sélection de langue

• Soit la page d'accueil d'un site multilingue :

Allons voir en Chine...

Page 37: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 37

• Le sélecteur de langue (pays en fait) est bien en évidence, mais incompréhensible

Page 38: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 38

Page de sélection

• Bitte? Sprechen Sie Deutsch?

Page 39: Internationalisation - Francois Yergeau - Paris Web 2008

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)

☢☮☠

Page 40: Internationalisation - Francois Yergeau - Paris Web 2008

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

Page 41: Internationalisation - Francois Yergeau - Paris Web 2008

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é

Page 42: Internationalisation - Francois Yergeau - Paris Web 2008

Paris-Web 2008 I18n du Web 42

Dank u

Grazie Danke

Gracias

Merci

спасибо Ευχαριστώ

θæŋk ju:

ⵜⴰⵏⵎⵉⵔⵜ

شـكـرا�


Top Related