44 ================================================================ */
55
66var LANG = {
7+
78 /* ============================
89 INTERFACE GÉNÉRALE
910 ============================ */
@@ -48,7 +49,7 @@ var LANG = {
4849 wo : 'Ñaanal yi'
4950 } ,
5051 card_duas_desc : {
51- fr : 'Duas et Adhkar du matin, soir, prière, repas...' ,
52+ fr : 'Duas du matin, soir, prière, repas...' ,
5253 wo : 'Ñaan yi ci suba, ngoon, julli, lekk...'
5354 } ,
5455 card_dhikr_title : {
@@ -79,46 +80,14 @@ var LANG = {
7980 fr : 'Récitateur' ,
8081 wo : 'Kiy jàng Alkuraan bi'
8182 } ,
82- settings_reciter_choose : {
83- fr : 'Choisir le récitateur' ,
84- wo : 'Tànn kiy jàng bi'
85- } ,
8683 settings_translation : {
87- fr : 'Traduction' ,
88- wo : 'Tekki'
89- } ,
90- settings_translation_choose : {
91- fr : 'Langue de traduction' ,
92- wo : 'Làkku tekki bi'
84+ fr : 'Traduction du Coran' ,
85+ wo : 'Tekki Alkuraan bi'
9386 } ,
9487 settings_language : {
9588 fr : 'Langue de l\'application' ,
9689 wo : 'Làkku jëfandikukaay bi'
9790 } ,
98- test_reciter : {
99- fr : '🔊 Tester le récitateur' ,
100- wo : '🔊 Siiwal kiy jàng bi'
101- } ,
102- test_stop : {
103- fr : '⏹ Stop' ,
104- wo : '⏹ Taxaw'
105- } ,
106- test_listening : {
107- fr : '🔊 En cours d\'écoute...' ,
108- wo : '🔊 Yaa ngi déglu...'
109- } ,
110- test_loading : {
111- fr : '⏳ Chargement...' ,
112- wo : '⏳ Yaa ngi yab...'
113- } ,
114- test_done : {
115- fr : '✅ Test terminé' ,
116- wo : '✅ Siiwal bi jeex na'
117- } ,
118- test_unavailable : {
119- fr : '⚠️ Ce récitateur n\'est pas disponible' ,
120- wo : '⚠️ Kiy jàng bii amul'
121- } ,
12291 close : {
12392 fr : '✓ Fermer' ,
12493 wo : '✓ Tëj'
@@ -129,7 +98,7 @@ var LANG = {
12998 ============================ */
13099 stat_juz_read : {
131100 fr : 'Juz lus' ,
132- wo : 'Juz yi nga jàng'
101+ wo : 'Juz yi jàng'
133102 } ,
134103 stat_surahs : {
135104 fr : 'Sourates' ,
@@ -207,18 +176,6 @@ var LANG = {
207176 fr : '🕌 Médinoise' ,
208177 wo : '🕌 Madiina'
209178 } ,
210-
211- /* ============================
212- READER
213- ============================ */
214- resume_reading : {
215- fr : 'Reprendre la lecture' ,
216- wo : 'Gunni jàng bi'
217- } ,
218- continue : {
219- fr : 'Continuer →' ,
220- wo : 'Kontaan →'
221- } ,
222179 verse : {
223180 fr : 'Verset' ,
224181 wo : 'Aaya'
@@ -227,14 +184,6 @@ var LANG = {
227184 fr : 'Taille' ,
228185 wo : 'Dayoo'
229186 } ,
230- prev_juz : {
231- fr : '← Juz préc.' ,
232- wo : '← Juz bi jiitu'
233- } ,
234- next_juz : {
235- fr : 'Juz suiv. →' ,
236- wo : 'Juz bi toftal →'
237- } ,
238187 prev_surah : {
239188 fr : '← Sourate préc.' ,
240189 wo : '← Surat bi jiitu'
@@ -245,11 +194,11 @@ var LANG = {
245194 } ,
246195
247196 /* ============================
248- AUDIO PLAYER
197+ AUDIO
249198 ============================ */
250199 repeat_on : {
251200 fr : '🔁 Répétition activée' ,
252- wo : '🔁 Wàññi dees ko jéema '
201+ wo : '🔁 Wàññi jàng '
253202 } ,
254203 repeat_off : {
255204 fr : '🔁 Désactivée' ,
@@ -260,12 +209,8 @@ var LANG = {
260209 SHARE
261210 ============================ */
262211 share_verse : {
263- fr : '📤 Partager ce verset' ,
264- wo : '📤 Séddoo aaya bii'
265- } ,
266- share_copy : {
267- fr : '📋 Copier' ,
268- wo : '📋 Duppi'
212+ fr : '📤 Partager' ,
213+ wo : '📤 Séddoo'
269214 } ,
270215 share_copied : {
271216 fr : '📋 Verset copié !' ,
@@ -291,30 +236,6 @@ var LANG = {
291236 fr : '🔄 Réessayer' ,
292237 wo : '🔄 Jéemaat'
293238 } ,
294- audio_error : {
295- fr : '⚠️ Erreur audio' ,
296- wo : '⚠️ Njuumte ci audio bi'
297- } ,
298- reciter_changed : {
299- fr : '🎙️ Récitateur changé' ,
300- wo : '🎙️ Kiy jàng bi soppiku na'
301- } ,
302- translation_changed : {
303- fr : '🌍 Traduction changée' ,
304- wo : '🌍 Tekki bi soppiku na'
305- } ,
306- translation_show : {
307- fr : '🌍 Traduction affichée' ,
308- wo : '🌍 Tekki bi fénn na'
309- } ,
310- translation_hide : {
311- fr : '🌍 Masquée' ,
312- wo : '🌍 Nëbb na'
313- } ,
314- juz_marked : {
315- fr : '✓ Juz {n} marqué lu' ,
316- wo : '✓ Juz {n} jàng nañu ko'
317- } ,
318239
319240 /* ============================
320241 DUAS PAGE
@@ -337,57 +258,13 @@ var LANG = {
337258 } ,
338259
339260 /* ============================
340- DHIKR PAGE
341- ============================ */
342- dhikr_title : {
343- fr : 'Dhikr & Tasbih' ,
344- wo : 'Dikr ak Tasbih'
345- } ,
346- completed : {
347- fr : 'terminés' ,
348- wo : 'jeex nañu'
349- } ,
350- reset : {
351- fr : '🔄 Réinitialiser' ,
352- wo : '🔄 Dooraat'
353- } ,
354- reset_all : {
355- fr : '🔄 Réinitialiser tous les compteurs' ,
356- wo : '🔄 Dooraat waaraange yi yépp'
357- } ,
358- reset_confirm : {
359- fr : 'Réinitialiser tous les compteurs ?' ,
360- wo : 'Dooraat waaraange yi yépp ?'
361- } ,
362- dhikr_done : {
363- fr : '✅ BarakAllahu fik !' ,
364- wo : '✅ BarakAllahu fiik !'
365- } ,
366- all_done_title : {
367- fr : 'Tous les dhikr sont terminés !' ,
368- wo : 'Dikr yi yépp jeex nañu !'
369- } ,
370- all_done_sub : {
371- fr : 'Qu\'Allah accepte de nous et de vous.' ,
372- wo : 'Yàlla nanu ko nangu ci nun ak yéen.'
373- } ,
374-
375- /* ============================
376- FOOTER
261+ DUAS CATEGORIES
377262 ============================ */
378- footer_credit : {
379- fr : 'Sadaqa Jariya' ,
380- wo : 'Sarax bu sore'
381- } ,
382-
383- /* ============================
384- DUAS CATEGORIES (Names)
385- ============================ */
386- cat_morning_adhkar : {
263+ cat_morning : {
387264 fr : 'Adhkar du Matin' ,
388265 wo : 'Dikru suba si'
389266 } ,
390- cat_evening_adhkar : {
267+ cat_evening : {
391268 fr : 'Adhkar du Soir' ,
392269 wo : 'Dikru ngoon si'
393270 } ,
@@ -419,48 +296,69 @@ var LANG = {
419296 fr : 'Pour les Parents' ,
420297 wo : 'Ndey ak Baay'
421298 } ,
422- cat_general : {
299+ cat_quran_duas : {
423300 fr : 'Duas du Coran' ,
424301 wo : 'Ñaanu Alkuraan'
425302 } ,
426303
427304 /* ============================
428- DUAS TRANSLATIONS (Wolof)
305+ DHIKR PAGE
429306 ============================ */
430- dua_morning_1 : {
431- fr : 'Ô Allah, c\'est par Toi que nous arrivons au matin... ' ,
432- wo : 'Yàlla, yaa nu suba, yaa nu ngoon, yaa nu dundal, yaa nu dee, te yaa nu ko dellu. '
307+ dhikr_title : {
308+ fr : 'Dhikr & Tasbih ' ,
309+ wo : 'Dikr ak Tasbih '
433310 } ,
434- dua_morning_2 : {
435- fr : 'Nous voilà au matin et le royaume appartient à Allah...' ,
436- wo : 'Subaatu Yàlla la, te ñu ngi ko sant. Amul Yàlla ku dul Yàlla kenn, moom rekk, amul ay bokk, moom mooy Boroom nguuru bi, te moom mooy ñu sant...'
311+ completed : {
312+ fr : 'terminés' ,
313+ wo : 'jeex nañu'
314+ } ,
315+ reset : {
316+ fr : '🔄 Réinitialiser' ,
317+ wo : '🔄 Dooraat'
318+ } ,
319+ reset_all : {
320+ fr : '🔄 Tout réinitialiser' ,
321+ wo : '🔄 Dooraat lépp'
322+ } ,
323+ reset_confirm : {
324+ fr : 'Réinitialiser tous les compteurs ?' ,
325+ wo : 'Dooraat waaraange yi yépp ?'
437326 } ,
438- dua_protection_1 : {
439- fr : 'Ô Allah, je cherche refuge auprès de Toi contre les soucis... ' ,
440- wo : 'Yàlla, dama la di ñaan nga aar ma ci xel-xuul ak naqar, ak bañ-ci-mën ak naaxari yaram, ak ñaax ak ragal, ak bor ak njël ak ay nit ñu ma dàq. '
327+ dhikr_done : {
328+ fr : '✅ BarakAllahu fik ! ' ,
329+ wo : '✅ BarakAllahu fiik ! '
441330 } ,
442- dua_parents : {
443- fr : 'Seigneur, fais-leur miséricorde comme ils m\'ont élevé petit. ' ,
444- wo : 'Boroom bi, yërëmal leen ni ñu ma toggaloon bi ma woon tuuti. '
331+ all_done_title : {
332+ fr : 'Tous les dhikr sont terminés ! ' ,
333+ wo : 'Dikr yi yépp jeex nañu ! '
445334 } ,
446- dua_forgiveness : {
447- fr : 'Je demande pardon à Allah le Très Grand...' ,
448- wo : 'Damay ñaan Yàlla mu baal ma, mu jot ma, moom mi nit amul, mooy dund gi ak taxawal gi...'
335+
336+ /* ============================
337+ FOOTER
338+ ============================ */
339+ footer_credit : {
340+ fr : 'Sadaqa Jariya' ,
341+ wo : 'Sarax bu sore'
449342 }
450343} ;
451344
345+
452346/* ================================================================
453- LANGUAGE SYSTEM
347+ FONCTIONS DU SYSTÈME DE LANGUE
454348 ================================================================ */
349+
350+ /* Lire la langue actuelle */
455351function getCurrentLang ( ) {
456352 return localStorage . getItem ( 'q_lang' ) || 'fr' ;
457353}
458354
355+ /* Changer la langue */
459356function setLang ( lang ) {
460357 localStorage . setItem ( 'q_lang' , lang ) ;
461358 return lang ;
462359}
463360
361+ /* Traduire une clé */
464362function t ( key ) {
465363 var lang = getCurrentLang ( ) ;
466364 if ( LANG [ key ] ) {
@@ -469,11 +367,52 @@ function t(key) {
469367 return key ;
470368}
471369
472- /* Get greeting based on time and language */
370+ /* Salutation selon l'heure */
473371function getGreeting ( ) {
474372 var h = new Date ( ) . getHours ( ) ;
475- if ( h >= 5 && h < 12 ) return t ( 'home_greeting_morning' ) ;
373+ if ( h >= 5 && h < 12 ) return t ( 'home_greeting_morning' ) ;
476374 if ( h >= 12 && h < 17 ) return t ( 'home_greeting_afternoon' ) ;
477375 if ( h >= 17 && h < 21 ) return t ( 'home_greeting_evening' ) ;
478376 return t ( 'home_greeting_night' ) ;
479377}
378+
379+ /* ================================================================
380+ RAFRAÎCHIR TOUS LES TEXTES DE LA PAGE
381+ Fonctionne sur TOUTES les pages (index, quran, duas, dhikr)
382+ ================================================================ */
383+ function refreshLang ( ) {
384+ /* 1. Mettre à jour tous les éléments avec data-i18n */
385+ document . querySelectorAll ( '[data-i18n]' ) . forEach ( function ( el ) {
386+ var key = el . getAttribute ( 'data-i18n' ) ;
387+ if ( LANG [ key ] ) {
388+ /* Pour les inputs (placeholder) */
389+ if ( el . tagName === 'INPUT' ) {
390+ el . placeholder = t ( key ) ;
391+ } else {
392+ el . textContent = t ( key ) ;
393+ }
394+ }
395+ } ) ;
396+
397+ /* 2. Mettre à jour le greeting si présent */
398+ var greetEl = document . getElementById ( 'greeting' ) ;
399+ if ( greetEl ) greetEl . textContent = getGreeting ( ) ;
400+
401+ /* 3. Mettre à jour les boutons de langue */
402+ var btnFr = document . getElementById ( 'langFr' ) ;
403+ var btnWo = document . getElementById ( 'langWo' ) ;
404+ var lang = getCurrentLang ( ) ;
405+ if ( btnFr ) btnFr . classList . toggle ( 'active' , lang === 'fr' ) ;
406+ if ( btnWo ) btnWo . classList . toggle ( 'active' , lang === 'wo' ) ;
407+
408+ /* 4. Appeler le callback spécifique à la page si défini */
409+ if ( typeof onLangChanged === 'function' ) {
410+ onLangChanged ( ) ;
411+ }
412+ }
413+
414+ /* Changer de langue (appelé par les boutons) */
415+ function switchLang ( lang ) {
416+ setLang ( lang ) ;
417+ refreshLang ( ) ;
418+ }
0 commit comments