Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Cherche Aide pour un petit Script
#4
c'est vrai Babychou. Je suis allé sur chatgpt et voile ce qu'il a pondu. Va savoir si xa peut l'aider

Voici un script Python amélioré qui prend en charge la traduction en respectant les guillemets et l'ordre des remplacements pour éviter les conflits de traduction. Il parcourt un fichier XML et remplace les valeurs selon un dictionnaire de traduction fourni dans un fichier CSV.

Fonctionnalités du script :
  • Recherche et remplacement des valeurs entre guillemets.
  • Utilisation d'un dictionnaire de conversion provenant d'un fichier CSV.
  • Respect de l'ordre des remplacements pour éviter les conflits.

Script Python :
Code :
import xml.etree.ElementTree as ET
import csv

# Charger le dictionnaire de conversion depuis un fichier CSV
def load_translations(csv_file):
   translations = {}
   with open(csv_file, mode='r', encoding='utf-8') as file:
       reader = csv.reader(file)
       next(reader)  # Ignorer l'en-tête
       for row in reader:
           if len(row) == 2:
               original, translation = row
               translations[original.strip('"')] = translation.strip('"')
   return translations

# Appliquer la traduction au fichier XML
def translate_xml(xml_file, translations, output_file):
   tree = ET.parse(xml_file)
   root = tree.getroot()

   for elem in root.iter():
       if elem.text:
           for original, translation in sorted(translations.items(), key=lambda x: -len(x[0])):
               if f'"{original}"' in elem.text:
                   elem.text = elem.text.replace(f'"{original}"', f'"{translation}"')

   tree.write(output_file, encoding='utf-8', xml_declaration=True)

# Fichiers d'entrée et sortie
csv_file = "convertions.csv"
xml_file = "input.xml"
output_file = "translated.xml"

# Charger les traductions et appliquer au XML
translations = load_translations(csv_file)
translate_xml(xml_file, translations, output_file)

print("Traduction terminée. Le fichier traduit est enregistré sous 'translated.xml'.")

Explication :
  1. Lecture du fichier CSV : Il charge les paires "original, traduction" et les stocke dans un dictionnaire.
  2. Parcours du fichier XML : Il parcourt tous les éléments et remplace les chaînes contenues entre guillemets.
  3. Respect de l'ordre des remplacements : Les traductions sont triées de la plus longue à la plus courte pour éviter que des mots courts ne cassent des phrases complètes.
  4. Export du fichier XML traduit.

Exemple d'utilisation :
Si
Code :
convertions.csv
contient :
Code :
original,change to
"Präsenzmelder","Détecteur de présence"
"Ja","Oui"
"In der gesamten Applikation wird vom Präsenzmelder gesprochen.","Dans toute l'application, on parle de détecteur de présence."
Alors
Code :
input.xml
:
Code :
<Enumeration Text="Präsenzmelder" Value="2" />
<ParameterSeparator Text="In der gesamten Applikation wird vom Präsenzmelder gesprochen." />
Donnera
Code :
translated.xml
:
Code :
<Enumeration Text="Détecteur de présence" Value="2" />
<ParameterSeparator Text="Dans toute l'application, on parle de détecteur de présence." />

? Améliorations possibles :
  • Gérer plusieurs fichiers XML en entrée.
  • Ajouter une interface graphique pour sélectionner les fichiers.
  • Intégrer une API de traduction automatique.
Si tu veux des améliorations ou des ajustements, dis-moi ! ?
Répondre


Messages dans ce sujet
Cherche Aide pour un petit Script - par filou59 - 12/09/2024, 08:55:05
RE: Cherche Aide pour un petit Script - par cyr - 20/12/2024, 12:46:20
RE: Cherche Aide pour un petit Script - par babychou - 21/12/2024, 00:44:19
RE: Cherche Aide pour un petit Script - par RomanF - 12/03/2025, 12:07:01
RE: Cherche Aide pour un petit Script - par XeNo - 12/03/2025, 19:22:11

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)