Assurez-vous que le fichier JavaScript est définissant explicitement une variable globale:
window['lang'] = {'edit': 'Edit'};
Assurez-vous que votre code de gestionnaire d'événements fait explicitement référence à la variable globale "lang":
<select onchange='alert(window.lang.edit)'>
Le 1er est probablement déjà OK, mais j'ajoute juste pour m'en assurer. La deuxième chose, eh bien, l'interprétation des valeurs d'attribut "onfoo" est subtile et étrange. S'il y a un attribut « lang » attribut de l'élément <select>
DOM ou une « lang » sur une étiquette <form>
entourant le <select>
, puis une référence à l'identifiant « lang » dans la valeur « onclick » va ramasser qui au lieu du "lang" global que vous définissez dans le fichier JavaScript. Votre valeur « onclick » est transformée en une fonction (pour que cela fonctionne comme un gestionnaire d'événements) par un processus qui ressemble plus ou moins comme ceci:
var handler = new Function("event", "with (this.form) { with (this) { alert(lang.edit); }}");
Il est bizarre, mais qui est en fait ce qui se passe avec ce genre de code de gestionnaire d'événements.
Il n'y a pas de JSON ici, juste un objet régulier (et la syntaxe ne serait pas encore JSON si vous la retiriez du JS, JSON utilise uniquement des guillemets doubles). Il n'y a aucune raison dans votre question de ne pas travailler, le problème est probablement ailleurs. – Quentin