Présentation
Bienvenue sur le tutoriel de AllTrad ! Grace à ce tuto, vous allez voir comment utiliser cet outil pour traduire la plupart des applis.
AllTrad est un programme qui permet de traduire les applications préalablement décompilé avec ApkTool. AllTrad possède un système de base de données par applications qui permet de traduire une partie de l’application. Ça permet de traduire toutes les lignes déjà traduite en cas de nouvelle version.
De plus le programme refait les fichiers xml pour permettre la compilation par ApkTool. La base de données se complète au fur et à mesure que vous traduisez. C’est à vous de traduire, le programme se « contente » de lire, traduire avec la base, compléter la base et réécrire les fichiers xml pour la recompilation.
Les deux fichiers . xml à traduire sont arrays.xml et strings.xml. arrays.xml contient les phrases des menus de l’application et strings.xml contient les phrases des boutons de l’application. C’est ces deux fichiers qui doivent être traduit pour avoir plusieurs langues dans l’application.
Ce tuto inclus une partie sur ApkTool et explique l’utilisation de AllTrad. Il est fait sur Windows pour Windows mais il est possible d’utiliser ApkTool sur d’autre OS, ainsi que AllTrad mais il faudra le recompiler pour eux.
alexandreou a écrit: Pyrana a écrit:
NB: Si bdd est la base de données, ce sont des xml déjà traduit pour la Viper ? cette base tu as dû en faire une traduction avant ? ou copier les lignes à traduire de ton programme dans un translator qui les traduiras? et les recopier sur la ligne traduire.
Justement, comme j'ai dit sur le sujet ViperTrad, c'est pas un traducteur automatique, c'est quand même à toi de tout traduire, pour compléter la base de données ! Un traducteur automatique qui te sort ton arrays.xml et ton strings.xml anglais traduit en français en quelques secondes, ça existe pas encore (et c'est pas prêt d'exister !)
L'idée du programme est partie d'un constat avec les roms Viper : tu fais ta traduction, tranquille, ligne par ligne, t'as fini, t'es super content, tu mets en forme, apktool t'eng*eule 2-3 fois mais tu y arrives. Une maj mineur sort, tu mets l'ancienne traduction, tu copies les nouvelles lignes et tu les traduits, etc.
Et la, ils sortent une mise à jour majeur, et toutes les lignes sont remélangé...
Donc comment tu fais ? Tu recherches la première ligne de la nouvelle version dans tes traductions, tu l'as trouve, tu l'as met. Tu recommences mais tu t'aperçois qu'il y a un petit groupe de ligne qui est identique, tu copies donc la traduction. Tu trouve une nouvelle ligne, tu l'as copies à la fin, etc...2000 fois !
Pareil pour le arrays ! Pour faire ça, la dernière fois, ça m'as mis 3 heures ! Sans compter les nouvelles lignes qu'il faut traduire à la fin ! Que, avec AllTrad, tu as JUSTE à cliquer sur un bouton et paf, 3 heures d'économisés ! 3 heures en quelques secondes !
Voilà d'où est venu l'idée du programme, en plus c'est plus sympa que de traduire un bloc de texte, le programme le traite pour que tu t'occupes juste de la traduction, pas de la mise en forme pour éviter que apktool rale à cause d'apostrophes ou autres trucs oublié, le machin te le fais tout seul !
C'est en quelque sorte une aide à la traduction, pas un traducteur auto ! Ça faisait longtemps que je voulais créer ce programme mais j'avais pas les compétences, aujourd'hui, je les ai donc j'ai fait ça ! Si un jour je deviens un super ingénieur qui veut faire un truc mieux que google traduction pour traduire toutes les applications automatiquement, là AllTrad pourra probablement le faire ! (mais là c'est pas demain la veille !)
Schéma :
Introduction
Pour commencer, voici
l’interface de mon programme :
1. Contient des options permettant d’enregistrer ou d’ouvrir des fichiers.
2. Permet d’avancer ou de reculer plus rapidement dans les menus.
3. Permet de choisir l’appli que l’on va traduire.
4. Permet d’ouvrir les fichiers à partir du dossier de l’apk décompilé.
5. Permet de choisir vers quelle langue la traduction va être faite.
6. Permet de choisir une autre base de données (sinon, celle par défaut sera utilisé).
7. Permet d’enregistrer les traductions dans le dossier de l’apk (permet de recompiler juste après).
8. Permet d’enregistrer la base de données directement dans le programme (donc va devenir la base de données par défaut).
9. Permet d’enregistrer les fichiers traduit dans le dossier de votre choix.
10. Permet d’enregistrer la base de données dans le dossier de votre choix.
11. Permet de lancer la traduction du fichier avec la base de données.
12. Permet de fusionner deux bases de données.
13. Les deux onglets qui permettent de passer de la traduction du arrays.xml à la traduction du strings.xml
La partie strings.xml :1. La fonction de la ligne à traduire (lecture et copier seulement).
2. La ligne d’origine à traduire (lecture et copier seulement).
3. L’endroit où écrire votre traduction.
4. Votre position dans les lignes à traduire.
5. Pour revenir à la ligne précédente.
6. Pour valider la traduction, la copier dans la base de données et dans le fichier traduit.
7. Pour passer à la ligne suivante, ne sera pas mise dans la base de données ni dans le fichier final.
La partie arrays.xml :1. Les lignes du menu à traduire.
2. Le nom du menu à traduire.
3. La ligne du menu sélectionné dans 1.
4. La traduction de la ligne.
5. Permet de valider la traduction de la ligne.
6. Permet de revenir au menu précédant.
7. Permet de passer au menu suivant.
8. Position dans les menus à traduire.
Partie sur ApkTool
AllTrad a besoin des fichiers arrays.xml et strings.xml en clair. Dans le .apk, il ne sont pas en clair, il faut donc décompiler les .apk pour pouvoir les traduire. Une fois traduit, il faut recompiler l’appli pour pouvoir l’installer sur votre appareil.
Pour utiliser ApkTool, il vous faut :
- Java (JDK) : http://www.oracle.com/technetwork/java/javase/downloads/index.html
- apktool.bat : https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat
- apktool.jar : https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.2.2.jar
(Site de ApkTool : https://ibotpeaches.github.io/Apktool/)
D’abord, installez le JDK puis ajoutez-le dans les variables d’environnement.
Allez dans « Panneau de configuration\Système et sécurité\Système » puis dans « Paramètres système avancés ». Allez dans « Variables d’environnement… » puis double-cliquer sur Path dans la première partie de la fenêtre (sur Windows 10, je me souviens plus pour Windows 7 et autres, je regarderai et éditerai le tuto). Enfin, cliquez sur « Nouveau » et entrez le répertoire du JDK/bin. (Par défaut : C:\Program Files\Java\jdk1.8.0_131\bin (Attention, le numéro de version peut varier selon la version du JDK actuel).
Ensuite, créez un dossier (pour moi et dans ce tuto, le nom du dossier sera apktool) où vous voulez, ce dossier servira à décompiler, recompiler et signer les apk. Dans ce dossier, mettez les fichiers apktool.bat et apktool.jar.
Pour apktool.bat, si un code s'affiche dans la page internet, faites clique droit sur la page, "Enregistrer sous", enregistrez-la dans le dossier apktool en le renommant "apktool.bat" (il faut enlever le .txt à la fin, s'il y en a un).
Ou alors, copiez ce qu'il y a dans la page, collez ça dans le bloc note et enregistrez-le dans le dossier apktool en le renommant "apktool.bat" (il faut enlever le .txt à la fin, s'il y en a un).
Enfin, il faut créer un fichier qui permettra de signer les applications. Pour cela, ouvrez un cmd dans le dossier que vous avez créé (pour ouvrir un cmd directement dans le dossier, cliquez sur la barre d’adresse, effacez l’adresse et entrez cmd), entrer la commande suivante :
Code:
keytool -genkeypair -v -keystore keystore.jks -storepass PSEUDO -alias PSEUDO -keyalg RSA -validity 36500
Remarque : PSEUDO peut être remplacé par ce que vous voulez.
Des questions vont vous être posé, répondez ce que vous voulez, une fois les infos entrées, mettez oui et un mot de passe vous sera demandez, mettez ce que vous voulez (plus de 6 caractères). Une fois cela fait, un fichier sera créé. Maintenant, il faut configurer ApkTool.
Prenez une ROM (celle de votre appareil) (si vous voulez vous lancer dans une traduction d'applis d'une rom (comme VenomTweaks des ROM Viper), utilisez cette ROM là) (bref, une appli quelconque, ROM quelconque, une appli livrée avec une ROM, cette ROM) (je prends Viper10 du HTC 10), ouvrez-la et allez dans system/framework, prenez « framework-res.apk » et les autres qui ressemble (par exemple, ici, « framework-res-venom.apk » et « framework-res-htc.apk ») et mettez-les dans le dossier d’apktool. Ensuite, entrez dans le cmd la commande suivante :
Code:
apktool if framework-res.apk
A répéter autant de fois qui y ai de framework, en adaptant la commande avec le nom du framework :
Code:
apktool if framework-res-venom.apk
apktool if framework-res-htc.apk
Et c’est terminé ! Les commandes pour ces deux éléments :
Pour décompiler :
(exemple :
Code:
apktool d VenomTweaks.apk
)
Pour recompiler :
(exemple :
Code:
apktool b VenomTweaks
)
L’apk recompilé est situé dans appli\dist, il faut le déplacer dans le dossier principal pour le signer (là où il y a apktool.bat et autres)
Pour signer :
Code:
jarsigner -keystore keystore.jks -storepass PSEUDO appli.apk PSEUDO
(exemple :
Code:
jarsigner -keystore keystore.jks -storepass PSEUDO VenomTweaks.apk PSEUDO
)
Partie sur AllTrad
Pour utiliser AllTrad, il faut :
-Visual Studio C++ Redistribuable 2015 (normalement déjà installé si vous avez utilisé des jeux ou autres)
-AllTrad : https://github.com/alexandreou/AllTrad/releases
Attention : La liste (qui va s'agrandir) des applis compatible est :
-VenomTweaks
-VenomHUB
-VenomSideBar
-Viper4Android
Si l’appli que vous voulez traduire n’est pas dans la liste, il faut que ces fichiers arrays.xml et strings.xml soit correct, sinon le programme ne pourra pas les lire. (C’est facile de savoir ça, si, lorsque vous ouvrez le dossier de l’apk ou des fichiers arrays.xml et strings.xml (manip en dessous), le programme plante, c’est que l’un des deux fichiers n’est pas bon, si cela arrive, mettez un commentaire et je vous dirai !).
Pour traduire un .apk :Une fois AllTrad décompressé où vous voulez, ouvrez AllTrad.exe.
Remarque : Tous les fichiers et dossiers utilisés avec AllTrad doivent avoir une adresse sans accent : exemple : C:\Bibliothèques\ApkTool\VenomTweaks n’est pas bon car accent dans l’adresse).Mettez de côté AllTrad et allez dans le dossier contenant apktool. Mettez l’apk que vous voulez traduire et entrez la commande pour décompiler (apktool d appli.apk).
Retourner dans AllTrad. Choisissez l’appli que vous voulez traduire (Image 1 n°3) (Mettre Autre si elle n’y est pas), cliquez sur « Ouvrir le dossier de l’apk décompilé » (I1 n°4).
Choisissez le dossier qui a été créé dans le dossier de apktool et qui porte le même nom que l’appli (si on veut traduire VenomTweaks.apk, le dossier sera VenomTweaks), si le programme plante, c’est que l’un des deux fichiers .xml ne peux pas être lu. S’il ne plante pas, les lignes Fonction à traduire et Ligne d’origine devrai afficher quelque chose (I2 n°1, 2).
Si l’application fait partie des applications compatible (donc si elle se trouve dans le menu des applications à traduire (I1 n°3), il est probable qu’il y est une base de données, sinon c’est très peu probable. Vous pouvez faire « Traduire avec la base de données » pour voir).
S’il n’y a pas d’erreur, la base de données a bien été appliqué et toutes les traductions de la base ont été mise dans le fichier à traduire (donc ça vous fait moins de lignes à traduire).
S’il y a une erreur, c’est que la base de données n’existe pas donc c’est à vous de la créer au fur et à mesure que vous traduisez.
Ensuite, pour traduire c’est simple (c’est un peu le but du programme d’ailleurs), vous avez les deux fichiers à traduire : strings.xml et arrays.xml, vous pouvez passer de l’un à l’autre avec les deux onglets (I1 n°13).
Pour la partie strings.xml, il suffit de rentrer la traduction de la ligne « Ligne d’origine » (I2 n°2) dans « Traduction » (I2 n°3). Pour vous aider, servez-vous de votre téléphone avec l’appli, comme ça vous pourrez voir à quoi la ligne correspond. Vous pouvez aussi utiliser Google traduction mais la ligne traduite veut souvent pas dire grand-chose, il faut essayer de chercher/interpréter ce que ça veut dire ! Vous avez aussi « Fonction à traduire » qui peux apporter des indications. C’est beaucoup plus rapide de traduire avec l’application ouverte. (C’est d’ailleurs ce qui m’a poussé à faire ce programme, n’ayant pas de HTC 10, difficile de traduire les applications !)
Si vous voyez deux arobases collés (@@), ne les enlevez pas, ils sont là pour la mise en forme ! Traduisez autour !
Une fois la ligne traduite, faites « Valider / Ligne suivante > » (I2 n°6). Elle sera alors copiée dans la base de données et dans le fichier final.
Si vous n’arrivez pas à traduire la ligne ou qu’elle n’est pas traduisible (s’il y a marqué un truc bizarre ou que c’est juste un chiffre, un lien, une clef, etc. Normalement, si l’appli fait partie de la liste des applis compatibles, il ne devrai pas y avoir ce genre de lignes. (Voir la partie sur l’explication des choix d’appli en bas)) faites « Passer / Traduction non trouvée > » (I2 n°7). Cette ligne ne sera pas copiée ni dans la base de données, ni dans le fichier final. Ce sera donc la traduction d’origine qui sera utilisée.
Vous pouvez aussi faire « < Ligne précédente » pour retourner sur une ligne d’avant. Si la ligne est dans la base de données, vous pourrez choisir de la remplacer ou non. (Comme ça, vous pouvez corriger la base de données si vous avez envie !) Vous pouvez voir si vous êtes à la fin avec le compteur (I2 n°4).
Pour la partie arrays.xml, c’est un peu diffèrent. Vous avez un « sélecteur de ligne » (I3 n°1) où vous pouvez choisir la ligne que vous voulez traduire.
Donc, comme sur la partie strings.xml, vous avez le nom du menu à traduire (I3 n°2), la ligne d’origine (I3 n°3) et la ligne où entrer la traduction de la ligne d’origine (I3 n°4). La différence ici est que dans un menu, il y a plusieurs lignes à traduire, donc elles sont réunies dans le « sélecteur de ligne » (I3 n°1).
Avec la souris, vous pouvez cliquer sur la ligne que vous voulez traduire, elle sera alors affichée dans ligne d’origine et vous aurez plus qu’à la traduire et cliquer sur « Valider la traduction de la ligne » (I3 n°5). La ligne suivante sera automatiquement sélectionnée et la ligne traduite sera surligné en vert.
Quand vous avez terminé de traduire le menu (il n’est pas obligatoire que toutes les lignes soit traduite), vous pouvez cliquer sur « Valider / Menu suivant > » (I3 n°7).
Enfin, pareil qu’avec strings.xml, vous pouvez revenir au menu d’avant avec « < Menu précédant » (I3 n°6) et vous avez un compteur de menu (I3 n°8).
Une fois que vous avez traduit une partie ou toutes les lignes et menus, vous pourrez enregistrer votre travail. Cliquez sur « Enregistrer les fichiers traduits » (I1 n°7) qui permet d’enregistrer les fichiers traduits directement dans le dossier de l’apk décompilé et sur « Enregistrer la base de données » (I1 n°8) qui permet d’enregistrer la base de données dans le programme.
Si vous voulez partager les fichiers traduits ou votre base de données (ce qui est aussi un peu le principe du programme, pouvoir partager nos avancées pour que les autres puisse continuer, corriger, etc), vous pouvez cliquer sur « Enregistrer les fichiers traduis sous » (I1 n°9) et sur « Enregistrer la base de données sous » (I1 n°10)).
Remarque : Il est aussi possible de récupérer les fichiers dans le dossier de l’apk décompilé (Appli/res/values-fr/) (ou values-es, de, etc selon la langue de la traduction) et les bases de données du programme dans la racine du programme/bdd (AllTrad/bdd).
Une fois que vous avez enregistrer les fichiers, vous pouvez quitter AllTrad !
Retour dans le dossier de ApkTool, ouvrez un cmd dedans et faite la commande :
(sans le .apk puisque c’est un dossier)
Une fois la commande faite, allez dans le dossier de l’appli et dans dist (apktool/appli/dist), copier ou couper le .apk et coller-le dans le dossier qui contient apktool.bat, apktool.jar, etc…
Une fois copié, retourner dans le cmd et faite la commande :
Code:
jarsigner -keystore keystore.jks -storepass PSEUDO appli.apk PSEUDO
(Veuillez à bien remplacer le appli.apk par le nom de votre appli).
Voilà, félicitations, vous avez traduit votre application !!!
Vous pouvez l’installer dans votre téléphone ou créer un fichier flashable pour le flasher dans le recovery (comme ViperTrad) ! : http://www.forum-generationmobiles.net/t79135-outil-windows-linux-creation-de-zips-flashables-applications-systeme-sonneries-etc-debutants
Pour traduire des fichiers arrays.xml et strings.xml
Pour traduire des fichiers séparément, suivez le tuto pour traduire un .apk mais au moment où il faut cliquer sur le bouton « Ouvrir le dossier de l’apk décompilé » (I1 n°4), ne cliquez pas dessus mais allez dans Fichier (I1 n°1) et cliquez sur « Ouvrir fichiers à traduire ». Il vous sera alors demandé de choisir les deux fichiers arrays.xml et strings.xml.
Pour pouvez alors suivre le tuto normalement sauf au moment de sauvegarder, le bouton « Enregistrer les fichier traduits » (I1 n°7) ne fonctionne pas dans ce cas-là, il faut utiliser le bouton en dessous « Enregistrer les fichiers traduits sous ».
Pour ouvrir une autre base de données et donc utiliser une autre base que celle d’origine
Même tuto sauf qu’il faut cliquer sur « Ouvrir une autre base de données » (I1 n°6) avant de cliquer sur « Traduire avec la base de données » (I1 n°11). L’enregistrement ne change pas, le bouton « Enregistrer la base de données » (I1 n°8) enregistre dans le programme et celui d’en dessous enregistre où vous voulez.
Pour fusionner deux bases de données
Vous pouvez utiliser le bouton « Fusion de bases de données » (I1 n°12). Cela permet de fusionner deux bases différentes. Si des fonctions/menus identiques ont des traductions différentes, il vous sera demander de choisir laquelle de ces traductions vous voulez garder.
Raccourcis
Pour sauvegarder rapidement, j’ai intégré le raccourci Ctrl+S qui sauvegarde les fichiers et la base de données (les deux boutons « enregistrer » du dessus).
Pour avancer plus rapidement dans les lignes/menus à traduire, j’ai mis des raccourcis dans le menu Edition (I1 n°2), dans ce menu, vous pouvez avancer/reculer de 10 lignes ou aller au début/à la fin.
Vous pouvez faire entrer pour valider votre traduction, permet d'aller plus vite !
Choix de l’application et support par AllTrad de celle-ci
Le choix de l’application permet de mettre en place des filtres pour les menus et pour les fonctions. Par exemple, dans VenomTweaks, on a des menus contenant seulement des valeurs qui sont utile pour l’appli, il ne faut pas que ces valeurs soit modifié donc j’ai mis un filtre pour que l’on ne puisque pas toucher à ces menus. Pareil pour les lignes du strings.xml. Si vous choisissez « Autre », il n’y a pas de filtres donc il peut y avoir des menus ou des lignes qu’il ne faut pas toucher !
Choix de la langue
Cela permet simplement de choisir la base de données dans la bonne langue, de correctement l’enregistrer et aussi d’enregistrer les traductions au bon endroit dans l’application.
Les fonctions intéressantes et invisibles
-Si vous mettez une traduction vide (donc une case vide) dans la case de traduction et que vous valider, il n’y aura pas de remplacement dans les fichiers. Valable dans les deux .xml.
-S’il n’y a pas de changement dans les fichiers si vous laissez un menu tel qu’elle.
-Vous pouvez mettre des apostrophes et des guillemets, AllTrad s’occupe de copier correctement les lignes dans les fichiers pour que apktool puisque recompiler les apk !
-Plusieurs protections contre le crash de AllTrad lorsqu’un des fichiers n’est pas correctement construit. Mais je peux pas tout prévoir donc il peut y avoir des crashs.
-Info-bulles pour expliquer brièvement les éléments du programme.
Remarque : Vous pouvez faire des pauses entre deux traductions, il suffit de faire Ctrl+S et vous pouvez fermer le programme ! Il suffira de rouvrir AllTrad, de sélectionner le dossier de l’apk ou les fichiers et de faire « Traduire avec la base de données » !
Remarque 2 : AllTrad a été écrit en C++ et avec Qt. Les codes sources sont disponible sur GitHub.
Dernière édition par alexandreou le Mar 18 Juil 2017 - 15:50, édité 10 fois (Raison : Petites présisions)