Page 1 sur 1

Leechget

Publié : 18 déc. 2004, 02:01
par The BLION Corp.
Bonjour tout le monde...
J'ai beaucoup de mal à traduire une extension.
J'avais réussi à traduire textlink pour rajouter la traduction française sans trop de problèmes...

Je veux traduire l'extension pour Leechget (http://home.arcor.de/chrassig/leechget.html)

Soit je me fais jeter pour un contents.rdf invalide, soit il m'installe l'extension et veut me la désinstaller de suite !

L'architecture est :

/
leechget.jar
--/locale
-----/fr-FR
--------/leechget
-----------/contents.rdf
-----------/leechget.dtd
-----/en-US
[...]
--/content
-----/leechget
-------/contents.rdf
-------/leechGetOverlay.js
-------/leechGetOverlay.xul
--/install.js
--/install.rdf

install.js

Code : Tout sélectionner

const APP_DISPLAY_NAME = "Text Link Handler";
const APP_NAME = "leechget";
const APP_PACKAGE = "/Jerome Blion/leechget";
const APP_VERSION = "0.2";

const APP_JAR_FILE = "leechget.jar";
const APP_CONTENT_FOLDER = "content/leechget/";

// PATCH BY TBC : ADD FRENCH LANGUAGE
const APP_LOCALE_FOLDER  = "locale/"
const APP_LOCALES = [ "en-US", "fr-FR" ];

const APP_SUCCESS_MESSAGE = "New menuitems will appear on the selection context menu.\n\n";


initInstall(APP_NAME, APP_PACKAGE, APP_VERSION);

var chromef = getFolder("Profile", "chrome");
var instFlags = PROFILE_CHROME;

var err = addFile(APP_PACKAGE, APP_VERSION, "chrome/" + APP_JAR_FILE, chromef, null)
if(err >= SUCCESS) { 
	var jar = getFolder(chromef, APP_JAR_FILE);
	registerChrome(CONTENT | instFlags, jar, APP_CONTENT_FOLDER);
	
    for(var i in APP_LOCALES)
		registerChrome( LOCALE | cflag, jar, APP_LOCALE_FOLDER+APP_LOCALES[i]+"/leechget/" );
		// I would rather have used APP_LOCALE_FOLDER.replace( /%s/, APP_LOCALES[i] )
		// but that didn't work.  From install.log: "APP_LOCALE_FOLDER.replace is not a function"
		//registerChrome(LOCALE  | instFlags, jar, APP_LOCALE_FOLDER);
		
	err = performInstall();
	if(err == SUCCESS) {
		alert(APP_NAME + " " + APP_VERSION + " has been succesfully installed.\n"
			+APP_SUCCESS_MESSAGE
			+"Please restart your browser before continuing.");
	} else { 
		alert("Install failed. Error code:" + err);
		cancelInstall(err);
	}
} else { 
	alert("Failed to create " +APP_JAR_FILE +"\n"
		+"You probably don't have appropriate permissions \n"
		+"(write access to Profile/chrome directory). \n"
		+"_____________________________\nError code:" + err);
	cancelInstall(err);
}
install.rdf

Code : Tout sélectionner

<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">

 <Description about="urn:mozilla:install-manifest">
 
    <em:id>{4c422a84-713a-42a1-bee4-1778fa006504}</em:id>
 <em:name>Leechget</em:name>
 <em:version>0.4.1</em:version>
 <em:creator>Jerome Blion</em:creator>
 <em:description>Telecharger avec Leechget</em:description>
<em:homepageURL>http://www.hebergemen-pro.org/</em:homepageURL>
<em:file>
<Description about="urn:mozilla:extension:file:leechget.jar">
<em:locale>fr-FR</em:locale>
<em:locale>en-US</em:locale>
<em:package>content/leechget/</em:package>
</Description>
</em:file>
 <em:targetApplication>
 <Description>
    <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
 <em:minVersion>0.9</em:minVersion>
 <em:maxVersion>1.0</em:maxVersion>
 </Description>
 </em:targetApplication>
</Description>
</RDF>
locale/fr-FR/leechget/contents.rdf

Code : Tout sélectionner

<?xml version="1.0"?>
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

  <!-- list all the packages being supplied by this jar -->
  <RDF:Seq about="urn:mozilla:locale:root">
    <RDF:li resource="urn:mozilla:locale:fr-FR"/>
  </RDF:Seq>

  <!-- locale information -->
  <RDF:Description about="urn:mozilla:locale:fr-FR"
        chrome:displayName="Francais(FR)"
        chrome:author="Jerome Blion"
        chrome:name="fr-FR">
    <chrome:packages>
      <RDF:Seq about="urn:mozilla:locale:fr-FR:packages">
        <RDF:li resource="urn:mozilla:locale:fr-FR:leechget"/>
      </RDF:Seq>
    </chrome:packages>
  </RDF:Description>

</RDF:RDF>
locale/fr-FR/leechget/leechget.dtd

Code : Tout sélectionner

<!ENTITY leechget-download.label "Télécharger avec Leechget">
<!ENTITY leechget-wizard.label "Utiliser l'assistant Leechget">
<!ENTITY leechget-parser.label "Analyser avec with Leechget">
Qu'est-ce que je pourrais essayer pour enfin faire marcher ma traduction ?
Merci d'avance pour le temps consacré à la lecture de mon message :-)

Publié : 18 déc. 2004, 02:23
par The BLION Corp.
L'enregistrement chrome a échoué pour l'extension '{44fe9bfd-d5cb-4552-953e-9e78a8cc1cfb}' lors de l'appel à nsIXULChromeRegistry::installPackage avec ce chemin chrome : jar:file:///C:/Documents%20and%20Settings/J%E9r%F4me/Application%20Data/Mozilla/Firefox/Profiles/ltjugdzc.default/extensions/%7B44fe9bfd-d5cb-4552-953e-9e78a8cc1cfb%7D/chrome/leechget.jar!/content/ (extension de profil = true). Peut-être que ce chemin n'existe pas dans le fichier chrome JAR, ou que le fichier contents.rdf à cet emplacement est mal formé ?
J'ai bidouillé l'extension avec le Extension Developpment que j'ai trouvé sur le net...
Ca a commencé à me faire les erreurs comme ci-dessus.
J'ai mis tous les chemins en absolus. Et là, Firefox se relance plus !!!
Et un profil qui est parti en vrille !!!
J'ai tout viré, et je réinstalle mes extensions...

Publié : 18 déc. 2004, 02:58
par The BLION Corp.
En mettant les fichiers de traduction dans fr-FR et en-US
En mettant les fichiers d'Overlay dans content
En générant le install.rdf avec Extension Developper 0.2.0

L'extension s'installe... Je peux même la désinstaller...
Sauf qu'au premier clic droit sur un lien, ça fait porte nawak.
Au lieu de lancer Leechget, ça cache les items du menu contextuel...

Ca vient du fichier JS, ça non ?

Publié : 18 déc. 2004, 03:00
par pcdingo
Djà à 1ere vue y a une erreur ici :

Code : Tout sélectionner

 <RDF:Description about="urn:mozilla:locale:fr-FR"
        chrome:displayName="Francais(FR)"
        chrome:author="Jerome Blion"
        chrome:name="fr-FR"> 
Remplacer par

Code : Tout sélectionner

 <RDF:Description about="urn:mozilla:locale:fr-FR"
        chrome:displayName="French (FR)"
        chrome:author="Jerome Blion"
        chrome:name="fr-FR"> 
Et n'oubliez pas les fichiers doivent être en UTF8, utiliser par exemple l'éditeur Unired pour ça.

Publié : 18 déc. 2004, 03:29
par The BLION Corp.
Merci pour l'information.
Ne connaissant pas les règles en la matière, j'ai tendance à faire ce que je veux !
Dans un sens, vu que ça ne sert qu'à moi pour le moment, je peux merdouiller...
(on retrouve des traces de ma traduction de textlink si vous aviez pas remarqué lol)

Alors, j'ai refait mon package en gros sauvage avec Extension Developper.
Sauf que j'ai modifié l'Overlay javascript pour voir ce qu'il se passait...
lgpath reste vide et n'arrive pas à être initialisé. (il est censé être lu dans les paramètres de configuration de Firefox)
Sauf que, à aucun moment dans ma nouvelle compilation, je n'ai défini cette variable.

J'ai donc fait le install.js avec juste ça :

Code : Tout sélectionner

var winreg = getWinRegistry();
if (winreg) {
  winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  var pth = winreg.getValueString("Software\\Cronosoft\\LeechGet\\Console", "LeechGetPath");
  tmp = new String(pth);
  pth = tmp.replace(/\\/gi, "\\\\");
  var ini = getWinProfile(getFolder("Program") + "defaults\\pref", "leechget.js");
  ini.writeString("/**/", "/*", "");
  ini.writeString("/**/", "/*", "*/" + "pref(\"leechget.path\", \"" + pth + "\");");
}
Il faudrait normalement gérer les retours d'erreur, mais pour moi, ça marche !!!

Publié : 18 déc. 2004, 22:01
par pcdingo
C'est une extension pour Mozilla?
Parce que maintenant avec Firefox y a plus besoin de script d'installation !

Publié : 18 déc. 2004, 22:16
par The BLION Corp.
Ben le problème, c'est que si je ne lance pas ce morceau de script, je n'ai pas la variable dans le about:config...
Et résultat, ça ne marche pas.
A moins que quelqu'un me donne la combine pour l'intégrer dans le install.rdf, je vois pas comment faire autrement.

Publié : 18 déc. 2004, 22:42
par pcdingo
La combine c'est créer un dossier defaults puis un dossier preferences et dans ce dossier créer un fichier nomdelextension.js
Et dedans mettre les variables, exemple :

Code : Tout sélectionner

pref("extensions.showanchors.menu", true);
pref("extensions.showanchors.highlight", true);

Publié : 18 déc. 2004, 22:46
par The BLION Corp.
OK, je vois.
Comment est-ce que je fais pour récupérer ma variable à partir du registre ?
Faire des appels au registre à chaque clic droit, c'est un peu lourdingue !

Publié : 18 déc. 2004, 23:47
par pcdingo
Pourquoi faire appel au registre à chaque click droit? click droit où? je comprends pas bien le pb, et pourquoi on parle de scripts d'ailleurs puis que à la base tout ça c'est pour une traduction non? donc normalement juste les fichiers dans content/local doivent être touchés et le fichier install.rdf afin d'ajouter la référence au dossier /content/fr-FR

Publié : 19 déc. 2004, 00:06
par The BLION Corp.
Leechget est un gestionnaire de téléchargements.
Pour connaitre son emplacement, l'extension va chercher le chemin lors de l'installation dans la base de registre.

Sur chaque lien, l'extension rajoute trois options :
- Télécharger avec Leechget
- Assistant Leechget
- Analyser avec Leechget
Ca permet ainsi de faire comme Flashgot...

Sauf que pour connaitre l'emplacement de Leechget, il faut aller taper dans la base de registres à un moment donné.

Maintenant, concernant la traduction, si l'extension avait été bien faite, effectivement, je n'aurais eu à toucher que ça...
Mais ça n'est pas le cas. L'extension devait fonctionner selon l'ancien système : dans le dossier de mozilla et invisible dans les extenions (si pas de Show old extensions)
Donc, j'ai refait le package en reprenant les morceaux de code spécifiques à Leechget.

Et c'est en faisant cette magouille que j'avais plein de problèmes.
Maintenant, je ne vois pas comment faire sans l'install.js pour créer la variable dans Firefox et renseigner la bonne valeur (issue de la base de registres)

Publié : 19 déc. 2004, 01:46
par pcdingo
Ah ok je comprends mieux maintenant ;)
Mais t'as écrit à l'auteur avant pour savoir s'il comptait retoucher son extension?
Sinon pour ta question je me demande si dans le fichier que je t indiqué tu ne pourrais pas mettre le code pour récupérer le chemin dans la base de registre puis dans le type que je t indiqué mettre la variable contenant le chemin trouvé.
Sinon faudrait faire un fichier option pour que l'utilisateur aille chercher manuellement le chemin afin qu'il renseigne lui même ce paramètre qui par défaut serait vide.

Publié : 19 déc. 2004, 13:58
par The BLION Corp.
Alors pour répondre aux questions :
- Non, je n'ai pas écrit à l'auteur pour lui faire modifier son extension.
Néanmoins, maintenant qu'elle a été finie, je lui ai mailé ma version.

- Faudra que j'essaie.

- Huuuue tornade !!! Déjà que j'arrive à peine à faire mes traductions... lol