Bienvenue invité. SVP enregistrez vous pour être membre.
:: Connexion
Identifiant :

Mot de passe :

Se souvenir de moi



Mot de passe perdu ?

Inscrivez-vous !
:: Recherche
:: Menu Principal

Parcourir ce sujet:   1 Utilisateur(s) anonyme(s)





Importer/Remplacer des entrées *.ini
Aspirant
Inscrit:
04/07/2016 15:43
De France
Groupe:
Utilisateurs enregistrés
Post(s): 50
Hors Ligne
Hello,
Je cherche à porter la traduction d'un jeu dans son extension.

Ça ressemble à ça.
[Pocket_PrimaryWeapon]
PocketFriendlyName=Arme principale

[Pocket_PrimaryAmmo]
PocketFriendlyName=Munitions principales

[Pocket_SecondaryWeapon]
PocketFriendlyName=Munitions de réserve


[Pocket_PrimaryWeapon]
PocketFriendlyName=Main Weapon

[Pocket_PrimaryAmmo]
PocketFriendlyName=Main Ammo

[Pocket_SpecialAmmo]
PocketFriendlyName=Special Ammo

[Pocket_SecondaryWeapon]
PocketFriendlyName=Secondary Ammo


Seulement, il existe au moins 4000 lignes à traduire, dont 80% sont déjà faites dans deux fichiers "ini".
Y'a t'il un moyen de remplacer les entrées qui sont identiques entre les deux fichiers, même si il y a d'autres entrées qui se sont incrustées de manière automatique ?

Pour avoir un résultat final comme suit
[Pocket_PrimaryWeapon]
PocketFriendlyName=Arme Principale

[Pocket_PrimaryAmmo]
PocketFriendlyName=Munitions principales

[Pocket_SpecialAmmo]
PocketFriendlyName=Special Ammo

[Pocket_SecondaryWeapon]
PocketFriendlyName=Munitions de réserve


Ça me sauverait deux ou trois jours de ma vie ^^


Merci.

Contribution le : 26/07/2018 22:26
_________________
MSI GT70 2PC Dominator
Intel Core i7-4800MQ Quad-Core 2.7 GHz
NVIDIA GeForce GTX 870M
Windows 7
Créer un fichier PDF de la contribution Imprimer


Re: Importer/Remplacer des entrées *.ini
Expert
Inscrit:
21/02/2007 22:15
Groupe:
Utilisateurs enregistrés
Post(s): 2044
Hors Ligne
Salut .o/

J'ai une solution, je pense, en tout cas ça a fonctionné avec les exemples fournis et j'ai obtenu un résultat conforme à ce que tu indiques.

Il y a quelques étapes préparatoires par contre, notamment trouver un caractère qui n'existe pas dans les fichiers d'origine.

J'ai choisi le caractère "*"

D'abord, j'ai sauvegardé :
- le contenu de ton premier bloc sous le nom "vf_1.txt"
- le contenu du second bloc sous le nom "vo_x.txt"

Ensuite, avec Notepad2, j'ai fait un rechercher/remplacer, avec l'option "Transform Backslashes" activée, de "]\r\nPocket", par "]*Pocket"

et sauvegardé les deux fichiers, de sorte à ce que toutes les lignes contenant du texte se présentent sous la forme :
[nom de l'objet]*PocketFriendlyName=nom affiché

J'ai donc dans vf_1.txt :

[Pocket_PrimaryWeapon]*PocketFriendlyName=Arme principale

[Pocket_PrimaryAmmo]*PocketFriendlyName=Munitions principales

[Pocket_SecondaryWeapon]*PocketFriendlyName=Munitions de réserve


et dans vo_x.txt :
[Pocket_PrimaryWeapon]*PocketFriendlyName=Main Weapon

[Pocket_PrimaryAmmo]*PocketFriendlyName=Main Ammo

[Pocket_SpecialAmmo]*PocketFriendlyName=Special Ammo

[Pocket_SecondaryWeapon]*PocketFriendlyName=Secondary Ammo


Puis, j'ai écrit puis exécuté ce script batch :
SET BaseFile=vf_1.txt
SET ExpansionFile
=vo_x.txt
SET NewVF
=vf_x.txt
IF EXIST %NewVFDEL %NewVF%

for /
"tokens=1,2 delims==" %%a in (%ExpansionFile%) do (
    
FIND "%%a=" %BaseFile% >NUL
    
IF NOT ERRORLEVEL 1 (
            
REM chaîne trouvée dans le fichier VF de baseon la recopie telle quelle
            
FOR /"tokens=1,2 delims==" %%C in ('FINDSTR /C:"%%a=" %BaseFile%') DO ECHO %%C=%%D>>%NewVF%
        ) ELSE (
            
REM chaîne non trouvéeon garde celle du fichier de l'extension
            ECHO %%a=%%b>>%NewVF%
    )
)


Ce qui m'a donné un fichier vf_x.txt contenant :

[Pocket_PrimaryWeapon]*PocketFriendlyName=Arme principale
[Pocket_PrimaryAmmo]*PocketFriendlyName=Munitions principales
[Pocket_SpecialAmmo]*PocketFriendlyName=Special Ammo
[Pocket_SecondaryWeapon]*PocketFriendlyName=Munitions de réserve


Je l'ai alors ouvert dans Notepad2, puis ai effectué les deux "rechercher/remplacer" suivants, toujours avec l'option "Transform backslashes" activée :

- d'abord remplacer "\r\n" par "\r\n\r\n»
- puis remplacer "*" par "\r\n"

Edit : d'ailleurs on doit pouvoir se passer du "caractère unique" en fait, et se débrouiller en recherchant/remplaçant juste les "]"…

Contribution le : 27/07/2018 07:08
Créer un fichier PDF de la contribution Imprimer


Re: Importer/Remplacer des entrées *.ini
Aspirant
Inscrit:
04/07/2016 15:43
De France
Groupe:
Utilisateurs enregistrés
Post(s): 50
Hors Ligne
Rah ! Merci MacGyver ! Ça c'est le genre de solution que j'adore totalement !!
Du coup, le portage s'est bien passé. Il me semble juste que j'ai du bidouiller un peu à ma façon par rapport aux \r\n, car il y avait quelques exceptions.

En revanche je suis tombé sur une exception, car il se trouve que quelques entrées étaient comme ça

[Menu_Campaign]
Context=Campagne
Hint=Jouez à la campagne solo.

donc j'ai fait ça, pareil côté vo
[Menu_Campaign]*Context=Campagne*Hint=Jouez à la campagne solo.

et je me suis retrouvé avec ça après lui avoir mis un coup de .bat
[Menu_Campaign]
Context=Campagne
Hint=

Donc, la perte de l'indice ou autre commande en dessous.

J'ai tenté de bidouiller avec un second sybole mais entre les deux fichiers, je m'y perds, j'ai du recommencer trois fois. Une idée ?

En revanche, le bat ne savait pas me dire si le fichier était trouvé ou non, il m'affichait tout la section

REM chaîne trouvée dans le fichier VF de baseon la recopie telle quelle
            
FOR /"tokens=1,2 delims==" %%C in ('FINDSTR /C:"%%a=" %BaseFile%') DO ECHO %%C=%%D>>%NewVF%
        ) ELSE (
            
REM chaîne non trouvéeon garde celle du fichier de l'extension
            ECHO %%a=%%b>>%NewVF%



Mais sinon ça marche au top pour les lignes solo, ça c'est cool :) merci !

Edit: Madré de dios, je l'ai pas vu venir celle la.

Certaines des entrées dans la vo ont des ajouts qui ne sont pas dans la vf, et donc perdues.

Exemple
VO

[Menu_MultiPlayer]
Context=Multiplayer
Hint=Play Multiplayer
About=NETVALID_MP

VF
[Menu_MultiPlayer]
Context=Multiplayer
Hint=Jouez en Multiplayer


Et je devrais donc aussi pouvoir me retrouver avec ça...
[Menu_MultiPlayer]
Context=Multiplayer
Hint=Jouez en Multiplayer
About=NETVALID_MP

Y a peu d'exceptions, mais certains fichiers de langues touchent des entrées en liées avec les pilotes graphiques. Je peux donc pas me permettre d'en rater une :/

Contribution le : 27/07/2018 14:35
_________________
MSI GT70 2PC Dominator
Intel Core i7-4800MQ Quad-Core 2.7 GHz
NVIDIA GeForce GTX 870M
Windows 7
Créer un fichier PDF de la contribution Imprimer


Re: Importer/Remplacer des entrées *.ini
Expert
Inscrit:
21/02/2007 22:15
Groupe:
Utilisateurs enregistrés
Post(s): 2044
Hors Ligne
OK, ça complique pas mal la tâche, je ne suis pas certain d'être à la hauteur pour automatiser la prise en charge de ce genre d'exceptions.

Enfin j'ai aussi idée qu'il doit y avoir moyen de se débrouiller avec un séparateur supplémentaire/distinct du précédent pour remplacer les retours à la ligne qui ne sont pas derrière un "]", mais il faudra que je regarde ça au calme une fois rentré à la maison…

Contribution le : 27/07/2018 15:51
Créer un fichier PDF de la contribution Imprimer


Re: Importer/Remplacer des entrées *.ini
Aspirant
Inscrit:
04/07/2016 15:43
De France
Groupe:
Utilisateurs enregistrés
Post(s): 50
Hors Ligne
Je vais tenter ça, c'est pas bête comme idée. Mais une me vient en tête, inverser le processus et ajouter les clées non existantes de la vo vers la vf, et reprendre le processus à la première étape, et actualiser de la vf à la vo, comme initialement prévu ? Au pire, après tout le gain de temps que tu me fais, je pense que je pourrais toujours aller me casser la tête à trouver un moyen de les repérer en comparant et importer à la main... tant que je peux ajouter la seconde ligne automatiquement, ça me demanderait plus de temps d'ajouter les lignes suivantes que de d'importer les manquantes.

Contribution le : 27/07/2018 16:01
_________________
MSI GT70 2PC Dominator
Intel Core i7-4800MQ Quad-Core 2.7 GHz
NVIDIA GeForce GTX 870M
Windows 7
Créer un fichier PDF de la contribution Imprimer


Re: Importer/Remplacer des entrées *.ini
Expert
Inscrit:
21/02/2007 22:15
Groupe:
Utilisateurs enregistrés
Post(s): 2044
Hors Ligne
Bon, ça m'a pris du temps, mais je pense avoir enfin réussi ^^'

Désormais le script requiert impérativement que les commandes "tr" et "sed" soient accessibles via le PATH (ou dans le répertoire courant).

Ces commandes (et leurs dépendances) sont disponibles pour Windows via http://gnuwin32.sourceforge.net/packages/coreutils.htm (tr est dans le package) et http://gnuwin32.sourceforge.net/packages/sed.htm (lui a droit à son package dédié)

Il en a besoin afin qu'il ne te soit pas nécessaire de faire du rechercher/remplacer avec Notepad2. Le script créera des fichiers temporaires lui-même, on pourra donc lui fournir directement des fichiers comme par exemple ceux-ci :

vf_1.txt
[Pocket_PrimaryWeapon]
PocketFriendlyName=Arme principale

[Pocket_PrimaryAmmo]
PocketFriendlyName=Munitions principales

[Pocket_SecondaryWeapon]
PocketFriendlyName=Munitions de réserve

[Menu_MultiPlayer]
Context=Multiplayer
Hint
=Jouez en Multiplayer


vo_x.txt
[Pocket_PrimaryWeapon]
PocketFriendlyName=Main Weapon

[Pocket_PrimaryAmmo]
PocketFriendlyName=Main Ammo

[Pocket_SpecialAmmo]
PocketFriendlyName=Special Ammo

[Pocket_SecondaryWeapon]
PocketFriendlyName=Secondary Ammo 

[Menu_MultiPlayer]
Context=Multiplayer
Hint
=Play Multiplayer
About
=NETVALID_MP


Attention : il ne vérifie pas que les exécutables requis sont présents, donc il affichera sûrement plein d'erreurs et ne fonctionnera pas s'ils sont manquants. Je prendrai peut-être le temps de le rendre un peu plus propre de ce point de vue, à l'occasion.


Edité : apparemment la balise code du forum n'aime pas trop mes "\n", donc le script est ici.

Ré-édité : en relisant le script je me dis que je devrais sûrement utiliser plus de variables, en leur donnant des noms plus explicites, ce serait plus lisible/facile à suivre…

Contribution le : 27/07/2018 22:59
Créer un fichier PDF de la contribution Imprimer


Re: Importer/Remplacer des entrées *.ini
Aspirant
Inscrit:
04/07/2016 15:43
De France
Groupe:
Utilisateurs enregistrés
Post(s): 50
Hors Ligne
Wow, eh bah, ça en fait de la ligne. Je ne pensais pas qu'il était possible de faire autant de choses avec un batch. Y a de quoi apprendre :o
Je vais passer une partie de la nuit de la dessus et te tenir au courant.
Merci beaucoup en tout cas

Manquerait pas de laisser ton pseudo dans le readme :p

Contribution le : 28/07/2018 01:15
_________________
MSI GT70 2PC Dominator
Intel Core i7-4800MQ Quad-Core 2.7 GHz
NVIDIA GeForce GTX 870M
Windows 7
Créer un fichier PDF de la contribution Imprimer


Re: Importer/Remplacer des entrées *.ini
Aspirant
Inscrit:
04/07/2016 15:43
De France
Groupe:
Utilisateurs enregistrés
Post(s): 50
Hors Ligne
Ça s'est dans l'ensemble bien passé. Y a eu quelques petits couacs à causes de lignes commes

[Snipers]
Text=[u][b]LES SNIPERS[b][u]||[b][k=ShowViewport Sniper][b] - Pour ouvrir la camera du sniper passer d'un sniper à l'autre|[b][k=ControlViewportAlias][b] - Pour contrôler le sniper|
[
b][k=HideViewport][b] - Fermer la caméra||Pendant que vous contrôlez le sniper :|[b][k=Fire][b] - Pour tirer au fusil|
[
b][k=OpenGraphicCommandInterface RightMouseAlias][bou [b][k=ToggleZoom][b]- Augmenter/Diminuer le grossissement de la lunette||Les caméras des snipers fonctionnent comme celles des agents à quelques exceptions prèsQuand la caméra sniper est activée après avoir appuyé sur [b][k=ControlViewportAlias][b],
vous contrôlez directement le fusil du sniperVous pouvez changer la vue et tirer en appuyant sur [b][k=Fire][b]. Le bouton droit de la souris contrôle le zoom.|Appuyer sur [b][k=ControlViewportAlias][bréduit la caméra et vous ramène à votre personnage.|
|[
c=15CC11]Tirez sur la cible d'entraînement pour continuer.


Ce qui a donné des retour à la ligne partout (et j'ai du en laisser sinon ça détruisait la page web). Y a également eu quelques @ qui sont restés, d'autres entrées totalement vides mais très du coup, facilement repérables. Quelques coups de rechercher/remplacer, et j'ai un fichier totalement fonctionnel et qui en plus, pourra également porter les autres packs de langues.
J'aurais du penser à uploader les deux fichiers dès le départ plutôt que de laisser des morceaux de codes a droite à gauche je pense. Mais néanmoins, ceci me succite un intéret pour le bat.

Merci beaucoup pour ton aide envers la communauté SWAT 4

Contribution le : 28/07/2018 15:06
_________________
MSI GT70 2PC Dominator
Intel Core i7-4800MQ Quad-Core 2.7 GHz
NVIDIA GeForce GTX 870M
Windows 7
Créer un fichier PDF de la contribution Imprimer


Re: Importer/Remplacer des entrées *.ini
Expert
Inscrit:
21/02/2007 22:15
Groupe:
Utilisateurs enregistrés
Post(s): 2044
Hors Ligne
OK, effectivement si le texte contient des "|" ou des "/" il y a des chances que ça cause des problèmes.
Possiblement aussi les caractères comme "&", "%" ou "!" qui ont un rôle particulier dans les fichiers .bat.

Contribution le : 28/07/2018 20:24
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe    
Message:*


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]