Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
dictconv [Le 15/12/2011, 15:17] 127.0.0.1 modification externe |
dictconv [Le 18/03/2023, 10:40] (Version actuelle) L'Africain nettoyage |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Jaunty dictionnaires_encyclopedies BROUILLON}} | + | {{tag>Jammy dictionnaires_encyclopedies}} |
---- | ---- | ||
====== Dictconv ====== | ====== Dictconv ====== | ||
- | Dictconv est un programme pour convertir un format de fichier de dictionnaire en un autre format.\\ | + | Dictconv est une application pour convertir un format de fichier de dictionnaire en un autre format.\\ |
Il a été codé par l'auteur de ktranslator et de wordtrans.\\ | Il a été codé par l'auteur de ktranslator et de wordtrans.\\ | ||
Le programme détecte le type de dictionnaire par ses extensions :\\ | Le programme détecte le type de dictionnaire par ses extensions :\\ | ||
- | * .bgl pour les dictionnaires Babylon\\ | + | * .dct pour les dictionnaires Sdictionary; |
- | * .dct pour les dictionnaires Sdictionary\\ | + | * .dic pour les dictionnaires plain text; |
- | * .dic pour les dictionnaires plain text\\ | + | * .ifo pour les dictionnaires [[:StarDict]]; |
- | * .ifo pour les dictionnaires [[StarDict]]\\ | + | * .index pour les dictionnaires DICT; |
- | * .index pour les dictionnaires DICT\\ | + | * .tei pour les dictionnaires Freedict (XML format). |
- | * .tei pour les dictionnaires Freedict (XML format)\\ | + | Il convertit des dictionnaires de Freedict, Sdictionary et Stardict vers les dictionnaires de DICT, plain text et StarDict. |
- | A l'heure actuelle (version 0.2), il convertit des dictionnaires de Babylon, Freedict, Sdictionary et Stardict vers les dictionnaires de DICT, plain text et StarDict. | + | |
- | + | <note warning>Dictconv ne fonctionne plus correctement en tout cas lors de la conversion de dictionnaire BGL. Voir [[https://bugs.launchpad.net/ubuntu/+source/dictconv/+bug/347695|ici]] le rapport de bug.</note> | |
- | ===== Prérequis ===== | + | ===== Pré-requis ===== |
- | + | ||
- | * Avoir installé [[Stardict]] ou [[ktranslator]]. | + | * Disposer des [[:sudo|droits d'administration]]. |
- | * Avoir installé [[apt://stardict-tools|stardict-tools]]. | + | * Disposer d'une connexion à Internet configurée et activée. |
+ | * Avoir installé [[:Stardict]]. | ||
+ | * Avoir installé [[apt>stardict-tools]]. | ||
===== Installation ===== | ===== Installation ===== | ||
- | ====par les dépôts officiels (recommandé)==== | ||
- | Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt://dictconv|dictconv]]**. | + | Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>dictconv]]**. |
- | |||
- | ====par compilation==== | ||
- | * Avoir installé libxml2-dev (obligatoire pour la compilation) | ||
- | * Avoir installé checkinstall | ||
- | |||
- | Il va falloir compiler le programme dont les sources se trouvent ici : http://sourceforge.net/project/showfiles.php?group_id=146506. | ||
- | On utilisera checkinstall pour créer un paquet au format ".deb" pour pouvoir le désinstaller facilement. Pour tout renseignement sur la compilation voir : [[:tutoriel:compilation]]. | ||
- | |||
- | On télécharge le fichier sur le bureau. On le décompresse en double cliquant dessus, il se crée un répertoire dictconv-0.2 sur le bureau. | ||
- | On ouvre un terminal et on se met dans le répertoire dictconv-0.2 par la commande : | ||
- | $ cd /home/nom_de_l'utilisateur/Desktop/dictconv-0.2 | ||
- | Puis\\ | ||
- | $ ./configure | ||
- | $ make | ||
- | $ sudo checkinstall | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
- | Dans un terminal, l'usage est de type : | + | Dans un terminal, l'usage est de type : <code>dictconv -o fichier_cible.ext fichier_original.ext</code> |
- | $ dictconv -o fichier_cible.ext fichier_original.ext | + | Vous trouverez des dictionnaires à cette [[https://drive.google.com/drive/folders/0BzrQwK2v03aKWjlsQ3NsaWJKalU?resourcekey=0-DtgqOJiVFSDI231ugoQgiQ|adresse]].\\ |
- | + | ||
- | On prend pour exemple un dictionnaire au format .bgl à cette adresse http://www.babylon.com/gloss/glossaries.php \\ | + | |
Babylon_English_French.BGL que l'on télécharge sur le bureau. | Babylon_English_French.BGL que l'on télécharge sur le bureau. | ||
- | **1) Procédé par conversion directe (pour le moment encore beaucoup d'erreurs)** | ||
- | |||
- | Pour convertir un fichier ".bgl" en fichier compatible stardict ".ifo".\\ | ||
- | $ cd ~/Desktop | ||
- | $ dictconv -o Babylon_English_French.ifo Babylon_English_French.BGL | ||
- | |||
- | On obtient donc trois nouveaux fichiers sur le bureau :\\ | ||
- | * Babylon_English_French.dict | ||
- | * Babylon_English_French.idx | ||
- | * Babylon_English_French.ifo | ||
- | |||
- | On crée un nouveau répertoire par exemple "babylon_eng_fr", on les place dedans et on met celui-ci dans le répertoire dic de stardict. | ||
- | |||
- | En convertissant vers StarDict et DICT, le fichier .dict n'est pas compressé. Si vous voulez compresser ce fichier, utiliser le programme dictzip : après vous êtres mis dans le bon répertoire par ex :\\ | ||
- | $ cd /home/nom_de_l'utilisateur/Desktop/babylon_eng_fr | ||
- | |||
- | on lance la commande de type :\\ | ||
- | |||
- | dictzip fichier_cible.dict\\ | ||
- | |||
- | Soit ici\\ | ||
- | $ dictzip Babylon_English_French.dict | ||
- | |||
- | |||
- | **2) Procédé par conversion indirect** | ||
- | |||
- | Suivant les dictionnaires il se produit des erreurs de conversion c'est le cas avec le dictionnaire pris en exemple ! | ||
- | |||
- | Convertir d'abord le fichier .bgl en format plain text, le modifier si nécessaire grâce à un éditeur de texte [[:gedit]] puis le retransformer en format stardict par stardict-editor. On prend toujours en exemple le même fichier .bgl mis sur le bureau. | ||
- | |||
- | a) On convertit en plain text (".dic") | ||
- | |||
- | Dans un terminal : | ||
- | |||
- | $ cd ~/Desktop | ||
- | $ dictconv -o Babylon_English_French.dic Babylon_English_French.BGL | ||
- | |||
- | b) On corrige les fautes : | ||
- | |||
- | Le dictionnaire est formé d'abord du mot, suivit d'une tabulation puis la définition.\\ | ||
- | Si la définition contient une nouvelle ligne, écrire \n.\\ | ||
- | En ouvrant le .dic avec l'éditeur de texte gedit on remarque alors la cause du problème : le mot suivi de caractères du type "$suite de chiffres$" suivit d'une tabulation.\\ | ||
- | On va utiliser la commande [[sed]] (ultimate Stream EDitor). | ||
- | On les retire dans un terminal avec : | ||
- | |||
- | $ sed 's|\$[0-9]\+\$\t|\t|' Babylon_English_French.dic > Babylon_English_French_nouveau.dic | ||
- | |||
- | |||
- | Il reste les caractères du type "œ" qui n'ont pas été correctement convertis. | ||
- | On ouvre le fichier en double cliquant le nouveau fichier avec gedit>remplacer : mettre une copie du caractère mal converti "" et le remplacer par oe (on pourrait le remplacer par œ mais comme dans la majorité des textes à traduire sera plutôt de la forme oe). Il se peut qu'il faille refaire la manoeuvre plusieurs fois par copier coller du caractère qui pose problème le œ est apparemment converti en différent type de .\\ | ||
- | Cette manœuvre sera très utile dans le cas du dictionnaire français-anglais.\\ | ||
- | Il vaut mieux faire une relecture "en diagonale" pour retrouver d'autres erreurs du type quelques lettres mises en majuscule "ÉE" pour ée, rarement une apostrophe sous forme , des mots mis en majuscule quand ils commencent par un "à"). Et quelques erreurs dans les articles.\\ | ||
- | Ex : ligne 33 Australasia, ligne 24 jacobinic, ligne 149605,73577,147429,147257,147346... | ||
- | |||
- | On peut pour s'aider afficher les lignes dans les préférences de gedit.\\ | ||
- | |||
- | c) On convertit le format plain text en format stardict : | ||
- | |||
- | Avec stardict-tools qu'on lance dans un terminal. | ||
- | |||
- | $ stardict-editor | ||
- | |||
- | Dans l'onglet compile on indique le chemin du ".dic", on laisse le format tab file en bas et on clique sur build.\\ | ||
- | S'il y a des erreurs on peut noter les lignes en cause et les rechercher en ouvrant à nouveau le ".dic" avec gedit : en faisant rechercher , aller à la ligne puis entrée. On peut corriger "à la main" puis refaire une nouvelle conversion.\\ | ||
- | |||
- | ex : ligne 72621 avec une mauvaise tabulation | ||
- | |||
- | Le dictionnaire par cette méthode est directement compressé. | ||
- | |||
- | |||
- | ** Automatisation de la méthode indirecte ** | ||
- | |||
- | Le script suivant permet d'automatiser l'essentiel de la méthode indirecte ci-dessus. | ||
- | Avec sed, on devrait pouvoir aussi gérer les cas particuliers. | ||
- | |||
- | <code> | ||
- | #!/bin/bash | ||
- | ## Nom de ce script: convert-bgl | ||
- | |||
- | ## Pour exécuter ce script, l'utilisateur courant | ||
- | ## doit pouvoir écrire dans le dossier /usr/share/stardict/dic/ | ||
- | ## Pour cela, soit il faut lancer ce script en root (c'est risqué), soit faire ceci: | ||
- | # sudo chown $USER:$USER /usr/share/stardict/dic/ | ||
- | |||
- | ## Rendre ce script executable avec: | ||
- | # chmod a+x ./convert-bgl | ||
- | ## Pour executer ce script, le mettre dans le dossier où sont | ||
- | ## stockés les fichiers .BGL et faire: | ||
- | # ./convert-bgl | ||
- | |||
- | for i in $(ls *.BGL) | ||
- | do | ||
- | # on enleve l'extension '.BGL' au nom de fichier | ||
- | DICOACONVERTIR=${i%.BGL} | ||
- | dictconv -o $DICOACONVERTIR-tmp.dic $DICOACONVERTIR.BGL | ||
- | sed 's|\$[0-9][0-9]*\$\t|\t|'<$DICOACONVERTIR-tmp.dic>$DICOACONVERTIR.dic | ||
- | /usr/lib/stardict-tools/tabfile $DICOACONVERTIR.dic | ||
- | rm -I $DICOACONVERTIR.dic $DICOACONVERTIR-tmp.dic | ||
- | mkdir -p /usr/share/stardict/dic/$DICOACONVERTIR | ||
- | mv --force $DICOACONVERTIR.*i* /usr/share/stardict/dic/$DICOACONVERTIR | ||
- | done | ||
- | </code> | ||
- | |||
- | ===== Références ===== | ||
- | |||
- | * http://ktranslator.sourceforge.net/index.html | ||
- | * http://sed.sourceforge.net/sed1line.txt | ||
- | * http://www.grymoire.com/Unix/Regular.html | ||
- | * http://www.grymoire.com/Unix/Sed.html#uh-1 | ||
---- | ---- |