Contenu | Rechercher | Menus

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.

Il semble que sous Ubuntu 14.04 dictconv ne fonctionne plus correctement en tout cas lors de la conversion de dictionnaire BGL. Voir ici le rapport de bug.

Pré-requis

Installation

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

Références


Contributeur : Tartanpion



Le contenu de ce wiki est sous licence : CC BY-SA v3.0