LibreTranslate/README.md

141 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2020-12-19 19:19:35 +00:00
# LibreTranslate
2020-12-20 20:52:02 +00:00
2020-12-20 23:56:05 +00:00
[Try it online!](https://libretranslate.com) | [API Docs](https://libretranslate.com/docs)
[![Python versions](https://img.shields.io/pypi/pyversions/libretranslate)](https://pypi.org/project/libretranslate) [![Run tests](https://github.com/uav4geo/LibreTranslate/workflows/Run%20tests/badge.svg)](https://github.com/uav4geo/LibreTranslate/actions?query=workflow%3A%22Run+tests%22) [![Publish to DockerHub](https://github.com/uav4geo/LibreTranslate/workflows/Publish%20to%20DockerHub/badge.svg)](https://hub.docker.com/r/libretranslate/libretranslate) [![Publish to GitHub Container Registry](https://github.com/uav4geo/LibreTranslate/workflows/Publish%20to%20GitHub%20Container%20Registry/badge.svg)](https://github.com/uav4geo/LibreTranslate/actions?query=workflow%3A%22Publish+to+GitHub+Container+Registry%22)
2021-01-02 17:17:11 +00:00
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.
2020-12-20 20:52:02 +00:00
![image](https://user-images.githubusercontent.com/1951843/102724116-32a6df00-42db-11eb-8cc0-129ab39cdfb5.png)
2020-12-20 21:04:48 +00:00
[Try it online!](https://libretranslate.com) | [API Docs](https://libretranslate.com/docs)
2020-12-20 20:52:02 +00:00
2020-12-20 21:13:38 +00:00
## API Examples
Request:
```javascript
const res = await fetch("https://libretranslate.com/translate", {
method: "POST",
body: JSON.stringify({
q: "Hello!",
source: "en",
target: "es"
}),
headers: { "Content-Type": "application/json" }
2021-01-15 17:13:42 +00:00
});
2020-12-20 21:13:38 +00:00
console.log(await res.json());
```
Response:
```javascript
{
"translatedText": "¡Hola!"
}
```
2021-02-09 13:17:06 +00:00
## Install and Run
2020-12-20 20:52:02 +00:00
2020-12-20 21:13:38 +00:00
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:
2020-12-20 20:52:02 +00:00
2021-02-09 13:17:06 +00:00
```bash
pip install libretranslate
libretranslate [args]
```
Then open a web browser to http://localhost:5000
2021-02-09 20:20:46 +00:00
If you're on Windows, we recommend you [Run with Docker](#run-with-docker) instead.
2021-02-09 13:17:06 +00:00
## Build and Run
If you want to make some changes to the code, you can build from source, and run the API:
2020-12-20 20:52:02 +00:00
```bash
git clone https://github.com/uav4geo/LibreTranslate
2020-12-20 20:52:02 +00:00
cd LibreTranslate
2021-02-09 13:17:06 +00:00
pip install -e .
libretranslate [args]
2021-02-10 16:05:23 +00:00
# Or
python main.py [args]
2020-12-20 20:52:02 +00:00
```
2020-12-20 21:13:38 +00:00
Then open a web browser to http://localhost:5000
### Run with Docker
2020-12-29 15:55:53 +00:00
Simply run:
```bash
docker run -ti --rm -p 5000:5000 libretranslate/libretranslate
```
Then open a web browser to http://localhost:5000
### Build with Docker
Make sure you cloned the `models` submodule before building the Docker image:
```bash
docker build -t libretranslate .
```
Run the built image:
```bash
docker run -it -p 5000:5000 libretranslate [args]
```
Or build and run using `docker-compose`:
```bash
docker-compose up -d --build
```
> Feel free to change the [`docker-compose.yml`](https://github.com/uav4geo/LibreTranslate/blob/main/docker-compose.yml) file to adapt it to your deployment needs, or use an extra `docker-compose.prod.yml` file for your deployment configuration.
2020-12-20 20:52:02 +00:00
## 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` |
2021-01-19 17:53:53 +00:00
| --batch-limit | Set maximum number of texts to translate in a batch request | `No limit` |
2020-12-20 20:52:02 +00:00
| --ga-id | Enable Google Analytics on the API client page by providing an ID | `No tracking` |
| --debug | Enable debug environment | `False` |
2020-12-20 23:56:46 +00:00
| --ssl | Whether to enable SSL | `False` |
2021-01-10 08:15:55 +00:00
| --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` |
2020-12-20 20:52:02 +00:00
## Roadmap
Help us by opening a pull request!
2020-12-21 19:31:50 +00:00
- [x] A docker image (thanks [@vemonet](https://github.com/vemonet) !)
2021-01-15 17:15:03 +00:00
- [x] Auto-detect input language (thanks [@vemonet](https://github.com/vemonet) !)
2020-12-20 20:52:02 +00:00
- [ ] User authentication / tokens
2020-12-21 18:55:14 +00:00
- [ ] Language bindings for every computer language
2020-12-20 20:52:02 +00:00
2021-01-10 14:55:26 +00:00
## 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](https://uav4geo.com/contact) to discuss options.
2020-12-20 20:52:02 +00:00
## Credits
This work is largely possible thanks to [Argos Translate](https://github.com/argosopentech/argos-translate), which powers the translation engine.
## License
2020-12-20 23:56:05 +00:00
[GNU Affero General Public License v3](https://www.gnu.org/licenses/agpl-3.0.en.html)