1178 sujets

Accessibilité du Web

Amis Kiwis, bonsoir.

En cours de codage sur un site multi-langue, voilà que j’aborde la partie de mon script qui se charge de paramétrer la langue à servir.
Dans un premier temps, vérif de cookie, choco-praline, tuti va bene.
Si il n'y a pas de cookie, on chatouille le paramètre http_accept_language pour écouter si il a un accent quand il gazouille.
Si il n'est pas d'humeur rigolarde, on fournit une langue par défaut.

Là où je coince, c'est dans le reconnaissance de l'accent.
Je m'explique : en ayant parcourue l'IANA et les RFC 2295 et 4646, je ne suis pas arriver à faire de conclusions ... concluantes. D'une part à cause de l’obsolescence de certains documents, et d'autre part à cause du grand âge d'autres.

Du coup, si quelqu'un pouvait éclairer ma lanterne quand à la norme employée pour le code langue dans un en-tête http, j'en serait grandement ravi.
Modifié par Hikingyo (09 Dec 2013 - 22:36)
Salut,

C'est la norme ISO 639 qu'il faut regarder pour le code langue (à deux ou trois lettres).

Enfin, ne pas oublier de renseigner l'attribut lang et/ou xml:lang au niveau de l'élément racine du document HTML.
Modérateur
La norme pour l'accept-language est défini dans la RFC 2616 (HTTP 1.1), plus précisément là:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4

La norme définie pour chaque language tag est définie par la RFC 5646 ( http://www.rfc-editor.org/rfc/rfc5646.txt ) et assez bien expliqué ici: http://www.w3.org/International/articles/language-tags/
et c'est effectivement un poil plus complexe…
Modifié par kustolovic (10 Dec 2013 - 23:49)
Donc si je comprends bien, la première partie du code répond à la norme iso 639, code alpha-1 et alpha-2, et pour les subtags c'est soit iso 639, soit la nomenclature IANA ?
Modérateur
heu non le premier est aussi un subtag, (fr-FR => tag, fr => subtag, FR => subtag),
et il faut se rappeler que le but est de ne plus aller farfouiller dans 6 normes différentes, mais utiliser le registre IANA qui fait ça très bien, et a pour but de mettre tout le monde d'accord. http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

La première partie du tag, le subtag de langue, peut prendre les valeurs suivantes:

- INEXISTANT, lorsque le tag est un ancien tag IANA commençant par i-, comme i-navajo, i-klingon, etc. Dans la liste IANA, il sont de Type: grandfathered, et ont un équivalent actualisé.
- INEXISTANT, lorsque le tag est une utilisation privée et non normée, il commencera alors par x-. On s'en fiche (sauf si justement on s'en sert, mais ça en général on le sait)
- code à 2 caractères définis dans le registre IANA et de Type: language (provient de ISO639-1)
- code à 3 caractères définis dans le registre IANA et de Type: language (provient de ISO639-2, ISO639-3, et ISO639-5, certains codes à 3 caractères ne sont pas reconnus)
- codes à 3 lettres allant de 'qaa' à 'qtz', pour un usage privé. (usage privé de ISO639-2)
Et bien merci pour ta réponse. J'en était arriver à cette conclusion mais je pensais m'être fourvoyé.
Du coup, la détection de langue reste relativement simple lorsqu'on sert les langue les plus courante, et devient un poil plus compliqué lorsqu'on on sert des idiomes.
Modérateur
C'est sûr que si ton site a deux versions, une française et une anglaise, tu auras juste 'fr' et 'en'. Et c'est assez simple à tester.

Après pour les choses plus velues, autant se faire aider, comme avec http_negotiate_language en php.

Et se rappeler qu'il faut considérer les erreurs comme possibles, et que l'utilisateur puisse toujours changer la langue, et que si il y a 2-3% d'erreurs ce n'est pas bien grave.