This repository contains all the tools of the FreeDict project. This includes the Make build system, various importer scripts, XSL conversion style sheets and more.
Clone or download
Latest commit 857adeb Nov 5, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
JMdict Initial commit Jul 6, 2017
buildhelpers rename FD module to fd_tool, move rm_duplicates into it; adjust qa calls May 12, 2018
exporters/tei2anki tei: do not create empty card when initializing deck Nov 5, 2018
fd_tool api: add function to query latest tools release Sep 9, 2018
importers fix validation call after API generation Oct 25, 2018
irc add Sopel IRC bot Jul 15, 2017
lib Initial commit Jul 6, 2017
mk remove slob file on re-generation, tei2slob doesn't overwrite Nov 3, 2018
teimerge Initial commit Jul 6, 2017
testing Remove broken and outdated scripts under testing/ Nov 14, 2017
xquery Initial commit Jul 6, 2017
xsl Old fix for tei:colloc formatting Nov 21, 2017
.gitignore Initial draft for a setuptools-based python script distribution May 11, 2018
COPYING Update Copying with author information Feb 25, 2018
Makefile fix validation call after API generation Oct 25, 2018 grammar nazi ;) May 14, 2018 Initial commit Jul 6, 2017 Initial commit Jul 6, 2017
freedict-database.rng add tools tag in FreeDict database schema Sep 9, 2018 fix a considerable of spelling mistakes, using code spell Nov 25, 2017
requirements.txt tei: do not create empty card when initializing deck Nov 5, 2018
teiaddphonetics Fix encoding problem Oct 21, 2018
teidiff Initial commit Jul 6, 2017 change default API generation sources to server Apr 22, 2018 Initial commit Jul 6, 2017

FreeDict Tools

The FreeDict tools are used to import, export (build) and manage FreeDict dictionaries.

Getting Started

FreeDict databases are encoded in the TEI XML format (chapter 9), see

The conversion is based on XSL stylesheets (see directory xsl/). These can in principle transform to any format, but only the .dict format is supported at the moment.


You should have at least the following tools installed, to build the dictionaries: make, xsltproc, tar, gzip, dictzip, dictfmt

For proper use of all our tools, Perl, Python > 3.4, Git and a XML-capable editor are strongly advised.

Debian/Ubuntu Dependencies

If you use Debian/Ubuntu, you should install the following packages:

sudo apt-get install make unzip xsltproc libxml-libxml-perl python3 python3-icu python-virtualenv git


On Windows, it is easiest to install Msys2 or Cygwin. Both offer an easy method to install the required tools.

Setting Up The Build System

You should clone this repository to a path with no spaces and add an environment variable FREEDICT_TOOLS to point to this directory.

A lot of the internal scripts need additional Python libraries. To fully make use of them, you should set up a Python virtual environment for that. To help you getting started, make mk_venv is there to guide you through the process and make mk_venv-help will explain you why and how you should use make mk_venv.

Hint: If you do not like virtual environments, you are free to set up everything by hand yourself. See the file requirements.txt for more details.

Once done, you can get help on the available actions in any directory containing a Makefile by typing make help.


Most of the documentation can be found in the FreeDict HOWTO at

In general, it is a good idea to have a look at our wiki at

Furthermore, the whole build system is explained in chapter 8 of the HOWTO, mentioned above.

Additional Output Formats

For creating slob files, you need to install tei2slob:

virtualenv env-slob -p python3 --system-site-packages  # create self contained python env
source env-slob/bin/activate  # activate it
pip install git+  # install general slob tools
pip install git+  # install tei2slob converter

Now tei2slob will be in your path. For new shells, you will have to execute source env-slob/bin/activate again, or put env-slob/bin/tei2slob into your PATH.

Sebastian Humenda, Mar 2018