Translation dictionary viewer
=============================

'tdv' aims to provide an easy way of viewing translation as well as other kinds
of StarDict dictionaries, and is inspired by the dictionary component
of PC Translator.  I was unsuccessful in finding any free software of this kind,
and thus decided to write my own.

The project is covered by a permissive license, unlike vast majority of other
similar projects, and can serve as a base for implementing other dictionary
software.

image::tdv.png[align="center"]

As a recent addition, the program also offers a GTK+ 3 based user interface,
whose styling will follow your theme, and may be customized from 'gtk.css'.

Packages
--------
Regular releases are sporadic.  git master should be stable enough.
You can get a package with the latest development version using Arch Linux's
https://aur.archlinux.org/packages/tdv-git[AUR],
or as a https://git.janouch.name/p/nixexprs[Nix derivation].

Documentation
-------------
See the link:docs/tdv.1.adoc[man page] for information about usage.
The rest of this README will concern itself with externalities.

Building and Running
--------------------
Build-only dependencies:
 CMake, pkg-config, gettext utilities, asciidoctor or asciidoc +
Optional build-only dependencies:
 librsvg (for the GUI), icoutils (for the GUI, when targetting Windows) +
Runtime dependencies:
 ncursesw, zlib, ICU, termo (included), glib-2.0 >= 2.38, pango +
Optional runtime dependencies:
 xcb, xcb-xfixes (the first two for the TUI), gtk+-3.0 (for the GUI)

 $ git clone --recursive https://git.janouch.name/p/tdv.git
 $ mkdir tdv/build
 $ cd tdv/build
 $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug \
   -DWITH_X11=ON -DWITH_GUI=ON
 $ make

To install the application, you can do either the usual:

 # make install

Or you can try telling CMake to make a package for you.  For Debian it is:

 $ cpack -G DEB
 # dpkg -i tdv-*.deb

Having the program installed, simply run it with a StarDict '.ifo' file as
an argument.  It is, however, preferable to
link:docs/tdv.1.adoc#_configuration[configure it] to load your dictionaries
automatically.

Windows
~~~~~~~
With the help of Mingw-w64 and WINE, 'tdv' will successfully cross-compile
for Windows.  It isn't particularly usable on that system, if only because
selection watching is a very X11/Wayland-specific feature.  Beware that build
dependencies take up almost a gigabyte of disk space.

 $ sh -e cmake/Win64Depends.sh
 $ cmake -DCMAKE_TOOLCHAIN_FILE=liberty/cmake/toolchains/MinGW-w64-x64.cmake \
   -DCMAKE_BUILD_TYPE=Release -B build
 $ cmake --build build -- package

Dictionaries
------------
This application is intended for use with specific dictionaries: each line
should contain one short word definition.  Moreover, the only supported content
types are plain text, Pango markup, and XDXF (the visual format works better).

The `make dicts` command will build some examples from freely available sources:

 - GNU/FDL Czech-English dictionary
 - Czech foreign words (the site's export is broken as of 2022/08, no response)
 - Czech WordNet 1.9 PDT (synonyms, hypernyms, hyponyms)

You can use the included 'tdv-transform' tool to convert already existing
StarDict dictionaries that are nearly good as they are.  Remember that you can
change the `sametypesequence` of the resulting '.ifo' file to another format,
or run 'dictzip' on '.dict' files to make them compact.

https://mega.co.nz/#!axtD0QRK!sbtBgizksyfkPqKvKEgr8GQ11rsWhtqyRgUUV0B7pwg[CZ <--> EN/DE/PL/RU dictionaries]

Further Development
-------------------
While I've been successfully using 'tdv' for many years now, some issues
should be addressed before including the software in regular Linux and/or
BSD distributions:

 - The GUI is awkward to configure.
 - Lacking configuration, standard StarDict locations should be scanned.

Given all issues with the file format, it might be better to start anew.

Contributing and Support
------------------------
Use https://git.janouch.name/p/tdv to report any bugs, request features,
or submit pull requests.  `git send-email` is tolerated.  If you want to discuss
the project, feel free to join me at ircs://irc.janouch.name, channel #dev.

Bitcoin donations are accepted at: 12r5uEWEgcHC46xd64tt3hHt9EUvYYDHe9

License
-------
This software is released under the terms of the 0BSD license, the text of which
is included within the package along with the list of authors.
