All Projects → uav4geo → Libretranslate

uav4geo / Libretranslate

Licence: agpl-3.0
Free and Open Source Machine Translation API. 100% self-hosted, no limits, no ties to proprietary services. Built on top of Argos Translate.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Libretranslate

Php Google Translate Free
PHP class to use the Google Translator API for free.
Stars: ✭ 182 (-78.18%)
Mutual labels:  api, translation, translate
Deeply
PHP client for the DeepL.com translation API (unofficial)
Stars: ✭ 152 (-81.77%)
Mutual labels:  api, translation, translate
Google Translate
🈯 A Node.JS library to consume Google Translate API for free.
Stars: ✭ 152 (-81.77%)
Mutual labels:  api, translate
SimpleTranslationSystem
A simple C# translation system
Stars: ✭ 14 (-98.32%)
Mutual labels:  translation, translate
whats
🌐 a terminal translation tool
Stars: ✭ 16 (-98.08%)
Mutual labels:  translation, translate
Google Translate Api
A free and unlimited API for Google Translate 💵🚫
Stars: ✭ 1,996 (+139.33%)
Mutual labels:  api, translate
Traduora
Ever® Traduora - Open-Source Translation Management Platform
Stars: ✭ 1,580 (+89.45%)
Mutual labels:  api, translation
LMPHP
Multi-language management and support on the site.
Stars: ✭ 19 (-97.72%)
Mutual labels:  translation, translate
Google Translate Api Browser
A free and unlimited API for Google Translate
Stars: ✭ 96 (-88.49%)
Mutual labels:  api, translate
Google Translate
翻译工具 支持网页翻译和文本翻译
Stars: ✭ 356 (-57.31%)
Mutual labels:  api, translate
Translators
🌏🌍🌎Translators🌎🌍🌏 is a library which aims to bring free, multiple, enjoyable translation to individuals and students in Python. Translators是一个旨在用Python为个人和学生带来免费、多样、愉快翻译的库。
Stars: ✭ 295 (-64.63%)
Mutual labels:  translation, translate
Polyglot
🌏 The missing Safari extension that translates selected text into your native language.
Stars: ✭ 387 (-53.6%)
Mutual labels:  translation, translate
Geeksay
🤓 geeks will ctrl+s the world!
Stars: ✭ 127 (-84.77%)
Mutual labels:  api, translate
Trino
Trino: Master your translations with command line!
Stars: ✭ 118 (-85.85%)
Mutual labels:  api, translate
Mtrans
Multi-source Translation
Stars: ✭ 711 (-14.75%)
Mutual labels:  api, translate
pygtrans
谷歌翻译, 支持 APIKEY 一口气翻译十万条
Stars: ✭ 60 (-92.81%)
Mutual labels:  translation, translate
Parrot
Self-hosted Localization Management Platform built with Go and Angular
Stars: ✭ 967 (+15.95%)
Mutual labels:  api, translation
Texterify
The localization management system.
Stars: ✭ 37 (-95.56%)
Mutual labels:  api, translate
linguist
Linguist is a powerful browser extension for translate pages and text, which are ready to replace your favorite translate service
Stars: ✭ 21 (-97.48%)
Mutual labels:  translation, translate
Translations
🐼 Chinese translations for classic IT resources
Stars: ✭ 6,074 (+628.3%)
Mutual labels:  api, translation

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 [--build-arg with_models=true] -t libretranslate .

If you want to run the Docker image in a complete offline environment, you need to add the --build-arg with_models=true parameter. Then the language models get downloaded during the build process of the image. Otherwise these models get downloaded on the first run of the image/container.

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

Language Bindings

You can use the LibreTranslate API using the following bindings:

More coming soon!

Roadmap

Help us by opening a pull request!

  • [x] A docker image (thanks @vemonet !)
  • [x] Auto-detect input language (thanks @vemonet !)
  • [X] 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.

Can I use this behind a reverse proxy, like Apache2?

Yes, here is an example Apache2 config that redirects a subdomain (with HTTPS certificate) to LibreTranslate running on a docker at localhost.

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

You can remove 127.0.0.1 on the above command if you want to be able to access it from domain.tld:5000, in addition to subdomain.domain.tld (this can be helpful to determine if there is an issue with Apache2 or the docker container).

Add --restart unless-stopped if you want this docker to start on boot, unless manually stopped.

Apache config

Replace [YOUR_DOMAIN] with your full domain; for example, translate.domain.tld or libretranslate.domain.tld.

Remove # on the ErrorLog and CustomLog lines to log requests.

#Libretranslate

#Redirect http to https
<VirtualHost *:80>
    ServerName http://[YOUR_DOMAIN]
    Redirect / https://[YOUR_DOMAIN]
    # ErrorLog ${APACHE_LOG_DIR}/error.log
    # CustomLog ${APACHE_LOG_DIR}/tr-access.log combined
 </VirtualHost>

#https
<VirtualHost *:443>
    ServerName https://[YOUR_DOMAIN]
    
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/[YOUR_DOMAIN]/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/[YOUR_DOMAIN]/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/[YOUR_DOMAIN]/fullchain.pem
    
    # ErrorLog ${APACHE_LOG_DIR}/tr-error.log
    # CustomLog ${APACHE_LOG_DIR}/tr-access.log combined
</VirtualHost>

Add this to an existing site config, or a new file in /etc/apache2/sites-available/new-site.conf and run sudo a2ensite new-site.conf.

To get a HTTPS subdomain certificate, install certbot (snap), run sudo certbot certonly --manual --preferred-challenges dns and enter your information (with subdomain.domain.tld as the domain). Add a DNS TXT record with your domain registrar when asked. This will save your certificate and key to /etc/letsencrypt/live/{subdomain.domain.tld}/. Alternatively, comment the SSL lines out if you don't want to use HTTPS.

Credits

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

License

GNU Affero General Public License v3

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].