Git Product home page Git Product logo

pyglossary's Introduction

PyGlossary

PyGlossary is a tool for converting dictionary files aka glossaries, from/to various formats used by different dictionary applications

Screenshots

Linux - (New) Gtk3-based intreface


Windows - Tkinter-based interface


Linux - command line interface

Supported formats

Format Extension Read Write
ABBYY Lingvo DSL .dsl X
AppleDict Source .xml X
Babylon .bgl X
Babylon Source .gls X
CSV .csv X X
DictionaryForMIDs X X
DICTD dictionary server .index X X
Editable Linked List of Entries .edlin X X
FreeDict .tei X
Gettext Source .po X X
Lingoes Source (LDF) .ldf X X
Octopus MDict .mdx X
Octopus MDict Source .txt X X
Omnidic X X
Sdictionary Binary .dct X
Sdictionary Source .sdct X
SQL .sql X
SQLite 3 .sqlite X X
StarDict .ifo X X
Tabfile .txt, .dic X X
TreeDict X
XDXF .xdxf X
xFarDic .xdb X X

Requirements

PyGlossary uses Python 3.x, and works in practically all operating systems. While primarilly designed for GNU/Linux, it works on Windows, Mac OS X and other Unix-based operating systems as well.

As shown in the screenshots, there are multiple User Interface types, ie. multiple ways to use the program.

  • Gtk3-based interface, uses PyGI (Python Gobject Introspection) You can install it on:

    • Debian: apt-get install python3-gi
    • openSUSE: zypper install python3-gobject
    • Fedora: yum install python3-gobject
    • Archlinux: pacman -S python-gobject
  • Tkinter-based interface, works in the lack of Gtk. Specially on Windows where Tkinter library is installed with the Python itself. You can also install it on:

  • Command-line interface, works in all operating systems without any specific requirements, just type:

    python3 pyglossary.pyw --help

    You may have to give --no-progress-bar option in Windows when converting glossaries (because the progress bar does not work properly in Windows command window)

When you run the program without any command line arguments or options, PyGlossary tries to find PyGI, if it's installed, opens the Gtk3-based interface, if it's not, tries to find Tkinter and open the Tkinter-based interface. And exits with an error if neither are installed.

But you can explicitly determine the user interface type using --ui, for example:

python3 pyglossary.pyw --ui=gtk

Or

python3 pyglossary.pyw --ui=tk

Format-specific Requirements

  • Reading from XDXF

    sudo pip3 install lxml

  • Writing to AppleDict

    sudo pip3 install lxml beautifulsoup4 html5lib

  • Reading from Octopus Mdict (MDX) (required for some glossaries)

    sudo pip3 install python-lzo

  • Reading from Babylon BGL: Python 3.5 is recommended

Other Requirements for Mac OS X

If you want to convert glossaries into AppleDict format on Mac OS X, you also need:

HOWTOs

Convert Babylon (bgl) to Mac OS X dictionary

Let's assume the Babylon dict is at ~/Documents/Duden_Synonym/Duden_Synonym.BGL:

cd ~/Documents/Duden_Synonym/
python3 ~/Software/pyglossary/pyglossary.pyw --read-options=resPath=OtherResources --write-format=AppleDict Duden_Synonym.BGL Duden_Synonym.xml
make
make install

Launch Dictionary.app and test.

Convert Octopus Mdict to Mac OS X dictionary

Let's assume the MDict dict is at ~/Documents/Duden-Oxford/Duden-Oxford DEED ver.20110408.mdx.

Run the following command:

cd ~/Documents/Duden-Oxford/
python3 ~/Software/pyglossary/pyglossary.pyw --read-options=resPath=OtherResources --write-format=AppleDict "Duden-Oxford DEED ver.20110408.mdx" "Duden-Oxford DEED ver.20110408.xml"
make
make install

Launch Dictionary.app and test.

Let's assume the MDict dict is at ~/Downloads/oald8/oald8.mdx, along with the image/audio resources file oald8.mdd.

Run the following commands: :

cd ~/Downloads/oald8/
python3 ~/Software/pyglossary/pyglossary.pyw --read-options=resPath=OtherResources --write-format=AppleDict oald8.mdx oald8.xml

This extracts dictionary into oald8.xml and data resources into folder OtherResources. Hyperlinks use relative path. :

sed -i "" 's:src="/:src=":g' oald8.xml

Convert audio file from SPX format to WAV format. You need package speex from MacPorts :

find OtherResources -name "*.spx" -execdir sh -c 'spx={};speexdec $spx  ${spx%.*}.wav' \;
sed -i "" 's|sound://\([/_a-zA-Z0-9]*\).spx|\1.wav|g' oald8.xml

But be warned that the decoded WAVE audio can consume ~5 times more disk space!

Compile and install. :

make
make install

Launch Dictionary.app and test.

pyglossary's People

Contributors

ilius avatar ratijas avatar xiaoqiangwang avatar ousia avatar bao-qian avatar behrouz-m avatar

Watchers

James Cloos avatar w0lker avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.