Quelle est la différence entre <html lang="en">
et <html lang="en-US">
? Quelles autres valeurs peuvent suivre le tiret?
Selon w3.org "Tout sous-code à deux lettres est considéré comme un code de pays [ISO3166]". cela signifie-t-il que toute valeur listée sous le code alpha-2 est une valeur acceptée?
<html lang="en">
<html lang="en-US">
La première balise lang
spécifie uniquement un code de langue. La seconde spécifie un code de langue, suivi d'un code de pays.
Quelles autres valeurs peuvent suivre le tiret? Selon w3.org "Un sous-code à deux lettres est un code de pays [ISO3166]." alors cela signifie-t-il que toute valeur listée sous le code alpha-2 est un accepté valeur?
Oui, mais la valeur peut avoir une signification réelle ou non.
<html lang="en-US">
signifie essentiellement "cette page est dans le style anglais des États-Unis". De la même manière, <html lang="en-GB">
signifierait "cette page est dans le style anglais du Royaume-Uni".
Si vous voulez vraiment spécifier une combinaison non valide, vous pouvez le faire. Cela ne voudrait pas dire grand chose, mais <html lang="en-ES">
est valide selon la spécification, telle que je la comprends. Cependant, cette combinaison langue/pays ne fera pas grand chose puisque l'anglais n'est pas couramment parlé en Espagne.
Je veux dire, cela aide-t-il davantage le navigateur à afficher la page?
Cela n'aide pas le navigateur à afficher la page, mais il est utile pour les moteurs de recherche, les lecteurs d'écran et autres éléments susceptibles de lire et d'essayer d'interpréter la page, en plus des êtres humains.
Oui, vous pouvez utiliser n'importe quel code de pays, mais cela ne signifie pas qu'un navigateur ou un autre logiciel le reconnaîtra ou agira autrement à cause de cela. Par exemple, un lecteur d'écran peut traiter "en-US" et "en-GB" de la même manière s'il ne prend en charge qu'un accent américain en anglais. Un autre logiciel comportant deux voix distinctes pourrait toutefois s’ajuster en fonction du code de pays.
La "meilleure pratique actuelle" de l'IETF pour les étiquettes de langue est définie dans BCP 47 (RFC 5646 et RFC 4647). Je suggère de donner à cela une lecture, car cela en explique beaucoup plus sur les sous-étiquettes de langage que vous ne le pensiez. :-)
Il fait référence aux registres IANA Language Subtag et Language Tag Extensions .
Cela devrait aider: http://www.w3.org/International/articles/language-tags/
La règle d'or lors de la création de balises de langue est de garder la balise aussi courte que possible. Évitez les régions, scripts ou autres sous-étiquettes sauf là où ils ajoutent des informations distinctives utiles. Par exemple, utilisez ja pour japonais et non ja-JP, sauf s'il existe une raison particulière pour laquelle vous devez dire qu'il s'agit du japonais tel qu'il est parlé au Japon plutôt qu'ailleurs.
La liste ci-dessous répertorie les différents types de sous-étiquettes disponibles. Nous allons travailler à travers ceux-ci et comment ils sont utilisés dans les sections qui suivent.
language-extlang-script-region-variant-extension-privateuse
RFC 3066 donne les détails des valeurs autorisées (accentuation et liens ajoutés):
Toutes les sous-étiquettes de 2 lettres sont interprétées comme étant les codes de pays ISO 3166 alpha-2 de [ISO 3166] , ou attribué ultérieurement par le service de maintenance ISO 3166 des organismes de normalisation ou des organismes de normalisation, en indiquant le domaine dans lequel cette variante de langue concerne.
J'interprète cela comme signifiant tout code valide à 2 lettres (selon ISO 3166) est valide en tant que sous-étiquette. La RFC poursuit:
Les étiquettes avec des secondes sous-étiquettes de 3 à 8 lettres peuvent être enregistrées avec IANA, conformément aux règles du chapitre 5 de ce document.
Soit dit en passant, cela ressemble à une faute de frappe, puisque le chapitre 3 semble se rapporter au processus d’enregistrement, pas au chapitre 5.
Une recherche rapide dans le registre IANA révèle une très longue liste , de toutes les sous-étiquettes de langue disponibles. Voici un exemple de la liste (qui serait utilisé comme en-scouse
):
Type: variante
Subtag: Scouse
Description: Scouse
Ajouté: 2006-09-18
Préfixe: en
Commentaires: dialecte anglais du Liverpudlian dit 'Scouse'
Il y a toutes sortes de sous-étiquettes disponibles; un rapide parchemin a déjà révélé fr-1694acad
(français du 17ème siècle).
L'utilité de certaines de ces balises (je dirais que la grande majorité d'entre elles), en ce qui concerne les documents conçus pour être affichées dans le navigateur, est limitée. La spécification d'internationalisation W3C indique simplement:
Les navigateurs et autres applications peuvent utiliser des informations sur la langue de contenu pour fournir aux utilisateurs les informations les plus appropriées, ou à présenter les informations aux utilisateurs de la manière la plus appropriée. Le plus le contenu est étiqueté et étiqueté correctement, le plus utile et le plus répandu ces applications deviendront.
J'ai du mal à trouver des informations détaillées sur le comportement des navigateurs lorsqu'ils rencontrent des balises de langue différentes, mais elles offriront probablement des avantages aux utilisateurs qui utilisent un lecteur d'écran, qui peuvent utiliser la balise pour déterminer la langue/le dialecte/l'accent dans lequel présenter le contenu.
Le schéma XML requiert que l'espace de noms XML soit déclaré et importé avant d'utiliser xml: lang (et d'autres valeurs d'espace de noms XML) RELAX NG prédéfinit l'espace de noms XML, comme dans XML, aucune déclaration supplémentaire n'est donc nécessaire.