Saturday, 27 July 2024
 
 
Comment localiser aussi les chaînes d'un fichier .js Print
Written by Goofy   
Thursday, 29 September 2005

Il arrive assez souvent que dans une extension qui comporte des dossiers "locale" on trouve des mots et phrases qui ne sont pas localisés, et qu'on ne peut par transformer en "entities" comme les autres, parce qu'ils sont dans des fichiers .js (javascript)

Il existe une solution, qui prend un peu de temps, et parfois même beaucoup de temps pour localiser un mot ou deux seulement...



Supposons que vous trouviez ces messages au milieu d'un fichier.js :
if ( password == userPassword ) {
      oPrefs.setBoolPref("access.authenticated", true);  
   }
   else {
      alert ("Invalid password");
......
function clear()
{
 sure = confirm("Are you sure?");
D'abord, vous devez trouver ou créer un fichier  monextension.properties dans le dossier locale. Puis vous y écrivez simplement des noms de variables  et les mots ou phrses qui doivent apparaître à l'utilisateur final.

Quelque chose comme :

WrongPassMessage=Invalid  password
AreYouSureMessage=Are you sure?

(où  Invalid password et Are you sure?  sont les chaînes à afficher pour l'utilisateur final)
Notez : un simple signe = suffit

Revenez maintenant dans le fichier .js où se trouvent les chaînes à localiser.
Tout au début du fichier vous allez créer un  string bundle pointant vers l'adresse du fichier properties où se trouvent les chaînes.


var gBundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
var mesmots = gBundle.createBundle("chrome://myextension/locale/monextension.properties");

Immédiatement en-dessous vous pouvez faire la liste des variables dont vous avez besoin dans votre .js :

var wrongpassalert = mesmots.GetStringFromName("WrongPassMessage");
var confirmmessage=mesmots.GetStringFromName("AreYouSureMessage");
Il ne vous reste plus qu'à utiliser ces variables dans le code .js là où c'est nécessaire. Voir les exemples ci-dessous :


if ( password == userPassword ) {
      oPrefs.setBoolPref("access.authenticated", true);   
   }
   else {
      alert (wrongpassalert);

function clear()
{
 sure = confirm("confirmmessage");


Last Updated ( Monday, 05 June 2006 )
 
 
Top! Top!
'; ?>