Importer un fichier langue

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
moimp
Messages : 3
Enregistré le : 22 oct. 2024, 16:08

Importer un fichier langue

Message par moimp » 22 oct. 2024, 16:39

Bonjour à tous,
J'ai un code qui intègre toutes les langues utilisées sur mes sites.
Pour alléger ce code et ne pas avoir à le modifier à chaque ajout de langue, je voudrais externaliser les fichiers langues au format .js ou .json.
J'ai fait un grand nombre d'essais avec import() et JSON.parse() mais je ne m'en sors pas.
Code d'appel:

Code : Tout sélectionner

const data = import('./'+lang+'.js')
où '.js' peut être remplacé par '.json'. Dans ce code la constante lang est transmise depuis PHP.
Est-ce la meilleure méthode? Comment faire autrement?
Le code actuel commence comme ceci:

Code : Tout sélectionner

const
	en = {
		weekDays:	['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
		,monthes:	['January','February','March','April','May','June','July','August','September','October','November','December']
		,week:		'Week'
	}
	,fr = {
		weekDays:	['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi']
		,monthes:	['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre']
		,week:		'Semaine'
	}
	,it = {
		weekDays:	['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato']
		,monthes:	['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre']
		,week:		'Settimana'
	}
	;

// NE PAS OUBLIER D AJOUTER LES NOUVELLES LANGUES ICI
const
	data = {en, fr, it};	

// LA CONSTANTE lang DOIT ÊTRE FOURNIE A PARTIR DE PHP.
const params = data[lang];	
Modifié en dernier par moimp le 24 oct. 2024, 11:06, modifié 1 fois.

Avatar du membre
webmaster
Administrateur du site
Messages : 616
Enregistré le : 28 févr. 2017, 15:19

Re: Importer un fichier langue

Message par webmaster » 23 oct. 2024, 11:01

Bonjour

Pour inclure un fichier .js dans une page HTML, il faut simplement utiliser la balise <script> en début de page

Code : Tout sélectionner

<script src="lang.js"></script>
On a accès ainsi aux constantes en, fr, ...
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

moimp
Messages : 3
Enregistré le : 22 oct. 2024, 16:08

Re: Importer un fichier langue

Message par moimp » 23 oct. 2024, 18:45

Je n'obtiens pas le résultat voulu.
J'ai un fichier langue par langue (exemple fr.js) et j'ai fait ceci:
Dans le HTML:

Code : Tout sélectionner

	<script>const lang = "fr";</script>
	<script type="module" src='js/fr.js'></script>
	<script type='module' src='js/clock.js'></script>
Dans ce code le texte en dur 'fr' sera remplacé par une variable.

Le fichier langue fr.js contient:

Code : Tout sélectionner

const params = {
	weekDays:	['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi']
	,monthes:	['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre']
	,week:		'Semaine'
}
Le fichier clock.js commence par:

Code : Tout sélectionner

console.log(lang);	// 'fr'
console.log(params);	// not defined
avec les valeurs de retour en commentaire. Et là, pourquoi lang est retournée (reconnue) mais pas params?

Avatar du membre
webmaster
Administrateur du site
Messages : 616
Enregistré le : 28 févr. 2017, 15:19

Re: Importer un fichier langue

Message par webmaster » 24 oct. 2024, 09:45

Je pense que c'est à cause de l'option type="module"
Sans cette option, les variables seront connues
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

moimp
Messages : 3
Enregistré le : 22 oct. 2024, 16:08

Re: Importer un fichier langue

Message par moimp » 24 oct. 2024, 15:17

Merci, effectivement, j'ai enlevé l'option type="module" de la deuxième ligne et le fonctionnement est correct.

Répondre