Localisation des .js dans une extension Firefox

Vous vous penchez sur le développement d'applications ou d'extensions pour Mozilla ? C'est alors vers ce forum que se dirigeront naturellement vos requêtes...
jhb2529
Arias
Messages : 5
Inscription : 22 juil. 2010, 16:02

Localisation des .js dans une extension Firefox

Message par jhb2529 »

Bonjour,

Y a t'il un moyen d'utiliser les fichier de locale d'une extension firefox pour localiser un script en JS ?
Je m'explique : tout le mécanisme de localisation à base de fichier dtd fonctionne pour les fichiers .xul (browser.xul et options.xul par exemple), une ref en début de ces fichiers :
<!DOCTYPE xxxSYSTEM "chrome://xxx/locale/translations.dtd"> et toutes entité &toto; sera remplacée par sa déclaration dans le fichier .dtd.

Mais comment faire pour le fichier .js qui est lancé par l'extension et qui doit renvoyer un texte (dans une alert("Au secours !") par exemple), comment lui faire interpréter les entités de la DTD ?

J'ai essayé avec un document.write = '<!DOCTYPE xxxSYSTEM "chrome://xxx/locale/translations.dtd">', mais ça ne marche pas.

Quelqu'un aurait une idée ?

jh
Pastisman
Tyrannosaurus Rex
Messages : 2137
Inscription : 27 juin 2008, 15:18

Re: Localisation des .js dans une extension Firefox

Message par Pastisman »

Bonjour,

Je pense que tu trouvera ton bonheur avec les fichiers .properties :wink:
Ma devise : Etre convaincu (en 3 mots)
Mes extensions
Pastisman
Tyrannosaurus Rex
Messages : 2137
Inscription : 27 juin 2008, 15:18

Re: Localisation des .js dans une extension Firefox

Message par Pastisman »

En relisant, c'est peut-être pas super clair.
Un exemple plutôt.

Dans mon fichier XUL j'ai :

Code : Tout sélectionner

  <stringbundleset id="stringbundleset">
      	<stringbundle id="removesearchplugins-strings" src="chrome://RemoveSearchplugins/locale/RemoveSearchplugins.properties"/>
  </stringbundleset>
Dans le fichier RemoveSearchplugins.properties, situé comme tu le vois avec les dtd dans les différents répertoires locale/* :

Code : Tout sélectionner

delete=Suppression de plugin de recherche
deletePluginPrompt=Voulez-vous supprimer le plugin %S ?\n 
Et dans mon fichier JS une fonction :

Code : Tout sélectionner

  getLocaleString : function(strName, formattingValues) {
	var str = null;
	try {
		var strbundle = document.getElementById("removesearchplugins-strings");
		if (formattingValues === undefined) {
			str = strbundle.getString(strName);
		} else {
			str = strbundle.getFormattedString(strName, formattingValues);
		}
	} catch (err) {
		dump("Couldn't get string: " + strName + "\n");
	}
	return str;
  },
que j'appelle par :

Code : Tout sélectionner

    var name       = popupNode.label;
    var delstr1 = this.getLocaleString('delete');
    var delstr1 = this.getLocaleString('deletePluginPrompt', [name]));
L'encapsulage du stringbundle dans une fonction permet de récupérer des chaines avec formatage ou non (%s, %c, ...) et de gérer les erreur, mais tu peux directement utiliser

Code : Tout sélectionner

 var delstr1 =  document.getElementById("removesearchplugins-strings").getString('delete');
Ma devise : Etre convaincu (en 3 mots)
Mes extensions
jhb2529
Arias
Messages : 5
Inscription : 22 juil. 2010, 16:02

Re: Localisation des .js dans une extension Firefox

Message par jhb2529 »

OK, merci pour toutes ces bonnes infos, je vais essayer...
Goofy
Iguane
Messages : 593
Inscription : 23 juil. 2004, 22:39

Re: Localisation des .js dans une extension Firefox

Message par Goofy »

On peut aussi se dispenser de créer le stringbundkle dans le xul en le créant en tête du fichier .js
Voir ici
http://www.babelzilla.org/index.php?opt ... 18&Itemid=
- Pensez global, faites des locales -

Image
jhb2529
Arias
Messages : 5
Inscription : 22 juil. 2010, 16:02

Re: Localisation des .js dans une extension Firefox

Message par jhb2529 »

Oui c'est plus simple, mais peut-on encore utiliser des chaines avec des %s à l'intérieur sans avoir à les remplacer "à la main" ?
Goofy
Iguane
Messages : 593
Inscription : 23 juil. 2004, 22:39

Re: Localisation des .js dans une extension Firefox

Message par Goofy »

jhb2529 a écrit :Oui c'est plus simple, mais peut-on encore utiliser des chaines avec des %s à l'intérieur sans avoir à les remplacer "à la main" ?
Je ne suis pas sûr de comprendre ta question mais on peut bien sûr localiser avec des placeholders aussi http://babelwiki.babelzilla.org/index.p ... a_.js_file
- Pensez global, faites des locales -

Image
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Semrush [Bot] et 8 invités