Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 19:31 Sujet du message: Internationnalisez vos cartes (multi-langues) |
|
|
Ce tutoriel vous explique comment mettre vos cartes en plusieurs langues de façon transparente pour l'utilisateur.
Explications théoriques
Après avoir étudié le format d'archivage mopaq utilisé par warcraft3 qui sert également pour ses cartes, je me suis rendu compte que les fichiers sont identifiés et pour les retrouver il utilise une table de hashage pour le nom du fichier, et qu'avec cela on a les données de langue (anglais, français, ...), et de plate-forme (Windows, Mac).
Qu'est-ce que cela veut dire?
Cela veut dire qu'un même fichier peut avoir plusieurs noms différends, ou deux fichiers peuvent avoir le même nom pourvu qu'ils aient la langue ou la plateforme qui ne soit pas pareil.
A quoi cela sert-il?
Warcraft charge en priorité le fichier de votre langue, sinon il prend celui de la langue par défaut. Vous pouvez avoir un fichier de même nom pour chaque langue.
Objectif du tutorial
Les cartes sont composées d'un fichier de texte externe qui se nomme war3map.wts
On va donc se servir de ces propriétés pour avoir deux (ou plus) fichiers war3map.wts pour chaque langue, on va mettre par défaut en anglais et on va en définir un pour le français.
tutorial
Traduction des textes
- Ouvrez votre carte avec WinMPQ et extrayez war3map.wts.
- Traduisez-le en anglais
Maintenant on va spécifier que notre fichier originale est en français
- dans WinMPQ clic-droit sur war3map.wts et "Change locale id'
Il vous propose d'entrer un entier, il s'agit tout simplement de l'id de la langue suivant le LANGID de Windows. Vous pouvez retrouvez la liste ici.
On y voie French 040c, c'est de l'hexadécimale on utilise donc notre calculatrice windows pour convertir en décimales et on trouve 1036.
Spécifiez donc 1036 à WinMPQ et validez, dans la liste des fichiers vous devriez voir à droite de war3map.wts 1036.
Ajoutez le fichier traduit à votre archive, par défaut cela lui attribue le locale id 0 ce qui nous convient très bien: ce fichier sera utilisé pour toutes les versions non françaises.
Supprimez le fichier (attributes).
Voilà vous possédez maintenant une carte multi-langue, sans demander à l'utilisateur et sans s'embêter avec des déclencheurs.
Tutorial mis en images:
Liste des codes locales:
Anglais (US) = 1033
Anglais (UK) = 2057
Français= 1036
Allemand = 1031
Espagnol = 1034
Italien = 1040
Tchèque = 1029
Russe = 1046
Pologne = 1045
Portugais (Brazilian) = 1046
Portugais (Portugal) = 2070
Turque = 1055
Japon = 1041
Korée = 1042
Chinois (Traditionnel) = 1028
Chinois (Simplifié) = 2052
Thaïlande = 1054
Pour tester avec différentes langues vous pouvez modifiez le champ LANGID du fichier config.txt qui se trouve dans war3.mpq. _________________
Dernière édition par Ayane le 04/07/11 14:15; édité 3 fois |
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 19:35 Sujet du message: |
|
|
Eh bien tu suis les instructions et cela fonctionne.
Il manque juste de mises en formes et peut être quelques captures d'écrans. _________________
|
|
Revenir en haut |
|
|
Upcios Membre actif
Inscrit le: 24 Juin 2008 Messages: 151 Sujets: 6
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 19:49 Sujet du message: |
|
|
En effet c'est très intéressant.
Dommage que le gui génère des strings extérieurs de façon "anarchique".
A chaque string, une nouvelle variable, ca suck.
Mais je me demandais y'a moyen de le faire aussi pour le war3map.j ?
Evidemment les seules différences seraient les valeurs des strings.
Et idem pour les données textes personnalisés de l'éditeur d'objet (.txt aprés avoir widgetisé la map).
Là je suppose que oui.
Par contre je doute fortement pour le script de la map. _________________
Dernière édition par Troll-Brain le 02/07/08 20:04; édité 1 fois |
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 20:34 Sujet du message: |
|
|
@Troll-Brain: Cela fonctionne pour tous les fichiers, Storm ne fait pas de différences normalement, mais cela n'a pas grand intérêt pour le script vu qu'il y a justement war3map.wts qui est fait pour stocker tes textes. _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 20:43 Sujet du message: |
|
|
Ayane a écrit: | @Troll-Brain: Cela fonctionne pour tous les fichiers, Storm ne fait pas de différences normalement, mais cela n'a pas grand intérêt vu qu'il y a justement war3map.wts qui est fait pour stocker tes textes. |
Pour l'éditeur d'objet l'intérêt est assez évident, les strings que l'on personnalise dans l'éditeur d'objet ne sont tout simplement pas dans le fichier war3map.wts.
Ils sont inaccessibles car compressés avec les données personnalisées proprement dites dans un fichier illisible (me rappelle plus le nom exact mais ca se retrouve facilement) pour un pauvre humain tant que l'on ne "widgetize" pas la map.
Mais bien sûr tu le sais déjà.
Par contre il faudrait que tu évoques ce sujet dans ton tuto.
Pour le script c'est une question de préférence.
Car j'ai horreur d'utiliser des variables strings (pour un simple affichage de texte bien sûr), je trouves cela franchement illisible.
Si c'est une map avec peu de script je préférerais changer manuellement la valeur des strings, et ca éviterait l'utilisation des fonctions GetLocalizedHotkey et GetLocalizedString, mais surtout des strings extérieurs.
C'est à dire un gain de temps de chargement de la map au minimum.
Au mieux un peu de gain de performance, certes très probablement négligeable et au dépit d'un poids accru de la map.
Mais surtout je me demandes vraiment si ca fonctionnerait et ne désynchroniserait pas.
Théoriquement ca devrait fonctionner si l'on ne fait pas n'importe quoi mais c'est un terrain assez hasardeux. _________________
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 21:08 Sujet du message: |
|
|
Les textes extérieurs sont chargés en mémoire vive au lancement de la carte, les textes dans le script à chaque fois qu'on l'utilise vérifie si cela existe déjà dans la liste (une demande d'allocation mémoire de string).
Donc en effet cela rend un peu plus long le chargement puisqu'au lieu que les textes soient chargé au cours de la carte, ils sont chargés au chargement. Mais bon ce chargement n'est que l'affaire de quelques microsecondes. _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 21:14 Sujet du message: |
|
|
Hmm ce n'est pas ce que j'ai lu, à ce qui parait on peut gagner jusqu'à 30 s, voir plus.
Quoi que peut être que ce fameux temps de chargement diminué est aussi grandement influencé par la transformation en .slk et .txt des données personnalisées de l'éditeur d'objet.
Mais honnêtement ce n'est pas mon réel souci c'est juste que ce genre de trigger, voilà quoi ...
Gui: | Trigger: Partie - Display to (All players) the text: (hello) Partie - Display to (All players) the text: (world) |
Jass: | call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_002" )
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_003" ) |
Ou faudrait réaliser un petit soft qui transforme les strings "monString" en strings extérieurs.
Du moins à partir d'un fichier texte, le script de la map war3map.j, qu'il créé 2 autres fichiers textes.
Un war3map.j modifié avec que des strings extérieurs et un autre .txt avec la valeur de ces strings.
Nul besoin de gérer l'archivage mopaq et d'automatiser totalement la tâche, ou alors challenge personnel ^^ _________________
|
|
Revenir en haut |
|
|
Darkfeyt Floodeur prématuré
Inscrit le: 22 Nov 2007 Messages: 677 Sujets: 27 Spécialité en worldedit: Jamais sortir ses projets ?
|
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 23:01 Sujet du message: |
|
|
Darkfeyt a écrit: | Même si il y a des chance que se ne soit pas toi qui l'est découvert , elle rox trop. | Comme quoi la chance ne fait pas tout ? _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 02/07/08 23:35 Sujet du message: |
|
|
Comme je l'ais dit, j'ai pensé l'appliquer au fichier war3map.wts en lisant les spécifications du format d'archivage de warcraft3 que tu peux trouver à l'adresse suivante:
http://zezula.net
Après il y en a peut-être qui y ont pensé avant moi, je n'ai pas été vérifié et de toute façon ce n'est pas brevetable, néanmoins je pense que les américains ne trouvent pas cela comme étant très intéressants.
Pour les codes de langue le lien se trouve déjà dans le tutoriel. _________________
|
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
Ayane Bot administrateur
Inscrit le: 17 Sep 2007 Messages: 2009 Sujets: 49
Médailles: 2 (En savoir plus...)
|
Posté le: 03/07/08 09:52 Sujet du message: |
|
|
Au pire tu en as pour quelques heures à traduire, ce qui est peu. On ne peut pas vraiment dire que ce soit un frein. _________________
|
|
Revenir en haut |
|
|
|