Apportez votre aide…
Dictconv
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.
Le programme détecte le type de dictionnaire par ses extensions :
- .bgl pour les dictionnaires Babylon;
- .dct pour les dictionnaires Sdictionary;
- .dic pour les dictionnaires plain text;
- .ifo pour les dictionnaires StarDict;
- .index pour les dictionnaires DICT;
- .tei pour les dictionnaires Freedict (XML format).
À 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.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
- Avoir installé Stardict.
- Avoir installé stardict-tools.
Installation
Il suffit d'installer le paquet dictconv.
Utilisation
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.
Babylon_English_French.BGL que l'on télécharge sur le bureau.
Procédé par conversion directe (pour le moment encore beaucoup d'erreurs)
Pour convertir un fichier ".bgl" en fichier compatible stardict ".ifo":
cd ~/Bureau 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, utilisez le programme dictzip. Après vous êtres mis dans le bon dossier, par exemple :
cd Bureau/babylon_eng_fr
Lancez la commande :
dictzip fichier_cible.dict
Soit ici :
dictzip Babylon_English_French.dict
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 puis le retransformer en format stardict par stardict-editor. On prend toujours en exemple le même fichier .bgl
mis sur le bureau :
- convertissez en plain text (".dic") :
cd ~/Bureau dictconv -o Babylon_English_French.dic Babylon_English_French.BGL
- Corrigez 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.
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.
Ouvrez le fichier et remplacez : mettre une copie du caractère mal converti "" et le remplacer par œ. Il se peut qu'il faille refaire la manœuvre 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.
Pour finir, convertissez 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". 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, convert-bgl
, permet d'automatiser l'essentiel de la méthode indirecte ci-dessus.
Avec sed, on devrait pouvoir aussi gérer les cas particuliers.
- convert-bgl
#!/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 exécuter 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