simjanos-dev / LinguaCafe

LinguaCafe is a self-hosted software that helps language learners read foreign languages.
https://simjanos-dev.github.io/LinguaCafeHome/
GNU General Public License v3.0
888 stars 32 forks source link
anki dictionary japanese jellyfin jmdict language language-learning self-hosting translation

LinguaCafe

GitHub Release Static Badge Discord Static Badge Static Badge Static Badge

LinguaCafe is a free self-hosted software that helps language learners acquire vocabulary by reading. It provides a set of tools to read, look up unknown words and review them later as effortlessly as possible.

You can read about all the features of LinguaCafe on the overview GitHub Page, and on the user manual GitHub Wiki page.

   

Library

Reader

Review

Vocabulary

Language support

Supported languages: Chinese, Croatian, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Italian, Japanese, Korean, Latin, Macedonian, Norwegian, Polish, Portuguese, Romanian, Russian, Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian, Welsh.

You can find a detailed list about what level of support different languages have on the GitHub Wiki page.

Supported platforms:

Other Armv8 devices such as Raspberry Pis 3 and newer do not work at the moment.

Memory usage

LinguaCafe uses RAM based on how many and which languages do you use. If you use every language, the RAM usage can be over 2GB.

Installation

Step 1: Install docker desktop.

[!IMPORTANT]

On MacOS you might need actual Docker Desktop instead of just basic Docker, because it allows you to use Rosetta to run images without support for Arm64 like our Python image, which uses Spacy models that only work in Amd64.

Step 2: Create linguacafe folder and download the docker-compose.yml file.

Create a folder for linguacafe, and a storage subfolder. Then download the docker-compose.yml file, and place in inside your linguacafe folder. Your folder structure should look like this:

.
├── linguacafe
│   ├── storage
│   ├── docker-compose.yml

If you want to change the default MySQL database and user, you can create a .env file inside your linguacafe folder and add these lines to it before starting your servers for the first time:

DB_DATABASE="linguacafe"
DB_USERNAME="linguacafe"
DB_PASSWORD="linguacafe"

You can also use a remote MySql server. In this case, you must create the database itself before starting the server.

DB_HOST="linguacafe-database-host"
DB_PORT=3306

MacOs users with Apple silicon must also create a .env file, and add the following line:

PLATFORM="linux/amd64"

Step 3: Run this command to download the docker images and start your server:

docker compose up -d

Windows:

For Windows, you can download this installation script and run it instead of running any of the commands yourself. Since this is a .bat file, Windows defender will warn you about it being potentially a malware.

Step 4: Admin settings

Your server now should be running and accessible on http://localhost:9191.

Although your server is set up and functional, please read the user manual, because there are a few additional steps before you can use linguacafe, like installing languages and importing dictionaries.

Install error troubleshooting

Mysql error while running the `docker compose up -d` command. Some Apple silicon users have encountered error messages like these: ``` [+] Pulling 1/3 on ✘ mysql Error context canceled 1.0s ⠏ webserver [⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀] Pulling 1.0s ⠏ python Pulling 1.0s no matching manifest for linux/arm64/v8 in the manifest list entries ``` We do not know why, but pulling the images individually fixes this error. Run these commands, then run `docker compose up -d` again: ``` docker pull --platform linux/arm64 ghcr.io/simjanos-dev/linguacafe-webserver:latest docker pull --platform linux/amd64 ghcr.io/simjanos-dev/linguacafe-python-service:latest ```

Updating to the latest version

Please backup linguacafe before updating, otherwise you can lose your data if anything goes wrong. You can read more about backups in the user manual.

If you are below v0.9, please use the migration guide provided here instead of this command.

If you are below v0.12 and using Linux or MacOS, please run this command from your linguacafe directory (this won't be neccessary anymore in the future):

sudo chmod -R 777 ./storage

Run these commands to update and start your server:

docker compose pull
docker compose up -d

If you are below v0.12 and using Windows please delete these folders after updating, then restart your server. You will have to install your languages again if you had any installed.

linguacafe/storage/logs
linguacafe/storage/framework
linguacafe/storage/app/model

If you run into any problem updating, please contact me on discord, I will try to help.

Windows

On Windows, you can run again the installation script to update to the latest version, or run the commands separately.

Active development disclaimer

[!NOTE] LinguaCafe is still in active development, you might encounter some bugs while using the software. Please test it before you start actively using it, and make sure it is up to your expectations. At this time only one user/server is supported.

Contact information

Discord invite

Discord user: linguacafe_47757

Subreddit: /r/linguacafe

E-mail: simjanos.dev@gmail.com

Attributions

LinguaCafe uses many public resources. I am very thankful for these projects and for all the people who were working on them. They helped me greatly to create LinguaCafe.

Spacy tokenizer

License: MIT license

Spacy website

Spacy github

Spacy license

Pykakasi

License: License: GNU General Public License 3

Pykakasi website

Pykakasi license

Pinyin

License: MIT license

Pinyin website

Pinyin github

Pinyin license

Newspaper3k

License: MIT, Apache-2.0

Newspaper3k github

Newspaper3k license

EbookLib

License: GNU Affero General Public License v3.0

EbookLib github

EbookLib license

JMDict dictionary file

License: Creative Commons Attribution-ShareAlike 4.0 International

JMDict Project website

JMDict license information

JMDict license

KANJIDIC2 kanji file

License: Creative Commons Attribution-ShareAlike 4.0 International

JMDict Project website

KANJIDIC2 license information

KANJIDIC2 license  

CC-CEDICT dictionary file
License: Creative Commons Attribution-Share Alike 3.0 License

CC-CEDICT website CC-CEDICT license  

HanDeDict dictionary file
License: Creative Commons Attribution-ShareAlike 2.0 Germany License

HanDeDict website HanDeDict license  

Kengdic dictionary file
License: GNU Library General Public License, version 2.0

Kengdic github Kengdic license  

Eurfa dictionary file
License: The GNU General Public License 3

Eurfa download website Eurfa bitbucket Eurfa creator's website Eurfa license  

Wiktionary

License: Creative Commons Attribution-ShareAlike 3.0 Unported License

Wiktionary website

Wiktionary license

The specific wiktionary files that LinguaCafe uses have been downloaded from this GitHub repository.

Dict.cc

LinguaCafe has no dict.cc dictionaries packaged in the software. It only provides a link to the dict.cc website.

Dict.cc license

RADKFILE/KRADFILE

License: Creative Commons Attribution-ShareAlike 4.0 International

JMDict Project website

KRADKFILE license information

KRADKFILE license

DMAK kanji drawing library

License: MIT license

DMAK github project

DMAK license

KanjiVG License: Creative Commons Attribution-ShareAlike 3.0 Unported

KanjiVG website

KanjiVG github

KanjiVG license