diff --git a/README.md b/README.md index 6aa774c..48536b1 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,9 @@ const res = await fetch("https://libretranslate.com/translate", { body: JSON.stringify({ q: "Hello!", source: "en", - target: "es" + target: "es", }), - headers: { "Content-Type": "application/json" } + headers: { "Content-Type": "application/json" }, }); console.log(await res.json()); @@ -50,9 +50,9 @@ const res = await fetch("https://libretranslate.com/translate", { body: JSON.stringify({ q: "Ciao!", source: "auto", - target: "en" + target: "en", }), - headers: { "Content-Type": "application/json" } + headers: { "Content-Type": "application/json" }, }); console.log(await res.json()); @@ -81,9 +81,9 @@ const res = await fetch("https://libretranslate.com/translate", { q: '

Hello!

', source: "en", target: "es", - format: "html" + format: "html", }), - headers: { "Content-Type": "application/json" } + headers: { "Content-Type": "application/json" }, }); console.log(await res.json()); @@ -103,15 +103,15 @@ Request: ```javascript const res = await fetch("https://libretranslate.com/translate", { - method: "POST", - body: JSON.stringify({ - q: "Hello", - source: "en", - target: "it", - format: "text", - alternatives: 3 - }), - headers: { "Content-Type": "application/json" } + method: "POST", + body: JSON.stringify({ + q: "Hello", + source: "en", + target: "it", + format: "text", + alternatives: 3, + }), + headers: { "Content-Type": "application/json" }, }); console.log(await res.json()); @@ -184,18 +184,18 @@ Arguments passed to the process or set via environment variables are split into ### Settings / Flags -| Argument | Description | Default Setting | Env. name | -|-----------------------------|-------------------------------------------------------------------------------------------------------------| -------------------- |------------------------------| -| --debug | Enable debug environment | `Disabled` | LT_DEBUG | -| --ssl | Whether to enable SSL | `Disabled` | LT_SSL | -| --api-keys | Enable API keys database for per-client rate limits when --req-limit is reached | `Don't use API keys` | LT_API_KEYS | +| Argument | Description | Default Setting | Env. name | +| --------------------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------- | ---------------------------- | +| --debug | Enable debug environment | `Disabled` | LT_DEBUG | +| --ssl | Whether to enable SSL | `Disabled` | LT_SSL | +| --api-keys | Enable API keys database for per-client rate limits when --req-limit is reached | `Don't use API keys` | LT_API_KEYS | | --require-api-key-origin | Require use of an API key for programmatic access to the API, unless the request origin matches this domain | `No restrictions on domain origin` | LT_REQUIRE_API_KEY_ORIGIN | -| --require-api-key-secret | Require use of an API key for programmatic access to the API, unless the client also sends a secret match | `No secrets required` | LT_REQUIRE_API_KEY_SECRET | -| --suggestions | Allow user suggestions | `Disabled` | LT_SUGGESTIONS | -| --disable-files-translation | Disable files translation | `File translation allowed` | LT_DISABLE_FILES_TRANSLATION | -| --disable-web-ui | Disable web ui | `Web Ui enabled` | LT_DISABLE_WEB_UI | -| --update-models | Update language models at startup | `Only on if no models found` | LT_UPDATE_MODELS | -| --metrics | Enable the /metrics endpoint for exporting [Prometheus](https://prometheus.io/) usage metrics | `Disabled` | LT_METRICS | +| --require-api-key-secret | Require use of an API key for programmatic access to the API, unless the client also sends a secret match | `No secrets required` | LT_REQUIRE_API_KEY_SECRET | +| --suggestions | Allow user suggestions | `Disabled` | LT_SUGGESTIONS | +| --disable-files-translation | Disable files translation | `File translation allowed` | LT_DISABLE_FILES_TRANSLATION | +| --disable-web-ui | Disable web ui | `Web Ui enabled` | LT_DISABLE_WEB_UI | +| --update-models | Update language models at startup | `Only on if no models found` | LT_UPDATE_MODELS | +| --metrics | Enable the /metrics endpoint for exporting [Prometheus](https://prometheus.io/) usage metrics | `Disabled` | LT_METRICS | ### Configuration Parameters @@ -343,7 +343,7 @@ scrape_configs: # Needed only if you use --metrics-auth-token #authorization: - #credentials: "mytoken" + #credentials: "mytoken" static_configs: - targets: ["localhost:5000"] @@ -414,25 +414,26 @@ See it in action on this [page](https://community.libretranslate.com/t/have-you- This is a list of public LibreTranslate instances, some require an API key. If you want to add a new URL, please open a pull request. -URL |API Key Required | Links ---- | --- | --- -[libretranslate.com](https://libretranslate.com)|:heavy_check_mark:|[ [Get API Key](https://portal.libretranslate.com) ] [ [Service Status](https://status.libretranslate.com/) ] -[translate.terraprint.co](https://translate.terraprint.co/)|- -[trans.zillyhuhn.com](https://trans.zillyhuhn.com/)|- -[translate.lotigara.ru](https://translate.lotigara.ru)|- +| URL | API Key Required | Links | +| ----------------------------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------- | +| [libretranslate.com](https://libretranslate.com) | :heavy_check_mark: | [ [Get API Key](https://portal.libretranslate.com) ] [ [Service Status](https://status.libretranslate.com/) ] | +| [translate.terraprint.co](https://translate.terraprint.co/) | - | +| [trans.zillyhuhn.com](https://trans.zillyhuhn.com/) | - | +| [translate.lotigara.ru](https://translate.lotigara.ru) | - | ## TOR/i2p Mirrors -URL | ---- | -[lt.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion](http://lt.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/)| -[lt.vern.i2p](http://vernf45n7mxwqnp5riaax7p67pwcl7wcefdcnqqvim7ckdx4264a.b32.i2p/)| +| URL | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | +| [lt.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion](http://lt.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/) | +| [lt.vern.i2p](http://vernf45n7mxwqnp5riaax7p67pwcl7wcefdcnqqvim7ckdx4264a.b32.i2p/) | ## Adding New Language Models You have two options to create new language models: - * [Locomotive](https://github.com/LibreTranslate/Locomotive) - * [Argos Train](https://github.com/argosopentech/argos-train) ([video tutorial](https://www.youtube.com/watch?v=Vj_qgnhOEwg)) + +- [Locomotive](https://github.com/LibreTranslate/Locomotive) +- [Argos Train](https://github.com/argosopentech/argos-train) ([video tutorial](https://www.youtube.com/watch?v=Vj_qgnhOEwg)) Most of the training data is from [Opus](http://opus.nlpl.eu/), which is an open source parallel corpus. Check also [NLLU](https://nllu.libretranslate.com) @@ -445,50 +446,51 @@ To help improve or review the UI translations: - Go to . All changes are automatically pushed to this repository. - Once all strings have been reviewed/edited, open a pull request and change `libretranslate/locales/{code}/meta.json`: - ```json +```json { - "name": "", - "reviewed": true <-- Change this from false to true + "name": "", + "reviewed": true <-- Change this from false to true } - ``` +``` ### UI Languages -Language | Reviewed | Weblate Link --------- | -------- | ------------ -Arabic | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ar/) -Azerbaijani | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/az/) -Chinese | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/zh/) -Chinese (Traditional) | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/zh_Hant/) -Czech | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/cs/) -Danish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/da/) -Dutch | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/nl/) -English | :heavy_check_mark: | [Edit](https://hosted.weblate.org/projects/libretranslate/app/) -Esperanto | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/eo/) -Finnish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/fi/) -French | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/fr/) -German | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/de/) -Greek | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/el/) -Hebrew | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/he/) -Hindi | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/hi/) -Hungarian | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/hu/) -Indonesian | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/id/) -Irish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ga/) -Italian | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/it/) -Japanese | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ja/) -Kabyle | :heavy_check_mark: | [Edit](https://hosted.weblate.org/projects/libretranslate/app/kab/) -Korean | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ko/) -Occitan | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/oc/) -Persian | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/fa/) -Polish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/pl/) -Portuguese | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/pt/) -Russian | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ru/) -Slovak | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/sk/) -Spanish | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/es/) -Swedish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/sv/) -Turkish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/tr/) -Ukrainian | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/uk/) -Vietnamese | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/vi/) +| Language | Reviewed | Weblate Link | +| --------------------- | ------------------ | ------------------------------------------------------------------------ | +| Arabic | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ar/) | +| Azerbaijani | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/az/) | +| Basque | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/eu/) | +| Chinese | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/zh/) | +| Chinese (Traditional) | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/zh_Hant/) | +| Czech | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/cs/) | +| Danish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/da/) | +| Dutch | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/nl/) | +| English | :heavy_check_mark: | [Edit](https://hosted.weblate.org/projects/libretranslate/app/) | +| Esperanto | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/eo/) | +| Finnish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/fi/) | +| French | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/fr/) | +| German | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/de/) | +| Greek | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/el/) | +| Hebrew | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/he/) | +| Hindi | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/hi/) | +| Hungarian | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/hu/) | +| Indonesian | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/id/) | +| Irish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ga/) | +| Italian | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/it/) | +| Japanese | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ja/) | +| Kabyle | :heavy_check_mark: | [Edit](https://hosted.weblate.org/projects/libretranslate/app/kab/) | +| Korean | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ko/) | +| Occitan | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/oc/) | +| Persian | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/fa/) | +| Polish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/pl/) | +| Portuguese | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/pt/) | +| Russian | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/ru/) | +| Slovak | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/sk/) | +| Spanish | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/es/) | +| Swedish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/sv/) | +| Turkish | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/tr/) | +| Ukrainian | :heavy_check_mark: | [Edit](https://hosted.weblate.org/translate/libretranslate/app/uk/) | +| Vietnamese | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/vi/) | ## Roadmap @@ -565,6 +567,7 @@ Remove `#` on the ErrorLog and CustomLog lines to log requests. 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. +
@@ -683,9 +686,9 @@ const res = await fetch("https://libretranslate.com/translate", { body: JSON.stringify({ q: ["Hello", "world"], source: "en", - target: "es" + target: "es", }), - headers: { "Content-Type": "application/json" } + headers: { "Content-Type": "application/json" }, }); console.log(await res.json()); @@ -701,9 +704,9 @@ console.log(await res.json()); We welcome contributions! Here's some ideas: -* Train a new language model using [Locomotive](https://github.com/LibreTranslate/Locomotive). For example, we want to train improved neural networks for [German](https://community.libretranslate.com/t/help-wanted-improve-en-de-translation/935) and many other languages. -* Can you beat the performance of our language models? Train a new one and let's compare it. To submit your model make a post on the [community forum](https://community.libretranslate.com/) with a link to download your .argosmodel file and some sample text that your model has translated. -* Pick an [issue](https://github.com/LibreTranslate/LibreTranslate/issues) to work on. +- Train a new language model using [Locomotive](https://github.com/LibreTranslate/Locomotive). For example, we want to train improved neural networks for [German](https://community.libretranslate.com/t/help-wanted-improve-en-de-translation/935) and many other languages. +- Can you beat the performance of our language models? Train a new one and let's compare it. To submit your model make a post on the [community forum](https://community.libretranslate.com/) with a link to download your .argosmodel file and some sample text that your model has translated. +- Pick an [issue](https://github.com/LibreTranslate/LibreTranslate/issues) to work on. ## Credits