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.
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. 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
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. 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
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. 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
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. 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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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. 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. Politique de registre
• Exemple : registre du .CH
à á â ã ä å æ ç
è é ê ë ì í î ï
ð ñ ò ó ô õ ö ø
ù ú û ü ý þ ÿ œ
• françois.ch fonctionne, mais pas avec a cyrillique
Paris-Web 2008 I18n du Web 27
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. 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. 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. 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. 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. 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. 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. 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. 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. • Le sélecteur de langue (pays en fait) est bien en
évidence, mais incompréhensible
Paris-Web 2008 I18n du Web 37
38. Page de sélection
• Bitte? Sprechen Sie Deutsch?
Paris-Web 2008 I18n du Web 38
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. 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. 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. ⵜⴰⵏⵎⵉⵔⵜ
спасибо Ευχαριστώ
Grazie Danke
Merci
Gracias شـكـرا
Dank u θæŋk ju:
Paris-Web 2008 I18n du Web 42