Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup.
Go to file
2021-02-15 13:30:28 -05:00
.github/workflows Fix test workflow 2021-02-09 15:25:05 +01:00
app API keys support, bug fixes, improvements 2021-02-15 13:30:28 -05:00
tests Clean up tests 2021-02-09 18:00:11 +01:00
.dockerignore fixup! fix(docker): ignore .git 2021-01-19 19:55:50 +01:00
.gitignore API keys support, bug fixes, improvements 2021-02-15 13:30:28 -05:00
.gitmodules Removed models submodule 2021-02-08 10:41:27 -05:00
docker-compose.yml Add Dockerfile to build and run LibreTranslate as a Docker image. Also added a docker-compose.yml file to provide a reproducible way to run the Docker image. And finally added how to build and run the Docker image to the README.md. Tested with local deployment on port 5000 and public HTTPS deployment using a docker based nginx-proxy 2020-12-21 19:39:53 +01:00
Dockerfile update Dockerfile and README 2021-02-09 14:17:06 +01:00
install_models.py UI mostly working 2020-12-20 11:55:56 -05:00
LICENSE Initial commit 2020-12-19 14:19:35 -05:00
main.py Update main.py 2021-02-10 11:04:02 -05:00
manage.py API keys support, bug fixes, improvements 2021-02-15 13:30:28 -05:00
README.md API keys support, bug fixes, improvements 2021-02-15 13:30:28 -05:00
requirements.txt API keys support, bug fixes, improvements 2021-02-15 13:30:28 -05:00
setup.py API keys support, bug fixes, improvements 2021-02-15 13:30:28 -05:00

LibreTranslate

Try it online! | API Docs

Python versions Run tests Publish to DockerHub Publish to GitHub Container Registry

Free and Open Source Machine Translation API, entirely self-hosted. Unlike other APIs, it doesn't rely on proprietary providers such as Google or Azure to perform translations.

image

Try it online! | API Docs

API Examples

Request:

const res = await fetch("https://libretranslate.com/translate", {
	method: "POST",
	body: JSON.stringify({
		q: "Hello!",
		source: "en",
		target: "es"
	}),
	headers: { "Content-Type": "application/json" }
});

console.log(await res.json());

Response:

{
    "translatedText": "¡Hola!"
}

Install and Run

You can run your own API server in just a few lines of setup!

Make sure you have installed Python (3.8 or higher is recommended), then simply issue:

pip install libretranslate
libretranslate [args]

Then open a web browser to http://localhost:5000

If you're on Windows, we recommend you Run with Docker instead.

Build and Run

If you want to make some changes to the code, you can build from source, and run the API:

git clone https://github.com/uav4geo/LibreTranslate
cd LibreTranslate
pip install -e .
libretranslate [args]

# Or
python main.py [args]

Then open a web browser to http://localhost:5000

Run with Docker

Simply run:

docker run -ti --rm -p 5000:5000 libretranslate/libretranslate

Then open a web browser to http://localhost:5000

Build with Docker

docker build -t libretranslate .

Run the built image:

docker run -it -p 5000:5000 libretranslate [args]

Or build and run using docker-compose:

docker-compose up -d --build

Feel free to change the docker-compose.yml file to adapt it to your deployment needs, or use an extra docker-compose.prod.yml file for your deployment configuration.

Arguments

Argument Description Default
--host Set host to bind the server to 127.0.0.1
--port Set port to bind the server to 5000
--char-limit Set character limit No limit
--req-limit Set maximum number of requests per minute per client No limit
--batch-limit Set maximum number of texts to translate in a batch request No limit
--ga-id Enable Google Analytics on the API client page by providing an ID No tracking
--debug Enable debug environment False
--ssl Whether to enable SSL False
--frontend-language-source Set frontend default language - source en
--frontend-language-target Set frontend default language - target es
--frontend-timeout Set frontend translation timeout 500
--offline Run user-interface entirely offline (don't use internet CDNs) false
--api-keys Enable API keys database for per-user rate limits lookup Don't use API keys

Manage API Keys

LibreTranslate supports per-user limit quotas, e.g. you can issue API keys to users so that they can enjoy higher requests limits per minute (if you also set --req-limit). By default all users are rate-limited based on --req-limit, but passing an optional api_key parameter to the REST endpoints allows a user to enjoy higher request limits.

To use API keys simply start LibreTranslate with the --api-keys option.

Add New Keys

To issue a new API key with 120 requests per minute limits:

ltmanage keys add 120

Remove Keys

ltmanage keys remove <api-key>

View Keys

ltmanage keys

Roadmap

Help us by opening a pull request!

  • A docker image (thanks @vemonet !)
  • Auto-detect input language (thanks @vemonet !)
  • User authentication / tokens
  • Language bindings for every computer language

FAQ

Can I use your API server at libretranslate.com for my application in production?

The API on libretranslate.com should be used for testing, personal or infrequent use. If you're going to run an application in production, please get in touch to get an API key or discuss other options.

Credits

This work is largely possible thanks to Argos Translate, which powers the translation engine.

License

GNU Affero General Public License v3