Table des matières

, ,

Dictconv

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.

Prérequis

Installation

par les dépôts officiels (recommandé)

Il suffit d'installer le paquet dictconv.

par compilation

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

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 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

Références


Contributeur : Tartanpion