FAQ¶
For problems, see Troubleshooting.
Is any of my data sent anywhere?
No. wudict listens on the loopback address 127.0.0.1 and has no account,
no telemetry, no analytics or crash reporting. It connects to the internet only to
download what you ask for: lemma data, or a dictionary from a link you
provide. See the Privacy Policy.
Does wudict work offline?
Yes. Search, lookup and indexing need no network. This is also true for the Android app. Only these need the network:
- A download of lemma data. English lemma data is built in.
- An import from a link.
- An article that refers to an image, font or script at an
http://orhttps://address. Most dictionaries include their resources. - Read aloud with a voice that the browser gets from the network. The voices of the operating system need no network.
Why two names, WuWeiDict and wudict?
Wú wéi (無為) is the classical Chinese term for effortless action, or
non-action. wudict is the short form, used for the program.
Is wudict free?
Yes. wudict is free software under the GNU General Public License, version 3 or later. You can use, change and redistribute it under that licence. The source code is on GitHub. See Licence.
The licence applies to wudict only. Each dictionary has its own licence.
Where can I get dictionaries?
Use your own dictionary files, or get free dictionaries:
- legbehindneck.com/wudict: free dictionaries as share links. On Android, a share link starts the import in wuDict. On a desktop, paste the link on the setup page.
- Kiwix: Wikipedia, Wiktionary and other
reference works as
.zimfiles. - Your own dictionary: write it as a wudict markdown file in a text editor.
wudict reads MDict, StarDict, Aard 2, Lingvo DSL, Babylon, ZIM and wudict markdown: see Formats. To install the files: Add dictionaries.
Where are wudict's files?
~/.wudict/
wudict.toml settings
state.json dictionary order, enabled dictionaries, display preferences
groups.ini picker groups, only created after manually edited
style/ custom styles
lemmas/ installed lemma data
db/ the library; db/spxcache/ holds converted Speex audio
~/Dictionaries the default dictionary folder
Windows and Android: Configuration → Files.
How do I update wudict?
Replace the executable, or run the new installer, wuDict.app or APK over
the old one. Settings and the library are kept. Indexes built by an older
version are reported as outdated
and rebuilt with Rebuild or wudict reindex.
Use Obtainium to automatically update the Android FOSS version of wudict.
How do I free the disk space an index uses?
Click the index's switch in the dictionary panel; the switch shows its size. The switches are locked when the dictionary files are gone, because the library folder is then the only copy; 🗑 Remove… still deletes it. Rescan folders lists orphans and deletes the ones you tick.
Can I use wudict without a browser?
Yes, you can use wudict in the terminal:
wudict lookup -format text Oxford.mdx flight # show definitions as plain text
wudict keys ~/Dictionaries/Oxford.mdx # list all headwords
wudict ingest # index the dictionary folders
wudict clean # list removable library folders
See wudict --help in terminal.
Is there a phone app?
On Android: the app runs the same server and works offline, and looks up a word from the text selection menu of other apps. There is no iOS app.
What's the difference between the Android FOSS build and the Google Play build?
Short answer. Both builds are compiled from the same open-source repository and provide the same search, lookup, and indexing functionality. The primary difference is how they access dictionary files.
FOSS build. Choose this build if you need unrestricted access to dictionary files in device storage. It allows you to select dictionary folders from locations of your choice, subject to Android's storage permissions and restrictions.
Google Play build. Choose this build if you prefer distribution through Google Play and automatic app updates, or if you want to avoid granting the app broad storage access. It uses Android's Storage Access Framework (SAF), which lets you grant access to specific folders without granting general access to device storage.
The Google Play build stores its app-managed dictionary data in:
/sdcard/Android/data/com.legbehindneck.wudict/files/Dictionaries
On recent Android versions, this directory is generally inaccessible through standard file managers. This can make it more difficult to manage or transfer dictionary files manually.
Differences.
| FOSS build | Google Play build | |
|---|---|---|
| Source | GitHub, Obtainium | Google Play |
| Dictionary files | Internal storage → Dictionaries, a folder you manage | Android/data/com.legbehindneck.wudict/files/Dictionaries; you import the files |
| Storage permission | All files access | none |
| Updates | Obtainium, or a download from GitHub | Google Play |
| Signing certificate | the wudict developers | |
| Reachable from other devices (testing) | optional toggle in wudict settings, OFF by default | no |
| Install and crash data to Google | no | yes |
Disk space.
- FOSS build: the dictionary files stay where you put them. One copy of each dictionary exists.
- Google Play build: an import copies the dictionary files into the app. Two copies exist until the import ends. The import does not start if the free space is less than the size of the files.
- Google Play build: after the import, the app offers to delete the originals. If you keep them, the dictionaries use two times the disk space.
- Google Play build: dictionary files in
Android/data/com.legbehindneck.wudict/files/Dictionarieson a microSD card are read there. They use no internal storage and need no import. - Both builds: the library adds the indexes and the media packs. It is in
Android/data/com.legbehindneck.wudict/files/db.
Uninstall. Android deletes Android/data/com.legbehindneck.wudict:
the library, the settings and the lemma data.
- FOSS build: Internal storage → Dictionaries stays. After a new install, the indexes are built again.
- Google Play build: the imported dictionary files are in
Android/data. Android deletes them too.
Advantages of the FOSS build.
- The dictionary folder is a usual folder. A file manager or a computer can add, change and delete files in it.
- To add a dictionary, copy its files. There is no import and no second copy.
- An uninstall does not delete your dictionary files.
- Google gets no install or crash data.
- Other devices on your network can connect, for testing: Access.
Disadvantages of the Google Play build.
- Each dictionary must be imported. During the import, it needs two times its size in free space.
- Android 11 and later hide
Android/datafrom file managers. To get the imported files, use USB (File transfer),adb pulloradb push. - An uninstall deletes the imported dictionary files. Copy them before you uninstall.
- Google collects install and crash data: Privacy Policy.
- Other devices cannot connect.
The Google Play build has these advantages: it asks for no storage permission, and Google Play installs the updates.
Signing certificate collision. The two builds have the same package
name, com.legbehindneck.wudict, and different signing certificates.
Android does not install an update with a different certificate:
- You cannot install the two builds on one device at the same time.
- You cannot install one build over the other. Android shows an error.
- Obtainium cannot update the Google Play build. Google Play cannot update the FOSS build.
To change to the other build:
- From Google Play to FOSS only: copy
Android/data/com.legbehindneck.wudict/files/Dictionariesto a computer, over USB or withadb pull. - Uninstall the current build. Android deletes the library, the settings and the lemma data.
- Install the other build.
- FOSS build: put the dictionary files in Internal storage → Dictionaries. Google Play build: Import dictionaries → Choose folder.
- Download the lemma data again. Make your settings again.
Why can't I install the Android app?
The app needs:
- Android 8.0 or later.
- A 64-bit ARM (
arm64) processor. There is no build for 32-bit ARM or x86 devices.
FOSS build, other causes:
- Android blocks the APK. Allow Install unknown apps for the app that opens the APK: the browser or the file manager.
- The Google Play build is installed. Android cannot install one build over the other: see the question on the two builds above.
Can other computers on my network use it?
Set SERVER_IP
to 0.0.0.0. Requests from the network then need the access key
(AUTH): wudict token prints a link
that carries it; open it once in the browser on the other device. Deleting
dictionaries from another device also needs
ALLOW_REMOTE_DELETE.
Does wudict change my dictionary files?
No. Indexes go into the library. A replacement for a broken resource goes
into the dictionary's library folder as a
resource override. Only
🗑 Remove… and wudict rm delete dictionary files.
Can I convert or export a dictionary?
Yes, from the command line. wudict dump can export a dictionary as CSV or as
wudict markdown:
wudict dump -o ~/exports ~/Dictionaries/Oxford.mdx # CSV
wudict dump -format md -o ~/exports ~/Dictionaries/Oxford.mdx # wudict markdown
For more details see: wudict dump --help
The images, audio and other resources are exported to a folder next to the output. The CSV is compatible with pyglossary, and thus can be converted to other formats, such as StarDict. See wudict dump.
The Android app has no command line, but it is possible to build and run the desktop version of wudict on Android in the Termux environment. See Can I use wudict in Termux? below.
Can I use wudict in Termux?
Yes, you can build wudict from the source code in Termux. The server and all commands work, as on a desktop.
- Install Termux from F-Droid or from GitHub.
-
Install the build tools:
go versionmust show 1.26.5 or later. -
Get the source code and build wudict:
git clone https://github.com/wuweidict/wudict cd wudict make build # cgo: fast SQLite, built-in Speex decoder install -m 755 wudict $PREFIX/bin/The first build compiles SQLite. This can take some minutes.
Without
clang, usemake build-puregoin place ofmake build. SQLite is then slower, and.spxaudio needs thespeexdecprogram. -
Give Termux access to the shared storage:
Internal storage is then
~/storage/shared. -
Write the settings:
mkdir -p ~/.wudict cat >> ~/.wudict/wudict.toml <<'EOF' DICT_DIR = "~/storage/shared/Dictionaries" SERVER_PORT = "6889" NO_BROWSER = "1" EOF~/storage/shared/Dictionariesis also the folder of the wuDict FOSS build. The two use the same dictionary files. Each has its own library. The wuDict app uses port 6888, so wudict in Termux uses 6889. -
Start the server:
-
Open
http://127.0.0.1:6889in a browser on the phone. -
To keep the server running when the screen is off:
To update: in the wudict folder, run git pull, make build and the install command again.
Can I search several dictionaries at once?
Yes. All dictionaries in the dictionary picker searches every enabled dictionary.
- To remove a dictionary from All dictionaries, clear its checkbox in the dictionary panel.
- To search one dictionary, choose it in the picker.
- To search a set of dictionaries, choose a group in the picker: a language, a language pair, or your own group.
- To change the order of the results, drag ⠿ in the dictionary panel.
See Picker groups and Dictionary panel.
Can I change the look of wudict and of the articles?
Yes.
- Theme: ◐ chooses auto, light or dark.
- Text size: ☰ → − 15px +.
- Your own CSS: ☰ → folder summary → Custom styles…. App changes the wudict page. Article changes every dictionary article. Examples… inserts ready styles, such as sepia, true black, a serif font, and a compact layout for phones. Files adds fonts and images.
- One dictionary only: a resource override.
If a rule hides the page, open http://127.0.0.1:6888/?style=off.
See Custom styles.
Why does estuviera find nothing?
Spanish lemma data is not installed, or wudict cannot tell that the dictionary is Spanish.
Install it: ☰ → folder summary → Lemmatization… →
tick Spanish. It applies from the next search. In a terminal:
wudict lemmas download es.
Most .mdx and .slob dictionaries do not declare their language. Name the
file with a language code first (es-en-collins.mdx), or put it in a folder
named by the code (es/). English is assumed when nothing else is found.
See language detection.
Why is selected text read aloud in the wrong language?
wudict reads a selection in one of the dictionary's two languages: the language of its headwords or the language of its articles. The script of the selection selects between them. If both languages use the same script, as German and English do, wudict reads the article language.
If wudict finds no language of the dictionary in the script of the
selection, it uses the language of the default voice. You set the default
voice in the text-to-speech settings of the system. Most .mdx and
.slob dictionaries do not declare their languages.
- The default voice must use the script of the selection.
- In a browser, its language must also be one of the languages that the browser prefers.
If not, wudict reads Latin-script text in the language of the browser or of the phone, or in English.
The ▾ button next to the speaker opens a menu with:
- Read as German: the other language of the dictionary, or the language that the default voice replaced.
- The voices installed for the language that wudict reads. wudict keeps your choice for that language.
- Other languages…: all the other languages that have a voice on the device and use the script of the selection.
- Speech settings…: Android app only. It opens the text-to-speech settings of the system, where you install voices.
wudict keeps the language you select for that dictionary and that script. To go back, select the original language with Read as. ▾ is shown only when the menu has a choice.
The menu shows only the languages that use the script of the selection. If a language is not in the menu, the device has no voice for it. Install one in the speech settings of the operating system.
To give a dictionary its languages:
- Rename the file. Put the language pair first, headword language
first:
de-en-collins.mdx. For a dictionary in one language, put one code:de-duden.mdx. You can also put the file in a folder named by the code:de/. - ☰ → folder summary → Rescan folders.
What's the difference between -cgo and -purego flavours and which should I choose?
Prefer -cgo for platform where it is available: you get a faster SQLite engine, and the built-in Speex decoder.
-purego is the fallback mode for environments where C-code cannot be compiled; A -purego build needs the external command line speexdec utility for Speex audio decoding.
See -cgo or -purego.
How do I stop the browser tab opening at startup?
wudict --no-browser, or NO_BROWSER = "1" in ~/.wudict/wudict.toml.
How do I build this documentation site?
With Zensical, which needs Python 3: