La détection de la langue est généralement effectuée côté serveur en vérifiant l'en-tête HTTP Accept-Language
envoyé.
Les navigateurs disposent de moyens limités et non standardisés pour identifier la langue d'un utilisateur (à l'exception de IE fonctionnant sous Windows). Avec IE sur Windows, vous pouvez accéder à navigator.userLanguage
ou navigator.systemLanguage
, ce qui renverra le code langue-PAYS RFC#4646 du système d'exploitation. D'autres navigateurs (Opera, Safari, Chrome, Firefox) fournissent navigator.language
, qui est dans le même format à l'exception d'Opera qui ne renvoie que la langue. Dans de nombreux cas, cela peut être suffisant, mais il est recommandé d'utiliser une solution serveur.
J'ai accompli quelque chose comme ça il y a quelque temps en séparant les chaînes dans différents fichiers lang.js et j'ai ajouté le script au document en utilisant document.write()
. La fonction extrairait simplement la chaîne d'un tableau défini dans ce fichier lang.js. Un exemple de base pourrait être:
// Get the language-COUNTRY code, and strip it to the language part only
var lang = (navigator.language || navigator.userLanguage).substring(0,2);
var file = "lang/" + lang + ".js";
document.write('<script src="'+lang+'" type="text/javascript"><\/script>');
Cela garantirait que seules les chaînes de la langue nécessaire ont été chargés, bien que je ne l'ai pas inclus une méthode de repli ici, vous auriez besoin d'un pour défaut d'une langue lorsqu'un non pris en charge un a été détecté. Vous pouvez le faire en ayant une liste de langues prises en charge dans un tableau, vérifiez si lang
existe et si ce n'est pas le cas, écrivez un script par défaut src
à la place.
Pour ne pas ressembler à un enregistrement rayé, mais vous devriez probablement déterminer les langues et inclure les fichiers côté serveur, et non côté client.
Vous avez posé 568 questions, et vous avez seulement accepté des réponses sur ** 42% ** d'entre eux. Cela équivaut à beaucoup de temps que les gens ont passé à vous aider que vous n'avez pas pris la peine de reconnaître comme utile. – user113716