Page 1 sur 1

Importer un fichier langue

Posté : 22 oct. 2024, 16:39
par moimp
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];	

Re: Importer un fichier langue

Posté : 23 oct. 2024, 11:01
par webmaster
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, ...

Re: Importer un fichier langue

Posté : 23 oct. 2024, 18:45
par moimp
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?

Re: Importer un fichier langue

Posté : 24 oct. 2024, 09:45
par webmaster
Je pense que c'est à cause de l'option type="module"
Sans cette option, les variables seront connues

Re: Importer un fichier langue

Posté : 24 oct. 2024, 15:17
par moimp
Merci, effectivement, j'ai enlevé l'option type="module" de la deuxième ligne et le fonctionnement est correct.