Manipulation fichier Linux

Fermé
Deth-Owl Messages postés 54 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 22 novembre 2024 - Modifié le 23 janv. 2023 à 11:22
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 - 23 janv. 2023 à 14:18

Bonjour à tous.

J'espère que vous allez bien et je vous remercie par avance pour l'aide que vous m'apporterez.

Contexte :

Pendant mon temps libre, je me suis mis à aider dans la traduction de jeux de type visual novel. Aucun soucis pour extraire les dialogues, les traduire..etc. Le jeu fonctionne parfaitement.

Cependant, j'ai pour l'instant traduis des jeux relativement cours, ce qui n'est pas le cas du jeu actuel qui fait environs 8000 lignes de dialogue par chapitre (5 chapitres).

Via Linux et quelques commandes "sed" j'ai extrait uniquement les dialogues que j'ai copiés dans un autre fichier pour me permettre de les traduire aisément.

Problème :

Voici ce que je possède actuellement :

Le script du jeu contenant les dialogues sous le format suivant :

ligne 1 : translate French <nom d'un fichier>                 # Ici se trouve le fichier dans lequelle se trouve le vrai dialogue, en gros, je ne dois pas   toucher à cette ligne

Ligne 2 :

Ligne 3     mc "hello"                                                    # Ici se trouve le personne qui prononce la phrase puis le texte en question en ""

Ligne 4 :

Ce bloc se répête pour chaque dialogue, le fichier fait en tout 28 099 lignes.

J'ai ensuite un fichier .txt à côté contenant les phrases traduites (que j'ai placé exactement sur les mêmes ligne) :

Ligne 1 :

Ligne 2

Ligne 3 : Bonjour

Ligne 4 :

J'ai essayé énormément de chose via des scripts python, des sed, awk, cut...etc Je m'en sors en linux mais j'ai toujours eu du mal avec la manipulation de fichier complexe ou l’utilisation de sed.

Les 2 solutions que je vois :

  - Chercher dans le script la chaîne de caractère entre "" et la remplacer par le texte se situant sur la même ligne dans l'autre fichier

  - Modifie mon fichier de trad en rajoutant les lignes manquantes du script (le noms du personnage, les "" et les fichiers translate).

Comme dit plus haut, j'ai déjà utilisé pas mal de commande pour épurer le script de commentaire inutile qui peuvent interférer (des doublons de phrase...etc).

j'ai également mise en forme mon fichier de traduction pour que les lignes à traduire se trouve au même endroit dans les 2 fichiers pensant que cela me simplifierait la tâche.

J'ai essayé plusieurs scripts, mais la plupart du temps même si ceux-ci fonctionnent, ils détruisent la mise en page du script (rajout de saut de ligne, espace..etc je précise que le format du script est très sensible aux tabulations ou autre.)

Je remercie d'avance ceux qui me liront.

A voir également:

2 réponses

jee pee Messages postés 40566 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 décembre 2024 9 460
23 janv. 2023 à 14:00

Bonjour,

Comme tu indiques des soucis sur la prise en compte de la mise en page, saut de ligne, tabulation, ... ton exemple sur 5 lignes ne semble pas pertinent pour bien étudier la question.

Il serait mieux pour quelqu'un qui s’intéresserait à répondre à ta question que tu donnes des exemples des 2 fichiers, l'original et ta traduction, de quelques dizaines, centaines, de lignes représentatives des diverses situations rencontrées. Utiliser par exemple cjoint.com pour déposer les fichiers et donner les liens générés.


0
mamiemando Messages postés 33443 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 19 décembre 2024 7 811
23 janv. 2023 à 14:18

Bonjour,

Pour information, il existe des scripts de traduction comme translate-shell qui pourraient t'intéresser. Il est même disponible sous Debian via APT :

sudo apt update
sudo apt install translate-shell

Comme le lien précédent l'indique, il s'interface avec de nombreux moteurs de traduction (dont google translate) qui te permettrait sans doute de gagner énormément de temps (il faudra juste sans doute retaper quelques phrases).

L'idéal serait d'utiliser deepl, qui selon moi est le meilleur traducteur en ligne. Malheureusement, son support va être abandonné dans translate-shell, car deepl interdit un nombre de requêtes trop important (voir ici). Ceci dit, tu peux quand même le faire à la main sur le site web (il faudra juste découper ton texte en bloc car tu ne pourras pas mettre les 28 000 lignes d'un coup), je pense que ça devrait passer.

Pour t'en dire plus, il nous faudrait un extrait de fichier d'entrée et le résultat attendu.

Bonne chance

0