Dictconv est un programme pour convertir un format de fichier de dictionnaire en un autre format.
Il a été codé par l'auteur de ktranslator et de wordtrans.
Le programme détecte le type de dictionnaire par ses extensions :
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.
Il suffit d'installer le paquet dictconv.
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 : 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
Dans un terminal, l'usage est de type :
$ dictconv -o fichier_cible.ext fichier_original.ext
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.
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 :
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.
#!/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