JSON / instance de classe et ajout de méthode [Résolu]

Signaler
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
-
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
-
Bonjour :)

j'ai un p'tit soucis en js et j'avoue que je sèche complet! D'une part parce que je ne suis pas sur de la possibilité de le faire et d'autres part de la syntaxe a adopter!
Voici la problèmatique!
J'ai une instance de classe (générée en PHP sous forme de JSON) Ce qui donne ceci !

var
Translator = {"fr":{"TITLE":"Mon titre","CONTENT":"Mon
contenu","THING":"Ma chose","SIGN":"Teclis01"},"en":{"TITLE":"My
title","CONTENT":"My content","SIGN":"Teclis01"}}

cette variable contenant mon instance j'aimerais lui ajouter des méthodes!
j'ai donc essayé ceci :

Translator.prototype.getTranslation = function(langage,symbol) {
    return this[langage][symbol];
};

Translator.prototype.translation = function(divId,langage,symbol){
    document.getElementById(divId).value=this.getTranslation(langage,symbol);
};

Vous vous en doutez :
1/ça ne fonctionne pas (ça me dit que la fonction n'est pas définie) quand j'essaye de faire : window.Translator.getTranslation('fr','SIGN');
2/ça sert a traduire >_<

Comment puis je faire ?
Merci :D

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro

4 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
salut

pourquoi ne pas faire simplement :

Translator.getTranslation = function(langage,symbol) {
    return this[langage][symbol];
};
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
Euh a vrai dire, je ne sais pas... J'ai vu cette syntaxe et je me suis dit qu'il fallait employer celle ci.
Je test pdt la pause merci :)

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
Nickel ! ça fonctionne mais je me renseignerais quand même sur l'utilisation du mot clef prototype

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
Pour ceux que ça interesse voici le code final
C'est du brut de brut pour tester.

<script>
var Translator = {"fr":{"TITLE":"Mon titre","CONTENT":"Mon contenu","THING":"Ma chose","SIGN":"Teclis01"},"en":{"TITLE":"My title","CONTENT":"My content","SIGN":"Teclis01"}}

Translator.getTranslation = function(langage,symbol) {
    var translation="TRANSLATION FOR "+symbol+" DOESN'T EXISTS FOR "+langage+"'s";
    if(this[langage][symbol]){
        return this[langage][symbol];
    }
    return translation;
};

Translator.translation = function(divId,langage,symbol){
    document.getElementById(divId).innerHTML=this.getTranslation(langage,symbol);
};
</script>

THING

<select onChange="window.Translator.translation('THING',this.value,'THING');">
    <option value="">Choix</option>
    <option value="fr">fr</option>
    <option value="en">en</option>
</select>

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro