Add a button to switch between EN-FR/FR-EN

This commit is contained in:
Etienne Millon
2013-06-07 15:41:27 +02:00
parent 59f8219717
commit a3ab999146
2 changed files with 65 additions and 44 deletions

View File

@@ -1,3 +1,29 @@
function trouveElement(id)
{
return document.getElementById(id);
}
function obtenirLAttribut(element, attribut)
{
return element.getAttribute(attribut);
}
function definirLAttribut(element, attribut, valeur)
{
return element.setAttribute(attribut, valeur);
}
function changeDeSens(window)
{
var element = trouveElement('mots')
var langueDesClefsActuelle = obtenirLAttribut(element, 'data-langue');
var autre = {'anglais': 'francais',
'francais': 'anglais'};
var langueDesClefsNouvelle = autre[langueDesClefsActuelle];
definirLAttribut(element, 'data-langue', langueDesClefsNouvelle);
construitListe(window)
}
function construitListe(window) function construitListe(window)
{ {
var document = window.document; var document = window.document;
@@ -78,11 +104,6 @@ function construitListe(window)
{anglais: 'tweet', francais: 'gazouilli'} {anglais: 'tweet', francais: 'gazouilli'}
]; ];
function trouveElement(id)
{
return document.getElementById(id);
}
function cache(e) function cache(e)
{ {
e.style.visibility = 'hidden'; e.style.visibility = 'hidden';
@@ -96,10 +117,10 @@ function construitListe(window)
var tous_les_mots = vrais_mots.concat(faux_mots); var tous_les_mots = vrais_mots.concat(faux_mots);
var i; var i;
var noeudFRversANG = trouveElement('francais_vers_anglais'); var lien = trouveElement('lienChange');
var noeudANGversFR = trouveElement('anglais_vers_francais'); var mots = trouveElement('mots');
var lettresFRversANG = new Array(26); var langueDesClefs = obtenirLAttribut(mots, 'data-langue');
var lettresANGversFR = new Array(26); var lettres = new Array(26);
var noeud; var noeud;
function enleveLesAccents(s) { function enleveLesAccents(s) {
@@ -107,24 +128,28 @@ function construitListe(window)
return s; return s;
} }
var lienFR = '<span class="mot-francais">Français</span>';
var lienANG = '<span class="mot-anglais">Anglais</span>';
var lienSource = lienFR;
var lienDestination = lienANG;
if (langueDesClefs === 'anglais') {
lienSource = lienANG;
lienDestination = lienFR;
}
lien.innerHTML = lienSource + ' &rarr; ' + lienDestination;
mots.innerHTML = '';
for (i = 0; i < 26; ++i) { for (i = 0; i < 26; ++i) {
var lettre = String.fromCharCode(65 + i); var lettre = String.fromCharCode(65 + i);
lettresFRversANG[i] = noeud = document.creeElement('div');
lettres[i] = noeud = document.creeElement('div');
noeud.className = 'groupe-lettre'; noeud.className = 'groupe-lettre';
noeud.enfants = 0; noeud.enfants = 0;
var titre = document.creeElement('h3'); var titre = document.creeElement('h3');
titre.innerHTML = lettre; titre.innerHTML = lettre;
noeud.appendChild(titre);
lettresANGversFR[i] = noeud = document.creeElement('div');
noeud.className = 'groupe-lettre';
noeud.enfants = 0;
titre = document.creeElement('h3');
titre.innerHTML = lettre;
noeud.appendChild(titre); noeud.appendChild(titre);
} }
@@ -144,31 +169,27 @@ function construitListe(window)
noeud = document.createElement('div'); noeud = document.createElement('div');
noeud.className = 'definition'; noeud.className = 'definition';
noeud.innerHTML = '· <span class="mot-anglais"> ' + mot.anglais + ' </span> : ' var spanAnglais = '<span class="mot-anglais"> ' + mot.anglais + ' </span>';
+ '<span class="mot-francais">' + mot.francais + "</span>"; var spanFrancais = '<span class="mot-francais">' + mot.francais + '</span>';
var indice = indiceDeLaPremiereLettre(mot.anglais);
lettresANGversFR[indice].appendChild(noeud); var spanClef = spanFrancais;
lettresANGversFR[indice].enfants++; var spanValeur = spanAnglais;
var indice = indiceDeLaPremiereLettre(mot.francais);
if (langueDesClefs === 'anglais') {
spanClef = spanAnglais;
spanValeur = spanFrancais;
indice = indiceDeLaPremiereLettre(mot.anglais);
}
noeud = document.createElement('div'); noeud.innerHTML = '· ' + spanClef + ' : ' + spanValeur;
noeud.className = 'definition';
noeud.innerHTML = mot.francais + ' &rarr; ' + mot.anglais;
noeud.innerHTML = '· <span class="mot-francais"> ' + mot.francais + '</span> : '
+ '<span class="mot-anglais">' + mot.anglais + ' </span>';
indice = indiceDeLaPremiereLettre(mot.francais); lettres[indice].appendChild(noeud);
lettresFRversANG[indice].appendChild(noeud); lettres[indice].enfants++;
lettresFRversANG[indice].enfants++;
} }
for (i = 0; i < 26; ++i) { for (i = 0; i < 26; ++i) {
noeud = lettresFRversANG[i]; noeud = lettres[i];
if (noeud.enfants > 1) if (noeud.enfants > 1)
noeudFRversANG.appendChild(noeud); mots.appendChild(noeud);
noeud = lettresANGversFR[i];
if (noeud.enfants > 1)
noeudANGversFR.appendChild(noeud);
} }
} }

View File

@@ -16,16 +16,16 @@
<div id="intro"> <div id="intro">
De nos jours on rencontre de nombreux termes techniques en anglais : &laquo;&nbsp;megabyte&nbsp;&raquo;, &laquo;&nbsp;URL&nbsp;&raquo; ou encore &laquo;&nbsp;plugin&nbsp;&raquo;.<br/><br/> Pourtant, ces nouveaux mots ont souvent un équivalent francais qu'il conviendrait d'utiliser. En voici une liste bien pratique. Bonne lecture ! De nos jours on rencontre de nombreux termes techniques en anglais : &laquo;&nbsp;megabyte&nbsp;&raquo;, &laquo;&nbsp;URL&nbsp;&raquo; ou encore &laquo;&nbsp;plugin&nbsp;&raquo;.<br/><br/> Pourtant, ces nouveaux mots ont souvent un équivalent francais qu'il conviendrait d'utiliser. En voici une liste bien pratique. Bonne lecture !
<br/><br/>
<div>
<a id="lienChange" href="#" onclick="changeDeSens(window)"></a>
</div>
</div> </div>
<div id="anglais_vers_francais"> <div id="mots" data-langue="anglais">
<h2>Lexique anglais-français</h2>
</div> </div>
<div id="francais_vers_anglais">
<h2>Lexique français-anglais</h2>
</div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
construitListe(window); construitListe(window);