2010-06-02 4 views
1

Je souhaite créer un fichier javascript pour une fonctionnalité multilingueVous voulez créer un objet javascript multilingue, comment gérer si beaucoup d'étiquettes?

, c'est-à-dire d'afficher le message d'erreur dans la langue correcte.

Si j'ai une liste d'étiquettes pour une page, des messages d'erreur, etc., quelle est la manière intelligente de faire ceci pour que la sortie réelle sur la page ne soit pas énorme?

Je suppose que le meilleur moyen est de sortir en quelque sorte les étiquettes dont j'ai besoin SEULEMENT?

lang.getkey('username'); 

affichera l'étiquette correcte, en fonction de la langue.

+2

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

Répondre

1

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.

+0

oui je suis en train de le déterminer côté serveur, c'est pourquoi j'allais initer l'objet lang via le code côté serveur qui renvoie les 'données'. – Blankman

Questions connexes