Extraire des données

Par norico, il y a 9 ans


Bonjour,
J'ai un petit problème d'extraction de données.
J'ai un dictionnaire de mots en deux langues ( en et fr ) situé dans un fichier json.
Je charge mes paires dans un tableau sous la forme d'objet.
Je sélectionne une entrée aléatoirement dans le tableau pour faire un quizz.

J'ai donc mon fichier JSON sour la forme :
{
"one": "un",
"two": "deux",
"three": "trois",
}

Je récupere donc un tableau comme suis :

dico[1] { en: "one", fr: "un"}
dico[2] { en: "two", fr: "deux"}
...

Mon chiffre aléatoire en fonction de la taille du tableau est placé dans "$random"
Ma langue selectionnée est placé dans "$lang"

En fonction de la langue selectionnée, je souhaiterai récupérer la bonne valeur dans l'objet de mon tableau.

Je fais donc manuellement dico[$random].en pour le mot en anglais et dico[$random].fr pour celui en français

Le soucis c'est lorsque je souhaites récupérer avec la variable $lang cela ne fonctionne plus. dico[$random].$lang me retourne '''undefined''

Merci de votre aide

5 réponses

FiReBlUe, il y a 9 ans

Salut
Si dico[$random].en pour le mot en anglais et dico[$random].fr pour celui en français existe bien fait dico[$random][$lang]
Sinon tu as d'autre moyen plus propre de faire cela.

bàt

norico, il y a 9 ans

Je veux bien un peu d'aide alors.

Merci

Je ne sais pas pourquoi je voulais absoluement mettre un point.

FiReBlUe, il y a 9 ans

Cela marche ?
Tu veux une autre methode?

norico, il y a 9 ans

Oui celà fonctionne.
Mais je ne suis pas contre une autre méthode.

FiReBlUe, il y a 9 ans

Un grand nombre de framework qui font ca (i18n) utilise un fichier json par langue

Exemple :
en.json

{ "one": "one", "two": "two", "three": "three", }

fr.json

{ "one": "un", "two": "deux", "three": "trois", }

es.json, etc.

Ainsi dans ton code tu as toujours la meme variable : dico.one quie est = à un si tu es en fr par exemple.
Tu dois juste prévoir une function qui charge le bon json dans ta variable dico à chaque changement de langue.

j'espere que je suis +- clair ;)