Imagine Computing ...
Accueil News Articles Tests Traductions Liens Téléchargements A Propos
Tests - Tutorial : Traduction de logiciels -- [27285]

Traduire un logiciel

Que traduire ?

Je veux traduire un logiciel. C'est bien, mais savez-vous vraiment ce que vous pourrez traduire ? Tout d'abord, ResHack ne permet de traduire que les exécutables 32 bit : les programmes 16 bit, compatibles Windows 3.X bien souvent, ne peuvent pas être traduit, l'auteur de ResHack voulant se concentrer sur l'édition de ressources de programmes courant (le 16 bit est MORT). Un programme peut être constitué de n'importe quoi : un exécutable (.exe), une librairie (.dll), un économiseur d'écran (.scr), ... un plugin Winamp par exemple n'est constitué, bien souvent, que d'une DLL. Il peut de même y avoir des fichiers de ressources externes, comme des fichiers texte, ou des pages HTML, aide, historique ou autre readme à traduire. De même, et ces ressources sont souvent oubliées, les images et icônes peuvent être éditées pour signer son travail ou marquer la version FR, ou tout simplement pour traduire du texte incrusté dans des images utilisées par le programme (c'est déjà plus compliqué). Si tout cela ne vous fait pas peur, continuez. Si vous ne vous sentez pas de taille, aucun problème, tout le monde n'a pas le temps, la patience et la passion nécessaire à l'apprentissage de nouvelles notions.

Les outils de traduction

Il vous faut tout d'abord un éditeur de ressources. ResHack est non seulement génial, simple, puissant et souvent traduit en français, mais il est en plus totalement gratuit ! Comprenez que la traduction ne vous coûtera rien ... si vous respectez les lois de copyright instaurées par le créateur du programme. En effet, la traduction avec ResHack implique la décompilation du programme, vous DEVEZ demander l'avis de l'auteur pour traduire le logiciel, au moins avant de diffuser le programme traduit ...

La version 3.2.8.60 a été traduite en français par Julien Victor (traduction de grande qualité) et disponible aussi sur mon site étant donné que j'ai construit le package et effectué la mise à jour vers la dernière version.

Sinon vous pouvez téléchargez la version anglaise de ResHack sur la page US officielle :

http://rpi.net.au/~ajohnson/resourcehacker

Vous pouvez d'ors et déjà vous exercer avec le programme, ouvrez un exécutable et observez la structure, essayez de traduire quelques boîtes ... ça marche !


Interface et notions de Ressource Hacker

Lorsque vous ouvrez Resource Hacker, et que vous avez ouvert une ressource quelconque (programme, DLL, OCX, ...) vous obtenez l'écran ci-contre, ici CDex 1.3 FR. Les ressources du programme se présentent en fait sous formes de "Dossier", ce sont en fait les différentes classes de ressources. Vous avez, tout en haut, les ressources "Cursor", qui contient tous les curseurs de souris utilisés par le programme. Il peut être intéressant de les modifier dans le cadre d'une amélioration graphique, mais c'est bien souvent inutile lors d'une traduction. Les ressources de type "Bitmap" contiennent les images utilisées par le programme. Dans CDex FR, j'ai par exemple été amené à refaire le logo qui apparaît dans la boite "A Propos" pour y incruster mon FR. C'est ici que j'ai trouvé les ressources de type BMP, JPG ou GIF bien souvent. Les ressources Icon contiennent les icônes du programme. Il contient bien souvent une icône 32*32 pour l'affichage normal (sur le bureau par exemple) et une icône 16*16 pour un affichage réduit (menu démarrer par exemple). De même ici, il est bien souvent inutile de retoucher les icônes dans le cadre d'une traduction. Les ressources de type "Menu" représentent tous les menus que contient la fenêtre principale : Fichier, Edition, ... il contient l'organisation, la signature de fonction et les libellés des différents composants des menus. Les ressources de type Dialog contiennent toutes les boîtes de dialogue du programme, c'est bien souvent la partie la plus longue : la majorité du texte du programme est contenu dans ce type de ressources, ne vous inquiétez pas s'il comporte beaucoup de ressources. Les ressources de type String Table peuvent elles aussi être assez importantes : elles contiennent tout le texte qui n'est pas contenu dans les boites de dialogue du programme. Bien souvent du détail, par exemple les info bulles qui s'ouvrent lorsque l'on reste longtemps sur un bouton, ou encore les textes de descriptions contenus dans la barre inférieure du programme. Les ressources de types accelerator appartiennent au programme, elles ne doivent pas être modifiées. Les ressources cursor group et icon group contiennent les mêmes ressources que Bitmap et Icon, mais regroupées : bien souvent, une ressources icon group contiendra 3 icônes de même type mais avec des dimensions et une profondeur de couleur différente. Regardez dans les deux types de ressource, vous comprendrez ... Les ressources de type Version Info contiennent de courtes informations sur le programme, son auteur, la version, ... j'ai utilisé cette rubrique pour appeler le programme CDex traduit en FR CDex 1.30 Plus FR : j'ai changé le numéro de version, et voilà, la barre de titre de CDex a changé ! Les ressources 240 et 241 contiennent dans CDex des valeur Hexadécimales, du code, n'y touchez pas.


Traduction : les menus

Bien ! Maintenant que vous avez pris connaissance des différents types de ressources disponibles, reste à les traduire ! La première étape consiste à trouver un programme que vous souhaitez traduire, et d'ouvrir l'exécutable. Commencez par les ressources de type Menu. La première approche de la traduction est véritablement ludique, tellement elle est simple : ouvrez le "Dossier" Menu, puis ouvrez la première ressource. Vous devriez alors observer la figure ci-contre. En bas de l'écran, le menu en cause, ici le menu principal, qui relatera, à chaque fois que vous cliquerez sur "Compiler le script" les changements effectués. Si vous n'avez effectué aucun changement, cette fonction n'est bien évidement pas accessible, comme sur la capture d'écran. N'oubliez pas de compiler souvent pour voir les résultats de cotre traduction sur le menu "virtuel" de Resource Hacker. Modifiez d'abord, et ce sera le cas pour toutes les ressources de type texte que vous modifierez, les paramètres LANGUAGE, tout en haut du texte (en dessous de MENU). Remplacez les champs par ceux montrés dans cette capture d'écran, à savoir LANG_FRENCH et SUBLANG_FRENCH, qui signifie que votre ressource est en français. Ce n'est pas essentiel, mais c'est toujours bon de le faire. Vous avez ensuite les lignes de type POPUP qui contiennent les noms des différents menus (ici, Fichier). Dans ce cas :

Attention aux signes & : ils permettent de souligner la lettre qui suit : Lorsque vous traduisez par exemple "&Open;", écrivez "&Ouvrir;", tandis que si vous traduisez "&Exit;", tapez "Quitt&er;" pour souligner toujours la même lettre. Par contre, si le terme traduit ne contient pas la lettre soulignée, par exemple "Save &As;" qui se traduira par enregistrer sous, vous devez supprimer le caractère &, ainsi vous traduirez par "Enregistrer sous", tout simplement.

Dans mon cas, l'ancien champ était "&File;", je l'ai remplacé par "&Fichier;". Les champs de type MENUITEM désignent les noms des composants du menu. Ainsi, le menu Fichier contient Informations système, Comparer 2 Fichiers et Quitter. Là encore, contentez-vous de traduire le texte, en respectant les &. les chiffres placés après le texte, comme par exemple pour le premier, 32781, servent à identifier l'action qui est associée à ce bouton : tous les boutons de valeur 32781 de ce programme ouvriront les Information système. Ne vous préocupez pas de ce chiffre. La ligne ne contenant que le terme SEPARATOR désigne en fait une ligne de séparation : le menu Fichier contiendra Informations système et Comparer 2 Fichiers, l'item Quitter étant séparé des deux précédant par une barre horizontale, qui n'a qu'une fonction de clarté et d'organisation. Les termes /t au milieu du texte signifie que le texte au delà de ce caractère sera aligné à droite, ceci est particulièrement utilisé pour signaler à l'utilisateur un raccourci clavier à une tâche contenue dans le menu. Si vous souhaitez introduire un item ou un menu à titre d'information, vous pouvez le faire en insérant une nouvelle ligne de texte de type MENUITEM et de lui assigner une valeur non encore assignée, qui n'aura donc aucune fonction. Votre menu apparaîtra donc en grisé (non utilisable), j'ai utilisé cette méthode pour le menu Aide, pour signaler que l'aide en FR était disponible par le menu démarrer. Voilà, vous savez tout sur la traduction des menus.


Traduction : les boîtes de dialogue

Bien, déjà une bonne chose de faite. Passons maintenant à la partie la plus grande, la traduction des boîtes de dialogue. Ouvrez la rubrique "Dialog". Chaque fenêtre du programme est ici répertoriée dans l'arborescence par les "Sous Dossiers". Lorsque vous ouvrez une ressource, vous obtiendrez comme d'habitude le texte et la boite de dialogue que vous êtes en train de manipuler. Le premier champ à traduire est toujours le champ LANGUAGE, recopiez mes valeurs, puis vient le champ CAPTION. Très important, il détermine le nom de la fenêtre éditée. Nous avons ici un cas de figure particulier, il n'a pas de nom de fenêtre car ceci est une sous fenêtre (uniquement le codec Lame). S'il s'agit d'une véritable fenêtre (le champ CAPTION n'étant donc, à l'origine, pas vide), traduisez ce champ. Les autres champs à traduire sont les champs qui suivent CONTROL, entre les guillemets, toujours sans toucher aux caractères "&". Traduisez donc tout les champs, vous comprendrez la difficulté que présente la traduction, trouver les bons termes, et surtout, après une compilation (cliquez sur "Compiler le script", en haut de la fenêtre), vous vous rendrez peut-être compte que certains textes sont coupés, empiètent sur d'autres, ... ce n'est pas une erreur du programme, mais cela vient du fait que chaque champ dispose de dimensions et de coordonnées précise exprimées en pixels. Lorsque le texte en français est plus long que le texte original, et c'est souvent le cas, les dimensions ne conviennent plus au nouveau texte, il convient donc de retoucher les dimensions du champ, et éventuellement la position, si le champ devenu plus grand empiète sur les autres champs. Pour cela cliquez sur la boite de dialogue sur le champ dont la dimension ne convient plus, et redimensionnez simplement le champ sélectionné à l'aide de la souris, par simple glissement ! Pour des déplacements plus précis, utilisez les touches de direction du clavier. Je pense que vous en savez maintenant assez pour traduire les boites de dialogue. Etudions la constitution des lignes de codes en observant celui qui désigne, ci-dessus, le champ "Bitrate Min" :

CONTROL "Bitrate Min", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 15, 28, 34, 8

En rouge, la définition de classe. Ceci est la définition du type de contenu. Pour les éléments des boites de dialogue, CONTROL est utilisé. Pour les menus, MENUITEM est utilisé. Vous n'aurez certainement pas besoin de retoucher ces paramètres.

En bleu, le texte. Il n'existe de champs texte que pour les champs contenant du texte, les menu déroulant par exemple ne contiennent pas de texte.

En vert, les définitions du champ. Un champ texte n'aura pas les mêmes définitions qu'un champ menu déroulant, ... vous n'aurez certainement pas besoin de retoucher ces paramètres.

En violet enfin, les positions et les dimensions et la position du champ. Ceci est assez utile, puisqu'il vous permet de régler manuellement et très finement ces paramètres. Le premier nombre contient les coordonnées horizontales (X), le second les coordonnées verticales (Y), le troisième les dimensions horizontales (X) et le dernier les dimensions verticales (Y). Pour aligner verticalement deux champs, il suffit de leur donner la même coordonnée horizontale (X), et ainsi de suite. C'est véritablement le seul paramètre que vous auriez à changer manuellement pour rendre vos champs plus coordonnés, alignés au pixel près, pour les perfectionnistes (dont je fais partie ;-).


Traduction : les chaînes de caractères

Les ressources de type "String Table" sont de simples textes utilisés par le programme pour diverses opérations où le texte n'est pas constant (affichage du jour par exemple). Traduisez simplement le texte situé entre les guillemets, et le tour est joué. Ici encore, n'oubliez pas de compiler avant de changer de ressource.


Introduction, suppression et remplacement d'éléments

Vous pourrez ainsi créer vous même vos propres champs, pour signer votre traduction par exemple. Le mieux, dans ce cas, reste tout de même de laisser Ressource Hacker le faire pour vous. Cliquez avec le bouton droit de la souris sur une partie de l'aperçu de la boîte de dialogue, et sélectionnez "Insérer un contrôle". Cliquez sur le petit bouton "label" en haut à gauche de la fenêtre qui vient de se présenter (voir image ci-dessous), tapez votre texte dans le champ Label, et cliquez sur OK. Rien ne vous empêche de choisir un autre modèle prédéfini, mais le champ de texte simple comme celui-ci est le plus utilisé, avec le champ de cadre (première ligne, 4ème en partant de la gauche). Pour insérer une image, cliquez sur le bouton avec un petit arbre, etc ...

Si vous souhaitez modifier les propriétés d'un contrôle, effectuez un clic droit sur celui-ci et cliquez sur "Editer le contrôle", vous aurez alors accès à tout les paramètres dans le tableau, en bas de la fenêtre intitulée Control Editor. A vous d'essayer de modifier le cadre, l'alignement, les ressources, ... sachez que les paramètres modifiés dans ces options sont celles inscrites sur la ligne de texte correspondant à chaque contrôle, si vous souhaitez les modifier manuellement.

Si vous souhaitez substituer une ressource, une image ou un son par exemple, il faut passer par le menu "Action", puis "Remplacer ..." selon ce que vous souhaitez remplacer. Pour modifier une image par exemple, il faut la localiser dans les éléments "Bitmap", effectuer un clic droit sur son numéro d'identifiant dans l'arborescence, puis cliquer sur "Enregistrer la ressource..." et vous obtiendrez un fichier image. Lorsque vous aurez modifié cette image, passez par le menu Action, puis "Remplacer [ici] le bitmap ...", cliquez sur "Ouvrir un fichier avec un Bitmap", sélectionner dans la liste en bas, à droite l'image à remplacer et cliquer sur remplacer. Ouf. Vous pouvez aussi remplacer les icônes par exemple.

De même pour ajouter une ressource, passez par le menu Action, puis "Ajouter une nouvelle ressource ..." et indiquez votre fichier. Il ne reste plus qu'à spécifier un nom, une catégorie et la langue pour qu'il soit disponible dans le programme. Vous pourrez ainsi, en insérant un contrôle image, insérer votre propre image en indiquant uniquement le nom de la ressource.

Si enfin, vous souhaitez supprimer un contrôle, rien de plus simple : cliquez dessus et appuyez sur [Suppr] ou, par le clic droit, sélectionnez Supprimer le contrôle. Vous pouvez aussi supprimer la ligne complète correspondant au contrôle.


Voilà, je pense que vous savez tout sur la traduction de programmes. Si vous êtes véritablement perfectionnistes, vous pouvez toujours éditer les exécutables en Hexadécimal en faisant bien attention de ne pas supprimer ou ajouter des offsets : le fichier doit avoir exactement la même taille et la structure (départ et fin de chaîne de caractère) doit être respectée ! Cette limitation n'apparaît pas lorsque vous éditez le code source, la meilleure façon de traduire un logiciel. Mais dans ce cas, il faut que le programme soit disponible avec le code source, et que vous possédiez le compilateur approprié.

Pour ce qui est du package, vous pouvez utiliser NSIS qui est, à mon avis, le meilleur système d'installation existant, il est simple, rapide et gratuit ! Vous pouvez l'obtenir sur cette page.

Voilà, je pense que vous savez tout sur la traduction de programmes. J'enrichirais peut-être cette page si je pense que j'ai oublié quelque chose. Si quelque chose ne marche pas, si vous ne comprenez pas ce qui est écrit, ou encore si vous avez des contributions et autres conseils à m'apporter, envoyez moi un email !