langue + valeur de région de l'attribut HTML5 lang


11

Je travaille sur un site Web qui offrira un contenu localisé suivant l' language+regionapproche décrite sur cette page W3.org (par exemple fr-CApour le contenu canadien français et fr-FRpour le contenu "français français"). Comme nous considérons le contenu de chacun language+regioncomme unique, il est crucial pour nous que les moteurs de recherche identifient et diffusent correctement le contenu en conséquence.

En recherchant sur Internet (par exemple cette question ), il semble que la plupart des gens recommandent l'utilisation d'un code de langue ISO639 dans l' langattribut HTML pour décrire la langue du contenu. Suite à cette recommandation, nous utiliserions <html lang="fr">ce qui ne permettrait pas la différenciation entre les language+regioncombinaisons susmentionnées .

Lors de l'examen de la spécification HTML4 , il semble que l'utilisation language+regioncomme code de langue serait parfaitement OK, car l' en-USexemple est donné comme une valeur possible. Cependant, je n'ai trouvé aucune confirmation de cela dans la spécification HTML5 qui ne semble pas fournir d'exemple quant aux valeurs autorisées possibles.

De là, j'ai essayé d'obtenir une réponse de facto en regardant ce que faisaient les géants du Web. J'ai regardé ce que Facebook fait: ils proposent des versions Candian français et français français de leurs sites Web avec un contenu (légèrement) différent, tandis que la langvaleur HTML reste la même:

fr-CA
URL: http://fr-ca.facebook.com
Attribut HTML lang: <html lang="fr">
traduction du mot 'email':courriel

fr-FR
URL: http://fr-fr.facebook.com/
Attribut HTML lang: <html lang="fr">
traduction du mot 'email':Adresse électronique

Quelle est la manière recommandée / standard de décrire le contenu localisé en utilisant l' language+regionapproche en HTML5?

Réponses:


5

Le W3C fournit ce très long guide sur le choix des étiquettes / sous-étiquettes de langue.

Les bits importants:

La syntaxe des balises de langue est définie par le BCP 47 de l'IETF . Dans le passé, il était nécessaire de consulter des listes de codes dans diverses normes ISO pour trouver les bonnes sous-étiquettes, mais maintenant il vous suffit de regarder dans le registre des sous-étiquettes de langue IANA . Nous décrirons le nouveau registre ci-dessous.

Cet article fournit des conseils sur la façon de choisir les composants d'une balise de langue. Pour une vue d'ensemble des concepts définis dans BCP 47, voir Balises de langue en HTML et XML .

...

Il existe des outils disponibles qui fournissent une aide supplémentaire lors de la recherche dans le registre, tels que l'outil de recherche de sous-étiquette de langue de Richard Ishida .

...

Assurez-vous d'avoir la bonne langue. Parfois, il vaut la peine de vérifier quelques alternatives. Mark Davis, co-auteur de BCP47, écrit «Souvent, on ne sait pas quel identifiant de langue utiliser. Par exemple, ce que la plupart des gens appellent le pendjabi au Pakistan a en fait le code« lah »et le nom officiel« Lahnda ». d'autres cas où le même nom est utilisé pour différentes langues ou lorsque le nom recherché par les personnes n'est pas répertorié dans le registre IANA. "

Vous pouvez rechercher des informations sur la langue dans l' ethnologue SIL et les renvoyer à Wikipedia . L'Ethnologue utilise les mêmes codes à trois lettres que BCP47, mais vous devrez convertir les codes à 2 lettres BCP47 en leur équivalent ISO 639-3 pour rechercher une langue par code. ( L'outil de Richard Ishida fait cela pour vous.)

Il existe un petit nombre de cas où différents codes de langue sont disponibles pour ce que beaucoup de gens considéreraient comme la même langue, par exemple. Filipino et Tagalog, ou Twi et Akan. Il n'y a aucune indication dans le registre que vous devez utiliser, mais vous devez vous assurer que dans une seule application ou un seul contexte, vous êtes cohérent.

(Je souligne.)

Il convient de noter que le registre des sous-étiquettes de langue IANA est un peu difficile à utiliser. À l'exception des balises avec droits acquis (comme en-GB-oed), vous devez rechercher la balise de la famille de langues et les sous-balises de région / variante séparément. Et les balises / sous-balises sont organisées par type plutôt que par hiérarchie. Alors, économisez du temps et des ennuis et utilisez l'outil de recherche génial de Richard Ishida .


2

Utilisation <html lang="fr-FR">et <html lang="fr-CA">est très bien, si elles correspondent au contenu réel. Mais ils sont ignorés par les moteurs de recherche, tout comme cela <html lang="fr">.

HTML5 ne signifie pas changer l'utilisation des codes de langue. Le système des codes tel que défini dans le BCP 47 et ses extensions est très élaboré et vous permet de spécifier une variante de langue avec une précision douloureuse. L'état de l'art est à des niveaux beaucoup, beaucoup plus simples, et fr-FR et fr-CA représentent la meilleure granularité que vous pouvez atteindre de nos jours dans le logiciel; assez souvent, seul le code principal (ici, en) est important.

Il n'y a aucune preuve que les moteurs de recherche prêtent réellement attention aux déclarations de code de langue, telles que les langattributs. D'autres logiciels, tels que les traits d'union, les vérificateurs d'orthographe, les synthétiseurs vocaux et les algorithmes de sélection de police par défaut peuvent prendre langen compte les attributs. Mais les moteurs de recherche effectuent leurs analyses heuristiques sur la base du contenu réel.

Il est difficile de leur en vouloir, car cela donne de meilleurs résultats que de faire confiance aux langattributs. Par exemple, de nombreux outils de création génèrent automatiquement lang="en"quel que soit le contenu réel, sans en informer l'auteur.


2

[Ce n'est pas mon domaine le plus fort, donc je ne fais que citer de la documentation ici, mais il semble que vous ayez oublié quelque chose.]

La spécification HTML5 requiert que la langvaleur soit une balise BCP 47 valide . Dans ce document, le bit pertinent semble être dans la section 3.4:

Par exemple, une implémentation peut mapper les plages de langues étendues aux plages de base. Une autre possibilité serait qu'une implémentation renvoie la balise correspondante qui est la première dans l'ordre ASCII. Si la plage de langues était "* -CH" ("CH" représente la Suisse) et le jeu de balises comprenait "de-CH" (l'allemand utilisé en Suisse), "fr-CH" (français, Suisse) et "it -CH "(italien, Suisse), puis la balise" de-CH "serait retournée.

... ce qui est fondamentalement ce que vous avez obtenu de la spécification HTML 4 citant RFC1766, juste plus en détail.


J'ai des difficultés à localiser le paragraphe que vous avez cité (j'ai recherché certains de ses mots clés dans le lien que j'ai fourni et dans la section 3.4 et je n'ai rien trouvé). Pouvez-vous me fournir un lien, s'il vous plaît? (idéalement avec une balise de hachage si possible).
Max

La spécification HTML 5 fait simplement référence au format requis. Le bit cité provient du lien BCP 47, dans lequel il a réellement défini ce format.
Di
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.