Compare commits

...

157 commits
v1.4.1 ... main

Author SHA1 Message Date
Piero Toffanin f7a35db05b
Merge pull request #622 from savionlee/patch-1
Update cuda.Dockerfile to CUDA 12
2024-05-06 16:06:16 -04:00
Savion Lee 16ae59aa43
Update cuda.Dockerfile to CUDA 12 2024-05-06 14:06:40 -05:00
P.J. Finlay 67c5348c02
Merge pull request #618 from LibreTranslate/update-argos-1_9_6
Upgrade to Argos Translate v1.9.6
2024-05-01 16:42:36 -05:00
Piero Toffanin f167b94166
Merge pull request #619 from PeterDaveHello/UpdateDockerBaseImage
Update Dockerfile base image to Python v3.11.9
2024-05-01 09:13:59 -04:00
Peter Dave Hello 7722984df5 Update Dockerfile base image to Python v3.11.9 2024-05-01 17:57:27 +08:00
P.J. Finlay 9dde1e0142
Upgrade to Argos Translate v1.9.6
- Upgrade CTranslate2 to v4 for CUDA 12 support (https://github.com/argosopentech/argos-translate/pull/404)
- Fix deprecation error for CTranslate2 TranslationResult (https://github.com/argosopentech/argos-translate/pull/404)
2024-04-30 16:46:20 -05:00
P.J. Finlay c8360d0359 Update Argos Translate to v1.9.4
This fixes an issue in SentencePiece where the packaging is broken for newer versions of Python.

https://github.com/argosopentech/argos-translate/issues/405
2024-04-29 14:41:12 -05:00
Piero Toffanin f1195d9d13 Bump version 2024-04-28 11:50:36 -04:00
Peter Dave Hello a403ba7e3a
Translated using Weblate (Chinese (Traditional))
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/zh_Hant/
2024-04-23 22:07:09 +02:00
Piero Toffanin 720b5c17a7
Merge pull request #608 from LibreTranslate/mo
Fix localization on docker/pip
2024-04-22 13:23:43 -04:00
Piero Toffanin 0a83fd29bd Include mo files 2024-04-22 13:13:47 -04:00
Piero Toffanin df78c333c9
Update README.md 2024-04-21 12:20:01 -04:00
Piero Toffanin fd0739b85e
Merge pull request #607 from steve15963/develop
update readme.md(add language List)
2024-04-21 12:18:42 -04:00
송진현 79836663ec update readme.md(add language List) 2024-04-22 01:04:36 +09:00
Netesfiu 1bc6a3061c
Translated using Weblate (Hungarian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/hu/
2024-04-18 10:04:47 +02:00
Piero Toffanin 9d9e3233ba
Merge pull request #606 from Netesfiu/patch-1
Mark hungarian a reviewed
2024-04-17 08:04:28 -04:00
András Farkas a6e8ee4af0
Mark hungarian a reviewed
I've just finished reviewing the strings. It should be usable at this state.
2024-04-17 10:51:35 +02:00
Ilya 847235e33b
Translated using Weblate (Persian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/fa/
2024-04-07 11:57:44 +02:00
searinminecraft 7fdde99b48
Translated using Weblate (Filipino)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/fil/
2024-04-03 10:46:50 +02:00
searinminecraft 71b24e0631
Added translation using Weblate (Filipino) 2024-04-03 03:50:00 +02:00
rferee 51ef2b5915
Translated using Weblate (Belarusian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/be/
2024-04-03 01:12:15 +02:00
rferee cabf2294b2
Added translation using Weblate (Belarusian) 2024-04-02 22:03:03 +02:00
I Just Me 508cff36f8
Translated using Weblate (Chinese (Traditional))
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/zh_Hant/
2024-03-28 22:01:49 +01:00
Piero Toffanin 2007ea87e6
Merge pull request #603 from zachdecook/detect-integer
Documentation: /detect returns an integer 0-100, not a float
2024-03-26 10:47:43 -04:00
Zach DeCook 94f87cdac1 Documentataion: /detect returns an integer 0-100, not a float 2024-03-26 09:24:16 -04:00
Kaleido Scope 887b282c6a
Translated using Weblate (Norwegian Nynorsk)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/nn/
2024-03-25 13:01:56 +01:00
Kaleido Scope 87beef971d
Translated using Weblate (Norwegian Bokmål)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/nb_NO/
2024-03-25 13:01:55 +01:00
cat 01a82975fd
Translated using Weblate (Danish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/da/
2024-03-25 13:01:54 +01:00
symegac 1d8fbfda0a
Translated using Weblate (Danish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/da/
2024-03-25 13:01:53 +01:00
VorHerre 5d9506c4bd
Translated using Weblate (Danish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/da/
2024-03-25 13:01:52 +01:00
Kaleido Scope 65609a6bcf
Translated using Weblate (Norwegian Nynorsk)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/nn/
2024-03-22 17:01:53 +01:00
Kaleido Scope 619e6593ef
Added translation using Weblate (Norwegian Nynorsk) 2024-03-21 16:11:18 +01:00
cat 540df02a21
Translated using Weblate (Danish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/da/
2024-03-15 11:01:51 +01:00
cat c0ce429163
Translated using Weblate (Danish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/da/
2024-03-12 23:01:46 +01:00
symegac 950d68f44d
Translated using Weblate (Danish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/da/
2024-03-12 23:01:45 +01:00
d fcbf627b5b
Translated using Weblate (Catalan)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/ca/
2024-03-07 09:01:57 +01:00
Piero Toffanin 0478cce281 Bump version 2024-03-06 11:37:20 -05:00
Piero Toffanin 6ae0091c4b
Merge pull request #596 from cyrinux/fix/ipv6-compat
fix: make libretranslate works with ipv6
2024-03-06 11:36:34 -05:00
Cyril Levis 3bfb8342a0
fix: also change entrypoint 2024-03-06 16:30:28 +01:00
Cyril Levis 732e984382
fix: make libretranslate with ipv6 2024-03-06 15:48:24 +01:00
Cyril Levis b25ed7aae4
fix: make libretranslate with ipv6 2024-03-06 10:37:47 +01:00
Piero Toffanin 74a7831962
Merge pull request #594 from myanesp/main
add: R binding
2024-03-01 19:03:19 +01:00
myanesp 7b5303c875 add: R binding 2024-02-28 19:59:31 +00:00
Piero Toffanin 9af842b7df
Merge pull request #593 from Phoenix616/patch-1
Specify the supported color schemes
2024-02-27 17:17:45 +01:00
Max Lee 4549a2b3d6
Specify the supported color schemes 2024-02-27 14:36:41 +01:00
Scrambled777 6313175321
Translated using Weblate (Hindi)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/hi/
2024-02-24 18:01:59 +01:00
Piero Toffanin 51cefcfb4e
Update README.md 2024-02-20 13:17:13 -05:00
Liam Johnson da9837f833
Translated using Weblate (Uyghur)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/ug/
2024-02-20 08:02:08 +01:00
Piero Toffanin eaa3d58076
Merge pull request #590 from tderflinger/main
Added TypeScript language binding library.
2024-02-19 16:24:58 -05:00
Thomas Derflinger 49787d8b44 Added TypeScript language binding library. 2024-02-19 22:00:12 +01:00
Liam Johnson a7910dd61c
Added translation using Weblate (Uyghur) 2024-02-19 08:00:25 +01:00
Piero Toffanin 2b59e5d2fc Reviewed Bulgarian 2024-02-17 15:09:14 -05:00
Salif Mehmed c671bad1ab
Translated using Weblate (Bulgarian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/bg/
2024-02-17 03:36:14 +01:00
Salif Mehmed cbe8d91a8e
Translated using Weblate (Bulgarian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/bg/
2024-02-15 19:02:06 +01:00
Salif Mehmed 718297d74a
Added translation using Weblate (Bulgarian) 2024-02-14 18:02:45 +01:00
Piero Toffanin b0f372638e
Update README.md 2024-02-13 10:36:06 -05:00
Piero Toffanin 210f4cfb4f
Merge pull request #585 from argosopentech/patch-3
Improve model contributing doc
2024-02-13 10:30:48 -05:00
Argos Open Tech abbfb3561d
Improve model contributing doc 2024-02-13 07:53:11 -06:00
Piero Toffanin d0f1cdfc96
Update README.md 2024-02-11 14:28:22 -05:00
石丸健太郎 45266554cb
Translated using Weblate (Japanese)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/ja/
2024-02-10 05:01:56 +01:00
Piero Toffanin e34687df9b
Merge pull request #584 from pierotofy/timecost
Add --req-time-cost
2024-02-05 15:22:24 -05:00
Piero Toffanin 176d37df73 Remove trailing whitespace test 2024-02-05 15:16:32 -05:00
Piero Toffanin 1e50dc92bf Update README 2024-02-05 15:13:20 -05:00
Piero Toffanin b522a0f763 Add --req-time-cost 2024-02-05 15:03:27 -05:00
ShareASmile 8d4fa40acd
Translated using Weblate (Hindi)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/hi/
2024-02-02 21:01:50 +01:00
Priit Jõerüüt 4419d5ec75
Translated using Weblate (Estonian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/et/
2024-02-01 19:01:49 +01:00
Priit Jõerüüt 611c548db5
Translated using Weblate (Estonian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/et/
2024-01-31 17:22:03 +01:00
Priit Jõerüüt 0c6fd67e40
Added translation using Weblate (Estonian) 2024-01-31 00:40:59 +01:00
Yanjun Chen 349284d6c2
Translated using Weblate (Chinese (Simplified))
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/zh_Hans/
2024-01-30 17:01:53 +01:00
r5jyhte 6228706d5b
Translated using Weblate (Polish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/pl/
2024-01-30 17:01:52 +01:00
victor dargallo 9a1934e450
Translated using Weblate (Catalan)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/ca/
2024-01-27 10:01:47 +01:00
Piero Toffanin b7a273dd28
Merge pull request #580 from jmlord/main
ltmanage in bin
2024-01-24 21:54:05 -05:00
Jean-Michel b3d6815323 moved ltmanage to /usr/bin 2024-01-24 16:36:18 -05:00
Jean-Michel 929002b0c6 ltmanage in bin
This allows using the api key instructions from the readme as-is in the docker container.
2024-01-24 16:05:01 -05:00
Piero Toffanin a90814706a
Update README.md 2024-01-23 12:44:14 -05:00
Michal Čihař cf2216f441
Translated using Weblate (Czech)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/cs/
2024-01-23 15:01:51 +01:00
Piero Toffanin fa24655404 Fix remote API key database lookup 2024-01-21 13:17:07 -05:00
Piero Toffanin c782fe108b
Merge pull request #574 from pierotofy/charlimit
Granular API key char limit support
2024-01-21 12:54:10 -05:00
Piero Toffanin 2b11e909d3 Granular API key char limit support 2024-01-21 12:48:42 -05:00
dtalens 0b139b9dac
Translated using Weblate (Catalan)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/ca/
2024-01-21 02:01:49 +01:00
dtalens 3edc1883ed
Added translation using Weblate (Catalan) 2024-01-20 01:14:34 +01:00
symegac 9283bdb2d9
Translated using Weblate (Danish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/da/
2024-01-15 00:06:18 +00:00
Piero Toffanin 1d8b58e2bf Bump version 2024-01-10 13:18:20 -05:00
Piero Toffanin 6809b9ff44 Fix locale change button behavior 2024-01-10 13:15:33 -05:00
Michal Čihař 9067c38407
Translated using Weblate (Czech)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/cs/
2024-01-10 18:14:32 +00:00
Piero Toffanin 575a2d4960
Update README.md 2024-01-10 09:55:25 -05:00
Piero Toffanin a2e73daab9
Merge pull request #572 from nijel/patch-1
Mark Czech as reviewed
2024-01-10 09:55:04 -05:00
Michal Čihař f888d77b3a
Mark Czech as reviewed
I've just gone through the strings and fixed them. I still might have missed something, but it should be good to use now.
2024-01-10 10:37:18 +01:00
Piero Toffanin f955583308
Merge pull request #570 from CandiedCode/security-updates
build(sca): 🔒 update dependencies to address security issues
2024-01-08 11:14:22 -05:00
Jennifer Cwagenberg 51341d92ad build(sca): 🔒 update dependencies to address security issues 2024-01-08 08:42:21 -06:00
Piero Toffanin 25b9d92a32 Remove notice in web ui 2024-01-07 10:58:26 -05:00
Piero Toffanin 300d0b0d79
Add FAQ 2024-01-06 22:06:01 -05:00
EGuillemot f4d81ea8ba
Translated using Weblate (French)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/fr/
2024-01-04 01:08:20 +01:00
Piero Toffanin 5cb0cd6b3c Bump version 2024-01-03 13:33:01 -05:00
EGuillemot b85378646d
Translated using Weblate (French)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/fr/
2024-01-02 23:38:10 +00:00
fail a fail ddc46bc6f8
Translated using Weblate (French)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/fr/
2024-01-02 23:38:10 +00:00
EGuillemot 4158785089
Translated using Weblate (French)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/fr/
2024-01-02 23:38:09 +00:00
Piero Toffanin 18fa24c7e6
Update mirrors list 2023-12-30 12:01:38 -05:00
Piero Toffanin 6c2ff0e389
Discourse translator link update 2023-12-29 16:10:19 -05:00
Moji Norouzi zadeh 9ae6ee7ef3
Translated using Weblate (Persian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/fa/
2023-12-26 21:08:58 +00:00
Piero Toffanin 08be64d80c
Update README.md 2023-12-26 14:05:02 -05:00
Piero Toffanin dab87ee34c
Merge pull request #563 from SebouChu/main
Added Ruby API wrapper
2023-12-26 13:58:00 -05:00
Sébastien Gaya 0968a95391
Added Ruby API wrapper 2023-12-26 18:49:06 +01:00
Piero Toffanin e7773f2e94
Merge pull request #561 from euberdeveloper/main
build(docker): add arm version
2023-12-24 00:40:17 -05:00
euberdeveloper 57bcae918d build(docker): add arm version
Signed-off-by: euberdeveloper <euberdeveloper@gmail.com>
2023-12-24 02:24:55 +01:00
tuanta 2855d19323
Translated using Weblate (Vietnamese)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/vi/
2023-12-16 08:07:38 +00:00
Piero Toffanin c6be02a0c2
Merge pull request #557 from drivard/main
Removed helm chart directory. It is moved to its own repository. Upda…
2023-12-15 22:11:28 -05:00
Dominick Rivard 09f47b3ffa Update helm install command 2023-12-15 16:14:33 -05:00
Dominick Rivard ca559711cc Removed helm chart directory. It is moved to its own repository. Updated the readme file. 2023-12-15 16:04:20 -05:00
Piero Toffanin f1524218ce
Merge pull request #555 from drivard/main
Update README.md with Helm installation instructions
2023-12-14 20:46:21 -05:00
Dominick Rivard 55f0bbe768 Update README.md with Helm installation instructions 2023-12-14 20:26:06 -05:00
Piero Toffanin e221721e23
Merge pull request #554 from pierotofy/salad
Workaround for salad
2023-12-11 17:23:00 -05:00
Piero Toffanin 310b71c056 Workaround for salad 2023-12-11 17:14:27 -05:00
Piero Toffanin 7508dbaa46
Merge pull request #553 from rasos/patch-1
Add k8s.yaml to kubernetes section of readme.md
2023-12-10 11:20:03 -05:00
Roland 822aa1c632
Update README.md
Add k8s.yaml to kubernetes section of readme
2023-12-10 10:12:36 +01:00
ArnoldCordewiner 08a711631b
Translated using Weblate (Dutch)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/nl/
2023-12-09 22:07:03 +01:00
Piero Toffanin c6fe6cfdbf
Merge pull request #551 from LibreTranslate/dependabot/github_actions/actions/setup-python-5
Bump actions/setup-python from 4 to 5
2023-12-06 13:34:03 -05:00
dependabot[bot] c186d72f27
Bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 16:07:07 +00:00
Aitor Salaberria 57a87f35ee
Translated using Weblate (Basque)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/eu/
2023-12-05 21:06:25 +01:00
Aitor Salaberria a1b8b8beba
Added translation using Weblate (Basque) 2023-12-04 20:53:43 +01:00
Fqwe1 18d3a5a03c
Translated using Weblate (Ukrainian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/uk/
2023-11-26 08:04:46 +01:00
Bezruchenko Simon 65fdbe8c5f
Translated using Weblate (Ukrainian)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/uk/
2023-11-22 21:02:48 +01:00
symegac 172e1e56ee
Translated using Weblate (Danish)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/da/
2023-11-18 06:03:12 +01:00
Piero Toffanin bbb2ba3b70
Merge pull request #542 from pierotofy/decay
Add hourly decay limit
2023-11-16 15:51:28 -05:00
Piero Toffanin 6d6202de83 Add hourly decay limit 2023-11-16 15:43:47 -05:00
Piero Toffanin a4a67b2b79 Prevent div by zero 2023-11-15 15:02:23 -05:00
Piero Toffanin 80b510b1ad
Merge pull request #541 from pierotofy/cost
Dynamic limiter costs
2023-11-15 14:59:10 -05:00
Piero Toffanin 48464938cb Fix tab 2023-11-15 14:49:53 -05:00
Piero Toffanin 9bc342a9ae Cleanup 2023-11-15 14:47:44 -05:00
Piero Toffanin f3bf89375f Dynamic limit costs 2023-11-15 14:34:20 -05:00
Piero Toffanin 0aa4bcac7f Add FAQ 2023-11-15 13:57:54 -05:00
Piero Toffanin b0a84f30f4
Merge pull request #540 from pierotofy/pin
Pin torch to 2.0.1
2023-11-15 13:18:43 -05:00
Piero Toffanin e0d20c2cba Up version 2023-11-15 13:13:36 -05:00
Piero Toffanin 5120f122f1 Pin torch to 2.0.1 2023-11-15 13:11:52 -05:00
Piero Toffanin 57c7f63cce
Merge pull request #537 from pierotofy/hourly
Add hourly req limit option
2023-11-10 15:00:49 -05:00
Piero Toffanin 4903ab757c Add --hourly-req-limit 2023-11-10 14:56:52 -05:00
Piero Toffanin 7f0ae82f14
Merge pull request #534 from argosopentech/patch-2
Remove translate.argosopentech.com mirror
2023-11-09 11:03:29 -05:00
Argos Open Tech d750584abe
Remove translate.argosopentech.com mirror
This instance is already overburdened and I want to stop directing new users to it.

I'm having a hard time keeping the translate.argosopentech.com LibreTranslate mirror up on the current server. The CPU usage is consistently at 100% because so many people are making requests. I limited requests to 3/minute per IP address but am still having issues.
2023-11-09 09:50:47 -06:00
Piero Toffanin 4761ae5c43
Merge pull request #533 from pierotofy/batchfix
Fix batch auto language detection
2023-11-08 22:04:45 -05:00
Piero Toffanin 8427f86275 Minor refactor 2023-11-08 21:58:59 -05:00
Piero Toffanin 37bd2365b9 Bump version 2023-11-08 21:57:14 -05:00
Piero Toffanin dc194db0dd Refactor translate_file endpoint 2023-11-08 21:55:55 -05:00
Piero Toffanin cbe1c5db71 Fix auto batch translation 2023-11-08 21:49:56 -05:00
Piero Toffanin 3ad487f4bf
Update issue-triage.yml 2023-11-08 09:07:42 -05:00
Piero Toffanin 95c4cf6466 Add issue triage 2023-11-07 17:36:36 -05:00
Rex_sa 881a0e8874
Translated using Weblate (Arabic)
Translation: LibreTranslate/App
Translate-URL: https://hosted.weblate.org/projects/libretranslate/app/ar/
2023-11-02 04:00:21 +00:00
Piero Toffanin 92df4c3e6b
Merge pull request #528 from pierotofy/ld
Use langdetect
2023-10-30 20:54:35 -04:00
Piero Toffanin 02ea8ae011 Switch linguars for langdetect 2023-10-30 20:39:30 -04:00
Piero Toffanin 5033f58e0d Handle zt lingua case 2023-10-30 13:23:16 -04:00
Piero Toffanin f9712c800c
Merge pull request #526 from pierotofy/langdetect
Use lingua for language detection
2023-10-30 13:14:04 -04:00
Piero Toffanin 2972292fc5 Fix string index out of range fault 2023-10-30 13:09:39 -04:00
Piero Toffanin a9bff7929c Bump version 2023-10-30 12:53:03 -04:00
Piero Toffanin 6ff5bba000 Add lexilang for language detection on short texts 2023-10-30 12:52:33 -04:00
Piero Toffanin c9592a236a Fix trailing whitespace 2023-10-30 00:35:40 -04:00
Piero Toffanin 3fd2abc1f9 Run ruff 2023-10-30 00:20:11 -04:00
Piero Toffanin 522b8b03d7 Fix some warnings 2023-10-30 00:09:52 -04:00
Piero Toffanin 6c5fa2a4ee Use lingua for language detection 2023-10-30 00:03:00 -04:00
59 changed files with 6427 additions and 1736 deletions

30
.github/workflows/issue-triage.yml vendored Normal file
View file

@ -0,0 +1,30 @@
name: Issue Triage
on:
issues:
types:
- opened
jobs:
issue_triage:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- uses: pierotofy/issuewhiz@v1
with:
ghToken: ${{ secrets.GITHUB_TOKEN }}
openAI: ${{ secrets.OPENAI_TOKEN }}
filter: |
- "#"
variables: |
- Q: "A question about using a software or seeking guidance on doing something?"
- B: "Reporting an issue, an exception, a stack trace, or a software bug?"
- T: "Reporting a problem with an inaccurate, awkward or erroneous translation?"
- E: "Contains a suggestion for an improvement or a feature request?"
- SC: "Describes an issue related to compiling or building source code?"
logic: |
- "Q and (not B) and (not E) and (not SC)": [comment: "Could we move this conversation over to the forum at https://community.libretranslate.com? :pray: The forum is the right place to ask questions (we try to keep the GitHub issue tracker for feature requests and bugs only). Thank you! :+1:", close: true, stop: true]
- "B and (not T) and (not E) and (not SC)": [label: "possible bug", stop: true]
- "T or E": [label: "enhancement", stop: true]
- "SC": [label: "possible bug"]
signature: "p.s. I'm just an automated script, not a human being."

View file

@ -44,6 +44,22 @@ jobs:
env:
TAG: ${{ startsWith(github.ref, 'refs/tags/') && steps.get-variables.outputs.version || 'latest' }}
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Build and push Cuda Image
uses: docker/build-push-action@v5
with:

View file

@ -20,7 +20,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.8'
- name: Install dependencies

View file

@ -24,7 +24,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

View file

@ -9,8 +9,6 @@ repos:
name: " ✔️ Check TOML"
- id: check-json
name: " ✔️ Check JSON"
- id: trailing-whitespace
name: " ✂️ Trim trailing whitespaces"
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.0.277
hooks:

129
README.md
View file

@ -38,6 +38,8 @@ Response:
}
```
List of language codes: https://libretranslate.com/languages
### Auto Detect Language
Request:
@ -165,26 +167,27 @@ Arguments passed to the process or set via environment variables are split into
### Configuration Parameters
| Argument | Description | Default Parameter | Env. name |
|-----------------------------|-------------------------------------------------------------------------------------------------------------| -------------------- |------------------------------|
| --host | Set host to bind the server to | `127.0.0.1` | LT_HOST |
| --port | Set port to bind the server to | `5000` | LT_PORT |
| --char-limit | Set character limit | `No limit` | LT_CHAR_LIMIT |
| --req-limit | Set maximum number of requests per minute per client (outside of limits set by api keys) | `No limit` | LT_REQ_LIMIT |
| --req-limit-storage | Storage URI to use for request limit data storage. See [Flask Limiter](https://flask-limiter.readthedocs.io/en/stable/configuration.html) | `memory://` | LT_REQ_LIMIT_STORAGE |
| --batch-limit | Set maximum number of texts to translate in a batch request | `No limit` | LT_BATCH_LIMIT |
| --ga-id | Enable Google Analytics on the API client page by providing an ID | `Empty (no tracking)` | LT_GA_ID |
| --frontend-language-source | Set frontend default language - source | `auto` | LT_FRONTEND_LANGUAGE_SOURCE |
| --frontend-language-target | Set frontend default language - target | `locale` (match site's locale) | LT_FRONTEND_LANGUAGE_TARGET |
| --frontend-timeout | Set frontend translation timeout | `500` | LT_FRONTEND_TIMEOUT |
| --api-keys-db-path | Use a specific path inside the container for the local database. Can be absolute or relative | `db/api_keys.db` | LT_API_KEYS_DB_PATH |
| --api-keys-remote | Use this remote endpoint to query for valid API keys instead of using the local database | `Empty (use local db instead)` | LT_API_KEYS_REMOTE |
| --get-api-key-link | Show a link in the UI where to direct users to get an API key | `Empty (no link shown on web ui)` | LT_GET_API_KEY_LINK |
| --shared-storage | Shared storage URI to use for multi-process data sharing (e.g. when using gunicorn) | `memory://` | LT_SHARED_STORAGE |
| --load-only | Set available languages | `Empty (use all from argostranslate)` | LT_LOAD_ONLY |
| --threads | Set number of threads | `4` | LT_THREADS |
| --metrics-auth-token | Protect the /metrics endpoint by allowing only clients that have a valid Authorization Bearer token | `Empty (no auth required)` | LT_METRICS_AUTH_TOKEN |
| --url-prefix | Add prefix to URL: example.com:5000/url-prefix/ | `/` | LT_URL_PREFIX |
| Argument | Description | Default Parameter | Env. name |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | --------------------------- |
| --host | Set host to bind the server to | `127.0.0.1` | LT_HOST |
| --port | Set port to bind the server to | `5000` | LT_PORT |
| --char-limit | Set character limit | `No limit` | LT_CHAR_LIMIT |
| --req-limit | Set maximum number of requests per minute per client (outside of limits set by api keys) | `No limit` | LT_REQ_LIMIT |
| --req-limit-storage | Storage URI to use for request limit data storage. See [Flask Limiter](https://flask-limiter.readthedocs.io/en/stable/configuration.html) | `memory://` | LT_REQ_LIMIT_STORAGE |
| --req-time-cost | Considers a time cost (in seconds) for request limiting purposes. If a request takes 10 seconds and this value is set to 5, the request cost is either 2 or the actual request cost (whichever is greater). | `No time cost` | LT_REQ_TIME_COST |
| --batch-limit | Set maximum number of texts to translate in a batch request | `No limit` | LT_BATCH_LIMIT |
| --ga-id | Enable Google Analytics on the API client page by providing an ID | `Empty (no tracking)` | LT_GA_ID |
| --frontend-language-source | Set frontend default language - source | `auto` | LT_FRONTEND_LANGUAGE_SOURCE |
| --frontend-language-target | Set frontend default language - target | `locale` (match site's locale) | LT_FRONTEND_LANGUAGE_TARGET |
| --frontend-timeout | Set frontend translation timeout | `500` | LT_FRONTEND_TIMEOUT |
| --api-keys-db-path | Use a specific path inside the container for the local database. Can be absolute or relative | `db/api_keys.db` | LT_API_KEYS_DB_PATH |
| --api-keys-remote | Use this remote endpoint to query for valid API keys instead of using the local database | `Empty (use local db instead)` | LT_API_KEYS_REMOTE |
| --get-api-key-link | Show a link in the UI where to direct users to get an API key | `Empty (no link shown on web ui)` | LT_GET_API_KEY_LINK |
| --shared-storage | Shared storage URI to use for multi-process data sharing (e.g. when using gunicorn) | `memory://` | LT_SHARED_STORAGE |
| --load-only | Set available languages | `Empty (use all from argostranslate)` | LT_LOAD_ONLY |
| --threads | Set number of threads | `4` | LT_THREADS |
| --metrics-auth-token | Protect the /metrics endpoint by allowing only clients that have a valid Authorization Bearer token | `Empty (no auth required)` | LT_METRICS_AUTH_TOKEN |
| --url-prefix | Add prefix to URL: example.com:5000/url-prefix/ | `/` | LT_URL_PREFIX |
### Notes:
@ -225,13 +228,29 @@ You can pass application arguments directly to Gunicorn via:
gunicorn --bind 0.0.0.0:5000 'wsgi:app(api_keys=True)'
```
## Run with Kubernetes
## Kubernetes Deployment
See ["LibreTranslate: your own translation service on Kubernetes" by JM Robles](https://jmrobles.medium.com/libretranslate-your-own-translation-service-on-kubernetes-b46c3e1af630)
See [Medium article by JM Robles](https://jmrobles.medium.com/libretranslate-your-own-translation-service-on-kubernetes-b46c3e1af630) and the improved [k8s.yaml](https://github.com/LibreTranslate/LibreTranslate/blob/main/k8s.yaml) by @rasos.
### Helm Chart
Based on @rasos work you can now install LibreTranslate on Kubernetes using Helm.
A Helm chart is now available in the [helm-chart](https://github.com/LibreTranslate/helm-chart/) repository where you can find more details.
You can quickly install LibreTranslate on Kubernetes using Helm with the following command:
```bash
helm repo add libretranslate https://libretranslate.github.io/helm-chart/
helm repo update
helm search repo libretranslate
helm install libretranslate libretranslate/libretranslate --namespace libretranslate --create-namespace
```
## 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.
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. You can also specify different character limits that bypass the default `--char-limit` value on a per-key basis.
To use API keys simply start LibreTranslate with the `--api-keys` option. If you modified the API keys database path with the option `--api-keys-db-path`, you must specify the path with the same argument flag when using the `ltmanage keys` command.
@ -243,6 +262,12 @@ To issue a new API key with 120 requests per minute limits:
ltmanage keys add 120
```
To issue a new API key with 120 requests per minute and a maximum of 5,000 characters per request:
```bash
ltmanage keys add 120 --char-limit 5000
```
If you changed the API keys database path:
```bash
@ -308,6 +333,7 @@ You can use the LibreTranslate API using the following bindings:
- Rust: <https://github.com/DefunctLizard/libretranslate-rs>
- Node.js: <https://github.com/franciscop/translate>
- TypeScript: <https://github.com/tderflinger/libretranslate-ts>
- .Net: <https://github.com/sigaloid/LibreTranslate.Net>
- Go: <https://github.com/SnakeSel/libretranslate>
- Python: <https://github.com/argosopentech/LibreTranslate-py>
@ -317,10 +343,12 @@ You can use the LibreTranslate API using the following bindings:
- Unix: <https://github.com/argosopentech/LibreTranslate-sh>
- Shell: <https://github.com/Hayao0819/Hayao-Tools/tree/master/libretranslate-sh>
- Java: <https://github.com/suuft/libretranslate-java>
- Ruby: <https://github.com/noesya/libretranslate>
- R: <https://github.com/myanesp/libretranslateR>
## Discourse Plugin
You can use this [discourse translator plugin](https://github.com/LibreTranslate/discourse-translator) to translate [Discourse](https://discourse.org) topics. To install it simply modify `/var/discourse/containers/app.yml`:
You can use the [official discourse translator plugin](https://github.com/discourse/discourse-translator) to translate [Discourse](https://discourse.org) topics with LibreTranslate. To install it simply modify `/var/discourse/containers/app.yml`:
```yaml
## Plugins go here
@ -331,7 +359,7 @@ hooks:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/LibreTranslate/discourse-translator
- git clone https://github.com/discourse/discourse-translator
...
```
@ -356,8 +384,6 @@ This is a list of public LibreTranslate instances, some require an API key. If y
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.argosopentech.com](https://translate.argosopentech.com/)|-
[translate.foxhaven.cyou](https://translate.foxhaven.cyou/)|-
[translate.terraprint.co](https://translate.terraprint.co/)|-
[trans.zillyhuhn.com](https://trans.zillyhuhn.com/)|-
[libretranslate.eownerdead.dedyn.io](https://libretranslate.eownerdead.dedyn.io)|-
@ -401,7 +427,7 @@ 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 | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/cs/)
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/)
@ -435,17 +461,24 @@ Vietnamese | | [Edit](https://hosted.weblate.org/translate/libretranslate/app/v
Help us by opening a pull request!
- [x] A docker image (thanks [@vemonet](https://github.com/vemonet) !)
- [x] Auto-detect input language (thanks [@vemonet](https://github.com/vemonet) !)
- [X] User authentication / tokens
- [ ] Language bindings for every computer language
- [ ] [Improved translations](https://community.libretranslate.com/t/the-best-way-to-train-models/172)
Any other idea is welcome also.
## FAQ
### Can I use your API server at libretranslate.com for my application in production?
In short, no. [You need to buy an API key](https://portal.libretranslate.com). You can always run LibreTranslate for free on your own server of course.
In short, yes, [but only if you buy an API key](https://portal.libretranslate.com). You can always run LibreTranslate for free on your own server of course.
### Some translations on libretranslate.com are different than the self-hosted ones. Why?
By default language models are loaded from the [argos-index](https://github.com/argosopentech/argospm-index). Sometimes we deploy models on libretranslate.com that haven't been added to the argos-index yet, such as those converted from OPUS ([thread](https://community.libretranslate.com/t/opus-mt-language-models-port-thread/757))
### Where are the language models saved?
In `$HOME/.local/share/argos-translate/packages`. On Windows that's `C:\Users\youruser\.local\share\argos-translate\packages`.
### Can I use LibreTranslate behind a reverse proxy, like Apache2 or Caddy?
@ -607,6 +640,38 @@ Add this to an existing NGINX config or save it as `libretranslate` in the `/etc
</details>
### Can I do batch translations?
Yes, pass an array of strings instead of a string to the `q` field:
```javascript
const res = await fetch("https://libretranslate.com/translate", {
method: "POST",
body: JSON.stringify({
q: ["Hello", "world"],
source: "en",
target: "es"
}),
headers: { "Content-Type": "application/json" }
});
console.log(await res.json());
// {
// "translatedText": [
// "Hola",
// "mundo"
// ]
// }
```
## Contributing
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.
## Credits
This work is largely possible thanks to [Argos Translate](https://github.com/argosopentech/argos-translate), which powers the translation engine.

View file

@ -1 +1 @@
1.4.1
1.5.7

View file

@ -1,4 +0,0 @@
apiVersion: v2
name: libretranslate
description: A Helm chart for Kubernetes to deploy LibreTranslate API
version: 0.1.0

View file

@ -1,58 +0,0 @@
# LibreTranslate Helm Chart
This Helm chart deploys a LibreTranslate instance on a Kubernetes cluster using the Helm package manager.
## Prerequisites
- Kubernetes 1.12+
- Helm 3.0+
## Installing the Chart
To install the chart with the release name `libretranslate`:
```bash
helm install libretranslate ./chart --namespace libretranslate --create-namespace
```
This command deploys LibreTranslate on the Kubernetes cluster with the default configuration. The [values.yaml](values.yaml) file lists the parameters that can be configured during installation.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `libretranslate` deployment:
```bash
helm delete libretranslate
```
This command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
See [values.yaml](values.yaml) for the full list of parameters that can be configured. You can specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```bash
helm install libretranslate ./chart --namespace libretranslate --create-namespace --set service.port=8080
```
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
```bash
helm install libretranslate ./chart --namespace libretranslate --create-namespace -f values.yaml
```
## Upgrade
Run the following command to upgrade your LibreTranslate installation. This command will use the Helm chart in the ./chart directory, apply the custom values from values.yaml, and deploy the upgrade to the `libretranslate` namespace:
```bash
helm upgrade --install libretranslate ./chart --namespace libretranslate -f values.yaml
```
> **Tip**: You can use the default [values.yaml](values.yaml)
# References
- [https://jmrobles.medium.com/libretranslate-your-own-translation-service-on-kubernetes-b46c3e1af630](https://jmrobles.medium.com/libretranslate-your-own-translation-service-on-kubernetes-b46c3e1af630)
- [https://github.com/LibreTranslate/LibreTranslate](https://github.com/LibreTranslate/LibreTranslate)

View file

@ -1,45 +0,0 @@
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
http{{ if .Values.ingress.tls }}s{{ end }}://{{ index .Values.ingress.hosts 0 "host" }}{{ index .Values.ingress.hosts 0 "paths" 0 "path" }}
{{- if .name }}
- http{{ if .Values.ingress.tls }}s{{ end }}://{{ .name }}{{ .path }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "libretranslate.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get svc -w {{ include "libretranslate.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "libretranslate.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "libretranslate.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:{{ .Values.service.port }}
{{- end }}
2. Get your admin username and password:
USER=$(kubectl get secret {{ include "libretranslate.fullname" . }}-auth -o jsonpath="{.data.username}" | base64 --decode)
PASSWORD=$(kubectl get secret {{ include "libretranslate.fullname" . }}-auth -o jsonpath="{.data.password}" | base64 --decode)
echo "Username: $USER"
echo "Password: $PASSWORD"
3. Manage your LibreTranslate API keys:
If you setted `--api-keys true` to use the api keys in the StatefulSet, you can manage them with the following commands:
# this will add an api key with a limit of 120 requests per minute
kubectl exec -it {{ include "libretranslate.fullname" . }}-0 -c {{ include "libretranslate.fullname" . }} -- /bin/bash -c "source ./venv/bin/activate && ltmanage keys add --key req-limit-120 120"
# returns a list of all api keys
kubectl exec -it {{ include "libretranslate.fullname" . }}-0 -c {{ include "libretranslate.fullname" . }} -- /bin/bash -c "source ./venv/bin/activate && ltmanage keys"
# remove an api key
kubectl exec -it {{ include "libretranslate.fullname" . }}-0 -c {{ include "libretranslate.fullname" . }} -- /bin/bash -c "source ./venv/bin/activate && ltmanage keys remove req-limit-120"
*** Be aware that the api keys are stored in a sqlite database in the pod. If you scale the pod to multiple replicas, the api keys will not be synced between the pods. You can use a shared storage to sync the api keys between the pods. For example, you can use a NFS storage class with a ReadWriteMany access mode to store the api keys in a shared perspective. ***
```

View file

@ -1,51 +0,0 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "libretranslate.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "libretranslate.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "libretranslate.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "libretranslate.labels" -}}
helm.sh/chart: {{ include "libretranslate.chart" . }}
{{ include "libretranslate.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "libretranslate.selectorLabels" -}}
app.kubernetes.io/name: {{ include "libretranslate.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View file

@ -1,39 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: libretranslate-config
data:
host: {{ .Values.appConfig.host | squote }}
port: {{ .Values.appConfig.port | squote }}
charLimit: {{ .Values.appConfig.charLimit | squote }}
reqLimit: {{ .Values.appConfig.reqLimit | squote }}
reqLimitStorage: {{ .Values.appConfig.reqLimitStorage | squote }}
batchLimit: {{ .Values.appConfig.batchLimit | squote }}
gaId: {{ .Values.appConfig.gaId | squote }}
frontendLanguageSource: {{ .Values.appConfig.frontendLanguageSource | squote }}
frontendLanguageTarget: {{ .Values.appConfig.frontendLanguageTarget | squote }}
frontendTimeout: {{ .Values.appConfig.frontendTimeout | squote }}
apiKeysDbPath: {{ .Values.appConfig.apiKeysDbPath | squote }}
apiKeysRemote: {{ .Values.appConfig.apiKeysRemote | squote }}
getApiKeyLink: {{ .Values.appConfig.getApiKeyLink | squote }}
sharedStorage: {{ .Values.appConfig.sharedStorage | squote }}
loadOnly: {{ .Values.appConfig.loadOnly | squote }}
threads: {{ .Values.appConfig.threads | squote }}
metricsAuthToken: {{ .Values.appConfig.metricsAuthToken | squote }}
urlPrefix: {{ .Values.appConfig.urlPrefix | squote }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: libretranslate-appsettings
data:
debug: {{ .Values.appSettings.debug | squote }}
ssl: {{ .Values.appSettings.ssl | squote }}
apiKeys: {{ .Values.appSettings.apiKeys | squote }}
requireApiKeyOrigin: {{ .Values.appSettings.requireApiKeyOrigin | squote }}
requireApiKeySecret: {{ .Values.appSettings.requireApiKeySecret | squote }}
suggestions: {{ .Values.appSettings.suggestions | squote }}
disableFilesTranslation: {{ .Values.appSettings.disableFilesTranslation | squote }}
disableWebUi: {{ .Values.appSettings.disableWebUi | squote }}
updateModels: {{ .Values.appSettings.updateModels | squote }}
metrics: {{ .Values.appSettings.metrics | squote }}

View file

@ -1,40 +0,0 @@
{{- if .Values.ingress.enabled -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "libretranslate.fullname" . }}
labels:
{{- include "libretranslate.labels" . | nindent 4 }}
annotations:
{{- toYaml .Values.ingress.annotations | nindent 4 }}
spec:
{{- if .Values.ingress.className }}
ingressClassName: {{ .Values.ingress.className }}
{{- end }}
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- $fullName := include "libretranslate.fullname" $ }}
{{- range .paths }}
- path: {{ .path }}
pathType: {{ .pathType }}
backend:
service:
name: {{ include "libretranslate.fullname" $ }}
port:
number: {{ $.Values.service.port }}
{{- end }}
{{- end }}
{{- end }}

View file

@ -1,36 +0,0 @@
{{- if and .Values.persistence.enabled (eq .Values.persistence.db.accessMode "ReadWriteMany") }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: db-volume
labels:
app.kubernetes.io/name: {{ include "libretranslate.name" . }}-pv
spec:
accessModes:
- {{ .Values.persistence.db.accessMode }}
resources:
requests:
storage: {{ .Values.persistence.db.size }}
{{- if .Values.persistence.db.storageClass }}
storageClassName: {{ .Values.persistence.db.storageClass | quote }}
{{- end }}
{{- end }}
{{- if and .Values.persistence.enabled (eq .Values.persistence.models.accessMode "ReadWriteMany") }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: models-volume
labels:
app.kubernetes.io/name: {{ include "libretranslate.name" . }}-pvc
spec:
accessModes:
- {{ .Values.persistence.models.accessMode }}
resources:
requests:
storage: {{ .Values.persistence.models.size }}
{{- if .Values.persistence.models.storageClass }}
storageClassName: {{ .Values.persistence.models.storageClass | quote }}
{{- end }}
{{- end }}

View file

@ -1,9 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ include "libretranslate.fullname" . }}-auth
type: Opaque
data:
auth: {{ .Values.adminUser.auth | quote }}
username: {{ .Values.adminUser.name | quote }}
password: {{ .Values.adminUser.password | quote }}

View file

@ -1,15 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "libretranslate.fullname" . }}
labels:
{{- include "libretranslate.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "libretranslate.selectorLabels" . | nindent 4 }}

View file

@ -1,344 +0,0 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ include "libretranslate.fullname" . }}
labels:
{{- include "libretranslate.labels" . | nindent 4 }}
{{- if .Values.annotations }}
annotations:
{{- toYaml .Values.annotations | nindent 4 }}
{{- end }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "libretranslate.selectorLabels" . | nindent 6 }}
template:
metadata:
annotations:
{{- if .Values.podAnnotations }}
{{- toYaml .Values.podAnnotations | nindent 8 }}
{{- end }}
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
labels:
{{- include "libretranslate.selectorLabels" . | nindent 8 }}
spec:
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{ toYaml .Values.imagePullSecrets | indent 8 }}
{{- end }}
{{- if .Values.securityContext }}
# forces the mount of the volumes to be mounted as libretranslate user and group
# and set permissions to libretranslate:libretranslate
securityContext:
{{- toYaml .Values.securityContext | nindent 8 }}
{{- end }}
{{- if .Values.persistence.enabled }}
initContainers:
- name: volume-permissions-and-pre-install-models
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command:
- /bin/bash
- -c
- |
mkdir -p /home/libretranslate/.local/share/argos-translate/packages
chown -R 1032:1032 /home/libretranslate/.local /app/db
if [ ! "$(ls -A /home/libretranslate/.local/share/argos-translate/packages)" ]; then
echo "Installing models... this can take quite a while depending on your internet connection."
/app/venv/bin/python /app/scripts/install_models.py --load_only_lang_codes {{ .Values.appConfig.loadOnly | quote }}
else
echo "The models directory is not empty, skipping model installation."
fi
volumeMounts:
- name: models-volume
mountPath: /home/libretranslate/.local/share/argos-translate
- name: db-volume
mountPath: {{ .Values.appConfig.apiKeysDbPathMount }}
{{- if .Values.initContainerSecurityContext }}
securityContext:
# forces the mount of the volumes to be mounted as libretranslate user and group
# and set permissions to libretranslate:libretranslate
{{- toYaml .Values.initContainerSecurityContext | nindent 12 }}
{{- end }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.port }}
protocol: TCP
resources:
{{- toYaml .Values.resources | nindent 12 }}
securityContext:
{{- if .Values.podSecurityContext }}
# forces the mount of the volumes to be mounted as libretranslate user and group
# and set permissions to libretranslate:libretranslate
{{- toYaml .Values.podSecurityContext | nindent 12 }}
{{- end }}
allowPrivilegeEscalation: false
readinessProbe:
{{- toYaml .Values.readinessProbe | nindent 12 }}
livenessProbe:
{{- toYaml .Values.livenessProbe | nindent 12 }}
env:
{{- if and (.Values.appSettings.debug) (ne .Values.appSettings.debug "") }}
- name: LT_DEBUG
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: debug
{{- end }}
{{- if and (.Values.appSettings.ssl) (ne .Values.appSettings.ssl "") }}
- name: LT_SSL
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: ssl
{{- end }}
{{- if and (.Values.appSettings.apiKeys) (ne .Values.appSettings.apiKeys "") }}
- name: LT_API_KEYS
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: apiKeys
{{- end }}
{{- if and (.Values.appSettings.requireApiKeyOrigin) (ne .Values.appSettings.requireApiKeyOrigin "") }}
- name: LT_REQUIRE_API_KEY_ORIGIN
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: requireApiKeyOrigin
{{- end }}
{{- if and (.Values.appSettings.requireApiKeySecret) (ne .Values.appSettings.requireApiKeySecret "") }}
- name: LT_REQUIRE_API_KEY_SECRET
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: requireApiKeySecret
{{- end }}
{{- if and (.Values.appSettings.suggestions) (ne .Values.appSettings.suggestions "") }}
- name: LT_SUGGESTIONS
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: suggestions
{{- end }}
{{- if and (.Values.appSettings.disableFilesTranslation) (ne .Values.appSettings.disableFilesTranslation "") }}
- name: LT_DISABLE_FILES_TRANSLATION
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: disableFilesTranslation
{{- end }}
{{- if and (.Values.appSettings.disableWebUi) (ne .Values.appSettings.disableWebUi "") }}
- name: LT_DISABLE_WEB_UI
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: disableWebUi
{{- end }}
{{- if and (.Values.appSettings.updateModels) (ne .Values.appSettings.updateModels "") }}
- name: LT_UPDATE_MODELS
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: updateModels
{{- end }}
{{- if and (.Values.appSettings.metrics) (ne .Values.appSettings.metrics "") }}
- name: LT_METRICS
valueFrom:
configMapKeyRef:
name: libretranslate-appsettings
key: metrics
{{- end }}
{{- if and (.Values.appConfig.host) (ne .Values.appConfig.host "") }}
- name: LT_HOST
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: host
{{- end }}
{{- if and (.Values.appSettings.port) (ne .Values.appSettings.port "") }}
- name: LT_PORT
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: port
{{- end }}
{{- if and (.Values.appConfig.charLimit) (ne .Values.appConfig.charLimit "") }}
- name: LT_CHAR_LIMIT
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: charLimit
{{- end }}
{{- if and (.Values.appConfig.reqLimit) (ne .Values.appConfig.reqLimit "") }}
- name: LT_REQ_LIMIT
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: reqLimit
{{- end }}
{{- if and (.Values.appConfig.reqLimitStorage) (ne .Values.appConfig.reqLimitStorage "") }}
- name: LT_REQ_LIMIT_STORAGE
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: reqLimitStorage
{{- end }}
{{- if and (.Values.appConfig.batchLimit) (ne .Values.appConfig.batchLimit "") }}
- name: LT_BATCH_LIMIT
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: batchLimit
{{- end }}
{{- if and (.Values.appConfig.gaId) (ne .Values.appConfig.gaId "") }}
- name: LT_GA_ID
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: gaId
{{- end }}
{{- if and (.Values.appConfig.frontendLanguageSource) (ne .Values.appConfig.frontendLanguageSource "") }}
- name: LT_FRONTEND_LANGUAGE_SOURCE
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: frontendLanguageSource
{{- end }}
{{- if and (.Values.appConfig.frontendLanguageTarget) (ne .Values.appConfig.frontendLanguageTarget "") }}
- name: LT_FRONTEND_LANGUAGE_TARGET
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: frontendLanguageTarget
{{- end }}
{{- if and (.Values.appConfig.frontendTimeout) (ne .Values.appConfig.frontendTimeout "") }}
- name: LT_FRONTEND_TIMEOUT
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: frontendTimeout
{{- end }}
{{- if and (.Values.appSettings.apiKeysDbPath) (ne .Values.appSettings.apiKeysDbPath "") }}
- name: LT_API_KEYS_DB_PATH
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: apiKeysDbPath
{{- end }}
{{- if and (.Values.appSettings.apiKeysRemote) (ne .Values.appSettings.apiKeysRemote "") }}
- name: LT_API_KEYS_REMOTE
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: apiKeysRemote
{{- end }}
{{- if and (.Values.appConfig.getApiKeyLink) (ne .Values.appConfig.getApiKeyLink "") }}
- name: LT_GET_API_KEY_LINK
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: getApiKeyLink
{{- end }}
{{- if and (.Values.appConfig.sharedStorage) (ne .Values.appConfig.sharedStorage "") }}
- name: LT_SHARED_STORAGE
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: sharedStorage
{{- end }}
{{- if and (.Values.appConfig.loadOnly) (ne .Values.appConfig.loadOnly "") }}
- name: LT_LOAD_ONLY
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: loadOnly
{{- end }}
{{- if and (.Values.appConfig.threads) (ne .Values.appConfig.threads "") }}
- name: LT_THREADS
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: threads
{{- end }}
{{- if and (.Values.appSettings.metricsAuthToken) (ne .Values.appSettings.metricsAuthToken "") }}
- name: LT_METRICS_AUTH_TOKEN
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: metricsAuthToken
{{- end }}
{{- if and (.Values.appConfig.urlPrefix) (ne .Values.appConfig.urlPrefix "") }}
- name: LT_URL_PREFIX
valueFrom:
configMapKeyRef:
name: libretranslate-config
key: urlPrefix
{{- end }}
{{- if .Values.persistence.enabled }}
volumeMounts:
- name: db-volume
mountPath: {{ .Values.appConfig.apiKeysDbPathMount }}
- name: models-volume
mountPath: /home/libretranslate/.local/share/argos-translate
{{- end }}
{{- if and .Values.persistence.enabled (or (eq .Values.persistence.models.accessMode "ReadWriteMany") (eq .Values.persistence.db.accessMode "ReadWriteMany")) }}
volumes:
{{- if eq .Values.persistence.db.accessMode "ReadWriteMany" }}
- name: db-volume
persistentVolumeClaim:
claimName: db-volume
{{- end }}
{{- if eq .Values.persistence.models.accessMode "ReadWriteMany" }}
- name: models-volume
persistentVolumeClaim:
claimName: models-volume
{{- end }}
{{- end }}
{{- if .Values.tolerations }}
tolerations:
{{- toYaml .Values.tolerations | nindent 6 }}
{{- end }}
{{- if and .Values.persistence.enabled (or (eq .Values.persistence.models.accessMode "ReadWriteOnce") (eq .Values.persistence.db.accessMode "ReadWriteOnce")) }}
# still in beta, but this will allow us to delete the volumes when the statefulset is scaled down
persistentVolumeClaimRetentionPolicy:
whenDeleted: Retain
whenScaled: Delete
volumeClaimTemplates:
{{- if eq .Values.persistence.models.accessMode "ReadWriteOnce" }}
- metadata:
name: models-volume
labels:
{{- include "libretranslate.labels" . | nindent 8 }}
spec:
accessModes:
- {{ .Values.persistence.models.accessMode }}
resources:
requests:
storage: {{ .Values.persistence.models.size }}
{{- if .Values.persistence.models.storageClass }}
storageClassName: {{ .Values.persistence.models.storageClass | quote }}
{{- end }}
{{- end }}
{{- if eq .Values.persistence.db.accessMode "ReadWriteOnce" }}
- metadata:
name: db-volume
labels:
{{- include "libretranslate.labels" . | nindent 8 }}
spec:
accessModes:
- {{ .Values.persistence.db.accessMode }}
resources:
requests:
storage: {{ .Values.persistence.db.size }}
{{- if .Values.persistence.db.storageClass }}
storageClassName: {{ .Values.persistence.db.storageClass | quote }}
{{- end }}
{{- end }}
{{- end }}

View file

@ -1,164 +0,0 @@
# values.yaml
# Number of replicas
replicaCount: 1
# Extra annotations for pods
podAnnotations: {}
# Extra annotations
annotations: {}
# Extra tolerations for pods
tolerations: []
# Chart name override
nameOverride: ""
# Full name of the deployment to override the default one
fullnameOverride: ""
# Image settings
image:
repository: libretranslate/libretranslate
pullPolicy: Always
tag: "latest"
# Using a Private Registry
# If you want to use a custom image from a private registry, you'll need to create an image pull secret with the registry's credentials:
# kubectl create secret docker-registry my-registry-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
# imagePullSecrets:
# - name: my-registry-secret
imagePullSecrets: []
# Service settings
service:
type: ClusterIP
port: 5000
# Ingress settings
ingress:
enabled: false
className: "" # set this to the name of the ingress controller class to use like nginx
annotations:
# cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/proxy-body-size: 10m
# Check for the adminUser key below.
# This will enable basic auth for the whole site.
# nginx.ingress.kubernetes.io/auth-type: basic
# nginx.ingress.kubernetes.io/auth-secret: libretranslate-auth
# nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required'
hosts:
- host: translate.example.com
paths:
- path: /
pathType: Prefix
# tls:
# - secretName: libretranslate-secret-tls
# hosts:
# - translate.example.com
# Security Context
securityContext:
fsGroup: 1032
# Security Context for init container
initContainerSecurityContext:
runAsUser: 0
runAsGroup: 0
# Pod Security Context
podSecurityContext:
runAsUser: 1032
runAsGroup: 1032
# Persistent settings
# if you don't want to download a copy of the models per pod, you can use a shared storage like an nfs storage class
# and set it to ReadWriteMany. this way if you scale the pods later on, they will all use the same models and won't
# duplicate the space and download requests.
persistence:
enabled: false
db:
storageClass: ""
accessMode: "ReadWriteOnce"
size: "1Gi"
models:
storageClass: ""
accessMode: "ReadWriteOnce"
size: "10Gi" # as of August 2023, the models are about 6.6GB in size for all languages
# Resource limits
resources:
limits:
cpu: 1
memory: 2Gi
requests:
cpu: 500m
memory: 1Gi
# Readiness probe for kubernetes
readinessProbe:
exec:
command:
- /app/venv/bin/python
- /app/scripts/healthcheck.py
initialDelaySeconds: 10
periodSeconds: 5
# Liveness probe for kubernetes
livenessProbe:
exec:
command:
- /app/venv/bin/python
- scripts/healthcheck.py
initialDelaySeconds: 10
periodSeconds: 5
# Auth secret for basic authentication
# generate base64-user-password-pair with:
# htpasswd -nb <username> <password> | base64
#
# e.g.:
#
# htpasswd -nb admin mySecretPassword | base64
# This is used by the nginx ingress controller to enable basic auth for the whole site.
# It will create a secret with the name libretranslate-auth.
adminUser:
name: "YWRtaW4K" # copy the username in base64 as a reference
auth: "YWRtaW46JGFwcjEkYlpydmYvUFYkSHBHSlhqZU1EN0ZON2kyYndsMVRNMQoK" # copy the output from the htpasswd command here as a reference
password: "bXlTZWNyZXRQYXNzd29yZAo=" # copy the password as base64 for the admin user here as a reference
# Settings / Flags
appSettings:
debug: "false" # Enable debug environment (Default: Disabled)
ssl: "false" # Enable SSL (Default: Disabled)
apiKeys: "false" # Enable API keys database for per-client rate limits when --req-limit is reached (Default: Don't use API keys)
requireApiKeyOrigin: "" # Require use of an API key for programmatic access to the API, unless the request origin matches this domain (Default: No restrictions on domain origin)
requireApiKeySecret: "" # Require use of an API key for programmatic access to the API, unless the client also sends a secret match (Default: No secrets required)
suggestions: "false" # Allow user suggestions (Default: Disabled)
disableFilesTranslation: "false" # Disable files translation (Default: File translation allowed)
disableWebUi: "false" # Disable web ui (Default: Web Ui enabled)
updateModels: "false" # Update language models at startup (Default: Only on if no models found)
metrics: "false" # Enable the /metrics endpoint for exporting Prometheus usage metrics (Default: Disabled)
# Configuration Parameters
appConfig:
host: "0.0.0.0" # Set host to bind the server to (Default: 127.0.0.1)
port: "5000" # Set port to bind the server to (Default: 5000)
charLimit: "null" # Set character limit (Default: No limit)
reqLimit: "null" # Set maximum number of requests per minute per client (outside of limits set by api keys) (Default: No limit)
reqLimitStorage: "memory://" # Storage URI to use for request limit data storage. See Flask Limiter (Default: memory://)
batchLimit: "null" # Set maximum number of texts to translate in a batch request (Default: No limit)
gaId: "" # Enable Google Analytics on the API client page by providing an ID (Default: Empty (no tracking))
frontendLanguageSource: "auto" # Set frontend default language - source (Default: auto)
frontendLanguageTarget: "locale" # Set frontend default language - target (Default: locale (match site's locale))
frontendTimeout: "500" # Set frontend translation timeout (Default: 500)
apiKeysDbPath: "/app/db/api_keys.db" # Use a specific path inside the container for the local database. Can be absolute or relative (Default: /app/db/api_keys.db)
apiKeysDbPathMount: "/app/db" # Use a specific path inside the container for the local database. Must be the same as apiKeysDbPath (Default: /app/db)
apiKeysRemote: "" # Use this remote endpoint to query for valid API keys instead of using the local database (Default: Empty (use local db instead))
getApiKeyLink: "" # Show a link in the UI where to direct users to get an API key (Default: Empty (no link shown on web ui))
sharedStorage: "memory://" # Shared storage URI to use for multi-process data sharing (e.g. when using gunicorn) (Default: memory://)
loadOnly: "" # Set available languages (Default: Empty (use all from argostranslate))
threads: "4" # Set number of threads (Default: 4)
metricsAuthToken: "" # Protect the /metrics endpoint by allowing only clients that have a valid Authorization Bearer token (Default: Empty (no auth required))
urlPrefix: "" # Add prefix to URL: example.com:5000/url-prefix/ (Default: /)

View file

@ -9,15 +9,24 @@ services:
restart: unless-stopped
ports:
- "5000:5000"
## Uncomment this for logging in docker compose logs
# tty: true
healthcheck:
test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
## Uncomment above command and define your args if necessary
# command: --ssl --ga-id MY-GA-ID --req-limit 100 --char-limit 500
## Uncomment this section and the `volumes` section if you want to backup your API keys
## Uncomment this section and the libretranslate_api_keys volume if you want to backup your API keys
# environment:
# - LT_API_KEYS=true
# - LT_API_KEYS_DB_PATH=/app/db/api_keys.db # Same result as `db/api_keys.db` or `./db/api_keys.db`
## Uncomment these vars and libretranslate_models volume to optimize loading time.
# - LT_UPDATE_MODELS=true
# - LT_LOAD_ONLY=en,fr
# volumes:
# - libretranslate_api_keys:/app/db/api_keys.db
# - libretranslate_api_keys:/app/db
# Keep the models in a docker volume, to avoid re-downloading on startup
# - libretranslate_models:/home/libretranslate/.local:rw
# volumes:
# libretranslate_api_keys:
# libretranslate_models:

View file

@ -1,4 +1,4 @@
FROM python:3.10.10-slim-bullseye as builder
FROM python:3.11.9-slim-bullseye as builder
WORKDIR /app
@ -19,7 +19,7 @@ RUN ./venv/bin/pip install Babel==2.12.1 && ./venv/bin/python scripts/compile_lo
&& ./venv/bin/pip install . \
&& ./venv/bin/pip cache purge
FROM python:3.10.10-slim-bullseye
FROM python:3.11.9-slim-bullseye
ARG with_models=false
ARG models=""
@ -30,6 +30,8 @@ USER libretranslate
COPY --from=builder --chown=1032:1032 /app /app
WORKDIR /app
COPY --from=builder --chown=1032:1032 /app/venv/bin/ltmanage /usr/bin/
RUN if [ "$with_models" = "true" ]; then \
# initialize the language models
if [ ! -z "$models" ]; then \
@ -40,4 +42,4 @@ RUN if [ "$with_models" = "true" ]; then \
fi
EXPOSE 5000
ENTRYPOINT [ "./venv/bin/libretranslate", "--host", "0.0.0.0" ]
ENTRYPOINT [ "./venv/bin/libretranslate", "--host", "*" ]

43
docker/arm.Dockerfile Normal file
View file

@ -0,0 +1,43 @@
FROM arm64v8/python:3.11.9-slim-bullseye as builder
WORKDIR /app
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq \
&& apt-get -qqq install --no-install-recommends -y pkg-config gcc g++ \
&& apt-get upgrade --assume-yes \
&& apt-get clean \
&& rm -rf /var/lib/apt
RUN python -mvenv venv && ./venv/bin/pip install --no-cache-dir --upgrade pip
COPY . .
# Install package from source code, compile translations
RUN ./venv/bin/pip install Babel==2.12.1 && ./venv/bin/python scripts/compile_locales.py \
&& ./venv/bin/pip install torch==2.0.1 --extra-index-url https://download.pytorch.org/whl/cpu \
&& ./venv/bin/pip install . \
&& ./venv/bin/pip cache purge
FROM arm64v8/python:3.11.9-slim-bullseye
ARG with_models=false
ARG models=""
RUN addgroup --system --gid 1032 libretranslate && adduser --system --uid 1032 libretranslate && mkdir -p /home/libretranslate/.local && chown -R libretranslate:libretranslate /home/libretranslate/.local
USER libretranslate
COPY --from=builder --chown=1032:1032 /app /app
WORKDIR /app
RUN if [ "$with_models" = "true" ]; then \
# initialize the language models
if [ ! -z "$models" ]; then \
./venv/bin/python scripts/install_models.py --load_only_lang_codes "$models"; \
else \
./venv/bin/python scripts/install_models.py; \
fi \
fi
EXPOSE 5000
ENTRYPOINT [ "./venv/bin/libretranslate", "--host", "*" ]

View file

@ -1,4 +1,4 @@
FROM nvidia/cuda:11.2.2-devel-ubuntu20.04
FROM nvidia/cuda:12.4.1-devel-ubuntu20.04
ENV ARGOS_DEVICE_TYPE cuda
ARG with_models=false
@ -42,4 +42,4 @@ RUN pip3 install Babel==2.12.1 && python3 scripts/compile_locales.py \
# ENV LD_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/cuda/lib64
EXPOSE 5000
ENTRYPOINT [ "libretranslate", "--host", "0.0.0.0" ]
ENTRYPOINT [ "libretranslate", "--host", "*" ]

View file

@ -32,41 +32,49 @@ class Database:
"""CREATE TABLE IF NOT EXISTS api_keys (
"api_key" TEXT NOT NULL,
"req_limit" INTEGER NOT NULL,
"char_limit" INTEGER DEFAULT NULL,
PRIMARY KEY("api_key")
);"""
)
# Schema/upgrade checks
schema = self.c.execute("SELECT sql FROM sqlite_master WHERE type='table' AND name='api_keys';").fetchone()[0]
if '"char_limit" INTEGER DEFAULT NULL' not in schema:
self.c.execute('ALTER TABLE api_keys ADD COLUMN "char_limit" INTEGER DEFAULT NULL;')
def lookup(self, api_key):
req_limit = self.cache.get(api_key)
if req_limit is None:
val = self.cache.get(api_key)
if val is None:
# DB Lookup
stmt = self.c.execute(
"SELECT req_limit FROM api_keys WHERE api_key = ?", (api_key,)
"SELECT req_limit, char_limit FROM api_keys WHERE api_key = ?", (api_key,)
)
row = stmt.fetchone()
if row is not None:
self.cache[api_key] = row[0]
req_limit = row[0]
self.cache[api_key] = row
val = row
else:
self.cache[api_key] = False
req_limit = False
val = False
if isinstance(req_limit, bool):
req_limit = None
if isinstance(val, bool):
val = None
return req_limit
return val
def add(self, req_limit, api_key="auto"):
def add(self, req_limit, api_key="auto", char_limit=None):
if api_key == "auto":
api_key = str(uuid.uuid4())
if char_limit == 0:
char_limit = None
self.remove(api_key)
self.c.execute(
"INSERT INTO api_keys (api_key, req_limit) VALUES (?, ?)",
(api_key, req_limit),
"INSERT INTO api_keys (api_key, req_limit, char_limit) VALUES (?, ?, ?)",
(api_key, req_limit, char_limit),
)
self.c.commit()
return (api_key, req_limit)
return (api_key, req_limit, char_limit)
def remove(self, api_key):
self.c.execute("DELETE FROM api_keys WHERE api_key = ?", (api_key,))
@ -74,7 +82,7 @@ class Database:
return api_key
def all(self):
row = self.c.execute("SELECT api_key, req_limit FROM api_keys")
row = self.c.execute("SELECT api_key, req_limit, char_limit FROM api_keys")
return row.fetchall()
@ -84,8 +92,8 @@ class RemoteDatabase:
self.cache = ExpiringDict(max_len=max_cache_len, max_age_seconds=max_cache_age)
def lookup(self, api_key):
req_limit = self.cache.get(api_key)
if req_limit is None:
val = self.cache.get(api_key)
if val is None:
try:
r = requests.post(self.url, data={'api_key': api_key}, timeout=60)
res = r.json()
@ -93,7 +101,12 @@ class RemoteDatabase:
print("Cannot authenticate API key: " + str(e))
return None
req_limit = res.get('req_limit', None) if res.get('error', None) is None else None
self.cache[api_key] = req_limit
if res.get('error') is not None:
return None
return req_limit
req_limit = res.get('req_limit', None)
char_limit = res.get('char_limit', None)
self.cache[api_key] = (req_limit, char_limit)
return val

View file

@ -1,4 +1,5 @@
import io
import math
import os
import re
import tempfile
@ -89,21 +90,37 @@ def get_remote_address():
return ip
def get_req_limits(default_limit, api_keys_db, multiplier=1):
def get_req_limits(default_limit, api_keys_db, db_multiplier=1, multiplier=1):
req_limit = default_limit
if api_keys_db:
api_key = get_req_api_key()
if api_key:
db_req_limit = api_keys_db.lookup(api_key)
if db_req_limit is not None:
req_limit = db_req_limit * multiplier
api_key_limits = api_keys_db.lookup(api_key)
if api_key_limits is not None:
req_limit = api_key_limits[0] * db_multiplier
return req_limit
return int(req_limit * multiplier)
def get_routes_limits(default_req_limit, daily_req_limit, api_keys_db):
def get_char_limit(default_limit, api_keys_db):
char_limit = default_limit
if api_keys_db:
api_key = get_req_api_key()
if api_key:
api_key_limits = api_keys_db.lookup(api_key)
if api_key_limits is not None:
if api_key_limits[1] is not None:
char_limit = api_key_limits[1]
return char_limit
def get_routes_limits(args, api_keys_db):
default_req_limit = args.req_limit
if default_req_limit == -1:
# TODO: better way?
default_req_limit = 9999999999999
@ -111,12 +128,22 @@ def get_routes_limits(default_req_limit, daily_req_limit, api_keys_db):
def minute_limits():
return "%s per minute" % get_req_limits(default_req_limit, api_keys_db)
def hourly_limits(n):
def func():
decay = (0.75 ** (n - 1))
return "{} per {} hour".format(get_req_limits(args.hourly_req_limit * n, api_keys_db, int(os.environ.get("LT_HOURLY_REQ_LIMIT_MULTIPLIER", 60) * n), decay), n)
return func
def daily_limits():
return "%s per day" % get_req_limits(daily_req_limit, api_keys_db, 1440)
return "%s per day" % get_req_limits(args.daily_req_limit, api_keys_db, int(os.environ.get("LT_DAILY_REQ_LIMIT_MULTIPLIER", 1440)))
res = [minute_limits]
if daily_req_limit > 0:
if args.hourly_req_limit > 0:
for n in range(1, args.hourly_req_limit_decay + 2):
res.append(hourly_limits(n))
if args.daily_req_limit > 0:
res.append(daily_limits)
return res
@ -186,19 +213,28 @@ def create_app(args):
api_keys_db = None
if args.req_limit > 0 or args.api_keys or args.daily_req_limit > 0:
if args.req_limit > 0 or args.api_keys or args.daily_req_limit > 0 or args.hourly_req_limit > 0:
api_keys_db = None
if args.api_keys:
api_keys_db = RemoteDatabase(args.api_keys_remote) if args.api_keys_remote else Database(args.api_keys_db_path)
from flask_limiter import Limiter
def limits_cost():
req_cost = getattr(request, 'req_cost', 1)
if args.req_time_cost > 0:
return max(req_cost, int(math.ceil(getattr(request, 'duration', 0) / args.req_time_cost)))
else:
return req_cost
limiter = Limiter(
key_func=get_remote_address,
default_limits=get_routes_limits(
args.req_limit, args.daily_req_limit, api_keys_db
args, api_keys_db
),
storage_uri=args.req_limit_storage,
default_limits_deduct_when=lambda req: True, # Force cost to be called after the request
default_limits_cost=limits_cost
)
else:
from .no_limiter import Limiter
@ -297,12 +333,19 @@ def create_app(args):
status = e.code
raise e
finally:
duration = max(default_timer() - start_t, 0)
measure_request.labels(request.path, status, ip, ak).observe(duration)
request.duration = max(default_timer() - start_t, 0)
measure_request.labels(request.path, status, ip, ak).observe(request.duration)
g.dec()
return measure_func
else:
return func
@wraps(func)
def time_func(*a, **kw):
start_t = default_timer()
try:
return func(*a, **kw)
finally:
request.duration = max(default_timer() - start_t, 0)
return time_func
@bp.errorhandler(400)
def invalid_api(e):
@ -534,6 +577,8 @@ def create_app(args):
# https://www.rfc-editor.org/rfc/rfc2046#section-4.1.1
q = "\n".join(q.splitlines())
char_limit = get_char_limit(args.char_limit, api_keys_db)
batch = isinstance(q, list)
if batch and args.batch_limit != -1:
@ -544,43 +589,29 @@ def create_app(args):
description=_("Invalid request: request (%(size)s) exceeds text limit (%(limit)s)", size=batch_size, limit=args.batch_limit),
)
if args.char_limit != -1:
chars = sum([len(text) for text in q]) if batch else len(q)
src_texts = q if batch else [q]
if args.char_limit < chars:
abort(
400,
description=_("Invalid request: request (%(size)s) exceeds text limit (%(limit)s)", size=chars, limit=args.char_limit),
)
if char_limit != -1:
for text in src_texts:
if len(text) > char_limit:
abort(
400,
description=_("Invalid request: request (%(size)s) exceeds text limit (%(limit)s)", size=len(text), limit=char_limit),
)
if batch:
request.req_cost = max(1, len(q))
if source_lang == "auto":
source_langs = []
auto_detect_texts = q if batch else [q]
overall_candidates = detect_languages(q)
for text_to_check in auto_detect_texts:
if len(text_to_check) > 40:
candidate_langs = detect_languages(text_to_check)
else:
# Unable to accurately detect languages for short texts
candidate_langs = overall_candidates
source_langs.append(candidate_langs[0])
if args.debug:
print(text_to_check, candidate_langs)
print("Auto detected: %s" % candidate_langs[0]["language"])
candidate_langs = detect_languages(src_texts)
detected_src_lang = candidate_langs[0]
else:
if batch:
source_langs = [ {"confidence": 100.0, "language": source_lang} for text in q]
else:
source_langs = [ {"confidence": 100.0, "language": source_lang} ]
detected_src_lang = {"confidence": 100.0, "language": source_lang}
src_langs = [next(iter([l for l in languages if l.code == source_lang["language"]]), None) for source_lang in source_langs]
src_lang = next(iter([l for l in languages if l.code == detected_src_lang["language"]]), None)
for idx, lang in enumerate(src_langs):
if lang is None:
abort(400, description=_("%(lang)s is not supported", lang=source_langs[idx]))
if src_lang is None:
abort(400, description=_("%(lang)s is not supported", lang=source_lang))
tgt_lang = next(iter([l for l in languages if l.code == target_lang]), None)
@ -596,10 +627,10 @@ def create_app(args):
try:
if batch:
results = []
for idx, text in enumerate(q):
translator = src_langs[idx].get_translation(tgt_lang)
for text in q:
translator = src_lang.get_translation(tgt_lang)
if translator is None:
abort(400, description=_("%(tname)s (%(tcode)s) is not available as a target language from %(sname)s (%(scode)s)", tname=_lazy(tgt_lang.name), tcode=tgt_lang.code, sname=_lazy(src_langs[idx].name), scode=src_langs[idx].code))
abort(400, description=_("%(tname)s (%(tcode)s) is not available as a target language from %(sname)s (%(scode)s)", tname=_lazy(tgt_lang.name), tcode=tgt_lang.code, sname=_lazy(src_lang.name), scode=src_lang.code))
if text_format == "html":
translated_text = str(translate_html(translator, text))
@ -611,7 +642,7 @@ def create_app(args):
return jsonify(
{
"translatedText": results,
"detectedLanguage": source_langs
"detectedLanguage": [detected_src_lang] * len(q)
}
)
else:
@ -621,9 +652,9 @@ def create_app(args):
}
)
else:
translator = src_langs[0].get_translation(tgt_lang)
translator = src_lang.get_translation(tgt_lang)
if translator is None:
abort(400, description=_("%(tname)s (%(tcode)s) is not available as a target language from %(sname)s (%(scode)s)", tname=_lazy(tgt_lang.name), tcode=tgt_lang.code, sname=_lazy(src_langs[0].name), scode=src_langs[0].code))
abort(400, description=_("%(tname)s (%(tcode)s) is not available as a target language from %(sname)s (%(scode)s)", tname=_lazy(tgt_lang.name), tcode=tgt_lang.code, sname=_lazy(src_lang.name), scode=src_lang.code))
if text_format == "html":
translated_text = str(translate_html(translator, q))
@ -634,7 +665,7 @@ def create_app(args):
return jsonify(
{
"translatedText": unescape(translated_text),
"detectedLanguage": source_langs[0]
"detectedLanguage": detected_src_lang
}
)
else:
@ -644,6 +675,7 @@ def create_app(args):
}
)
except Exception as e:
raise e
abort(500, description=_("Cannot translate text: %(text)s", text=str(e)))
@bp.post("/translate_file")
@ -736,6 +768,7 @@ def create_app(args):
source_lang = request.form.get("source")
target_lang = request.form.get("target")
file = request.files['file']
char_limit = get_char_limit(args.char_limit, api_keys_db)
if not file:
abort(400, description=_("Invalid request: missing %(name)s parameter", name='file'))
@ -750,12 +783,10 @@ def create_app(args):
if os.path.splitext(file.filename)[1] not in frontend_argos_supported_files_format:
abort(400, description=_("Invalid request: file format not supported"))
source_langs = [source_lang]
src_langs = [next(iter([l for l in languages if l.code == source_lang]), None) for source_lang in source_langs]
src_lang = next(iter([l for l in languages if l.code == source_lang]), None)
for idx, lang in enumerate(src_langs):
if lang is None:
abort(400, description=_("%(lang)s is not supported", lang=source_langs[idx]))
if src_lang is None:
abort(400, description=_("%(lang)s is not supported", lang=source_lang))
tgt_lang = next(iter([l for l in languages if l.code == target_lang]), None)
@ -768,7 +799,15 @@ def create_app(args):
file.save(filepath)
translated_file_path = argostranslatefiles.translate_file(src_langs[0].get_translation(tgt_lang), filepath)
# Not an exact science: take the number of bytes and divide by
# the character limit. Assuming a plain text file, this will
# set the cost of the request to N = bytes / char_limit, which is
# roughly equivalent to a batch process of N batches assuming
# each batch uses all available limits
if char_limit > 0:
request.req_cost = max(1, int(os.path.getsize(filepath) / char_limit))
translated_file_path = argostranslatefiles.translate_file(src_lang.get_translation(tgt_lang), filepath)
translated_filename = os.path.basename(translated_file_path)
return jsonify(
@ -819,7 +858,7 @@ def create_app(args):
name: q
schema:
type: string
example: Hello world!
example: What language is this?
required: true
description: Text to detect
- in: formData
@ -840,11 +879,11 @@ def create_app(args):
properties:
confidence:
type: number
format: float
format: integer
minimum: 0
maximum: 1
maximum: 100
description: Confidence value
example: 0.6
example: 100
language:
type: string
description: Language code

View file

@ -61,6 +61,16 @@ _default_options_objects = [
'default_value': 'memory://',
'value_type': 'str'
},
{
'name': 'HOURLY_REQ_LIMIT',
'default_value': -1,
'value_type': 'int'
},
{
'name': 'HOURLY_REQ_LIMIT_DECAY',
'default_value': 0,
'value_type': 'int'
},
{
'name': 'DAILY_REQ_LIMIT',
'default_value': -1,
@ -71,6 +81,11 @@ _default_options_objects = [
'default_value': -1,
'value_type': 'int'
},
{
'name': 'REQ_TIME_COST',
'default_value': -1,
'value_type': 'int'
},
{
'name': 'BATCH_LIMIT',
'default_value': -1,

View file

@ -1,83 +1,45 @@
# Originally adapted from https://github.com/aboSamoor/polyglot/blob/master/polyglot/base.py
import unicodedata
from langdetect import DetectorFactory
import pycld2 as cld2
DetectorFactory.seed = 0
from langdetect import detect_langs
from lexilang.detector import detect as lldetect
class UnknownLanguageError(Exception):
pass
class Language:
def __init__(self, choice):
name, code, confidence, bytesize = choice
def __init__(self, code, confidence):
self.code = code
self.name = name
self.confidence = float(confidence)
self.read_bytes = int(bytesize)
def __str__(self):
return ("name: {:<12}code: {:<9}confidence: {:>5.1f} "
"read bytes:{:>6}".format(self.name, self.code,
self.confidence, self.read_bytes))
return (f"code: {self.code:<9} confidence: {self.confidence:>5.1f} ")
@staticmethod
def from_code(code):
return Language(("", code, 100, 0))
def check_lang(langcodes, lang):
return normalized_lang_code(lang) in langcodes
def normalized_lang_code(lang):
code = lang.lang
# Handle zh-cn
if code.startswith("zh"):
code = "zh"
return code
class Detector:
""" Detect the language used in a snippet of text."""
def __init__(self, text, quiet=False):
""" Detector of the language used in `text`.
Args:
text (string): unicode string.
"""
self.__text = text
self.reliable = True
"""False if the detector used Best Effort strategy in detection."""
self.quiet = quiet
"""If true, exceptions will be silenced."""
self.detect(text)
@staticmethod
def supported_languages():
"""Returns a list of the languages that can be detected by pycld2."""
return [name.capitalize() for name,code in cld2.LANGUAGES if not name.startswith("X_")]
def __init__(self, langcodes = ()):
self.langcodes = langcodes
def detect(self, text):
"""Decide which language is used to write the text.
The method tries first to detect the language with high reliability. If
that is not possible, the method switches to best effort strategy.
Args:
text (string): A snippet of text, the longer it is the more reliable we
can detect the language used to write the text.
"""
try:
reliable, index, top_3_choices = cld2.detect(text, bestEffort=False)
except cld2.error as e:
if "input contains invalid UTF-8" in str(e):
# Fix for https://github.com/LibreTranslate/LibreTranslate/issues/514
# related to https://github.com/aboSamoor/polyglot/issues/71#issuecomment-707997790
text = ''.join([l for l in text if unicodedata.category(str(l))[0] not in ('S', 'M', 'C')])
reliable, index, top_3_choices = cld2.detect(text, bestEffort=False)
else:
raise e
if len(text) < 20:
code, conf = lldetect(text, self.langcodes)
if conf > 0:
return [Language(code, round(conf * 100))]
if not reliable:
self.reliable = False
reliable, index, top_3_choices = cld2.detect(text, bestEffort=True)
top_3_choices = [lang for lang in detect_langs(text) if check_lang(self.langcodes, lang)][:3]
if not len(top_3_choices):
return [Language("en", 0)]
if top_3_choices[0].prob == 0:
return [Language("en", 0)]
if not self.quiet and not reliable:
raise UnknownLanguageError("Try passing a longer snippet of text")
return [Language(normalized_lang_code(lang), round(lang.prob * 100)) for lang in top_3_choices]
self.languages = [Language(x) for x in top_3_choices]
self.language = self.languages[0]
return self.language
def __str__(self):
text = f"Prediction is reliable: {self.reliable}\n"
text += "\n".join([f"Language {i+1}: {str(l)}"
for i,l in enumerate(self.languages)])
return text

View file

@ -1,7 +1,9 @@
from functools import lru_cache
from argostranslate import translate
from libretranslate.detect import Detector, UnknownLanguageError
from libretranslate.detect import Detector
__languages = None
@ -13,6 +15,11 @@ def load_languages():
return __languages
@lru_cache(maxsize=None)
def load_lang_codes():
languages = load_languages()
return tuple(l.code for l in languages)
def detect_languages(text):
# detect batch processing
if isinstance(text, list):
@ -21,31 +28,24 @@ def detect_languages(text):
is_batch = False
text = [text]
lang_codes = load_lang_codes()
# get the candidates
candidates = []
for t in text:
try:
d = Detector(t).languages
d = Detector(lang_codes).detect(t)
for i in range(len(d)):
d[i].text_length = len(t)
candidates.extend(d)
except UnknownLanguageError:
pass
except Exception as e:
print(str(e))
# total read bytes of the provided text
text_length_total = sum(c.text_length for c in candidates)
# Load language codes
languages = load_languages()
lang_codes = [l.code for l in languages]
# only use candidates that are supported by argostranslate
candidate_langs = list(
filter(lambda l: l.text_length != 0 and l.code in lang_codes, candidates)
)
# this happens if no language could be detected
if not candidate_langs:
if not candidates:
# use language "en" by default but with zero confidence
return [{"confidence": 0.0, "language": "en"}]
@ -55,7 +55,7 @@ def detect_languages(text):
temp_average_list = []
for lang_code in lang_codes:
# get all candidates for a specific language
lc = list(filter(lambda l: l.code == lang_code, candidate_langs))
lc = list(filter(lambda l: l.code == lang_code, candidates))
if len(lc) > 1:
# if more than one is present, calculate the average confidence
lang = lc[0]
@ -68,17 +68,17 @@ def detect_languages(text):
if temp_average_list:
# replace the list
candidate_langs = temp_average_list
candidates = temp_average_list
# sort the candidates descending based on the detected confidence
candidate_langs.sort(
candidates.sort(
key=lambda l: (l.confidence * l.text_length) / text_length_total, reverse=True
)
return [{"confidence": l.confidence, "language": l.code} for l in candidate_langs]
return [{"confidence": l.confidence, "language": l.code} for l in candidates]
def improve_translation_formatting(source, translation, improve_punctuation=True):
def improve_translation_formatting(source, translation, improve_punctuation=True, remove_single_word_duplicates=True):
source = source.strip()
if not len(source):
@ -101,12 +101,30 @@ def improve_translation_formatting(source, translation, improve_punctuation=True
elif translation_last_char in punctuation_chars:
translation = translation[:-1]
# A workaround for certain language models that output
# the single word repeated ad-infinitum (the "salad" bug)
# https://github.com/LibreTranslate/LibreTranslate/issues/46
if remove_single_word_duplicates:
if len(source) < 20 and source.count(" ") == 0 and translation.count(" ") > 0:
bow = translation.split()
count = {}
for word in bow:
count[word] = count.get(word, 0) + 1
for word in count:
if count[word] / len(count) >= 2:
translation = bow[0]
break
if source.islower():
return translation.lower()
if source.isupper():
return translation.upper()
if len(translation) == 0:
return source
if source[0].islower():
return translation[0].lower() + translation[1:]

View file

@ -9,16 +9,17 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-07-26 20:09+0000\n"
"PO-Revision-Date: 2023-11-02 04:00+0000\n"
"Last-Translator: Rex_sa <rex.sa@pm.me>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/libretranslate/"
"app/ar/>\n"
"Language: ar\n"
"Language-Team: Arabic "
"<https://hosted.weblate.org/projects/libretranslate/app/ar/>\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : "
"n%100>=3 && n%100<=10 ? 3 : n%100>=0 && n%100<=2 ? 4 : 5);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=0 && n%100<=2 ? 4 : 5);\n"
"X-Generator: Weblate 5.2-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
@ -73,7 +74,7 @@ msgstr "الطلب خاطئ: الطلب (%(size)s) تتجاوز حدود الن
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "%(lang)s غير مدعوم‬ة"
msgstr "%(lang)s غير مدعوم‬"
#: libretranslate/app.py:594
#, python-format
@ -85,7 +86,7 @@ msgstr "%(format)s الشكل غير مدعوم"
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr "%(tname)s %(tcode)sغير متاحة كلغة هدف%(sname)s %(scode)s"
msgstr "%(tname)s %(tcode)sغير متاحة كلغة هدف من %(sname)s %(scode)s"
#: libretranslate/app.py:647
#, python-format
@ -663,4 +664,3 @@ msgstr "%(libretranslate)s المساهمون"
#~ msgid "multipart/form-data"
#~ msgstr "البيانات المتعددة الجوانب/الرسمية"

View file

@ -0,0 +1,666 @@
# Translations template for LibreTranslate.
# Copyright (C) 2023 LibreTranslate Authors
# This file is distributed under the same license as the LibreTranslate
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: LibreTranslate 1.3.12\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2024-04-02 23:12+0000\n"
"Last-Translator: rferee <rferee_subs@protonmail.com>\n"
"Language-Team: Belarusian <https://hosted.weblate.org/projects/"
"libretranslate/app/be/>\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Памылковы JSON-фармат"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Аўтавызначэнне"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Патрэбна аўтарызацыя"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "Перавышаны ліміт запытаў"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Памылковы API ключ"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Калі ласка звяжыцеся з аператарам сэрверу каб атрымаць API ключ"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Наведайце %(url)s каб атрымаць API ключ"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "Запаволенне:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
#: libretranslate/app.py:743 libretranslate/app.py:745
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Памылковы запыт: параметар %(name)s адсутнічае"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
"Памылковы запыт: запыт (%(size)s) перавышае дазволены ліміт тэксту "
"(%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "%(lang)s не падтрымліваецца"
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr "Фармат %(format)s не падтрымліваеецца"
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
"%(tname)s (%(tcode)s) не даступная як мова перакладу з %(sname)s (%(scode)s)"
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "Не атрымалася перакласці тэкст: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "Переклад файлаў вымкнуты на гэтым сэрвере."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "Памылковы запыт: пусты файл"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "Памылковы запыт: фармат файла не падтрымліваецца"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Няслушная назва файла"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr "Прапанаванні выключаны на гэтым сэрверы."
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr "Англійская"
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr "Арабская"
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr "Азербайджанская"
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr "Кітайская"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "Чешская"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr "Дацкая"
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr "Нідэрландская"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "Эсперанта"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr "Фінская"
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr "Французская"
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr "Нямецкая"
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr "Грэчаская"
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr "Іўрыт"
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr "Хіндзі"
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr "Венгерская"
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr "Інданезійская"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr "Ірландская"
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr "Італьянская"
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr "Японская"
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr "Карэйская"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr "Персідская"
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr "Польская"
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr "Партугальская"
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr "Руская"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr "Славацкая"
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr "Іспанская"
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr "Шведская"
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr "Турэцкая"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "Украінская"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr "В’етнамская"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Атрымаць спіс падтрыманых моў"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr "Спіс моў"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr "пераклад"
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr "Перакласць тэкст з адной мовы на іншую"
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr "Перакладзены тэкст"
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr "Памылковы запыт"
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr "Памылка перакладу"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "Запаволенне"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Заблакавана"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Прывітанне, свет!"
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
msgstr "Тэкст(а) для перакладу"
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
msgstr "Код мовы арыгінала"
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr "Код мовы пераклада"
#: libretranslate/locales/.swag.py:14
msgid "text"
msgstr "тэкст"
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr "html"
#: libretranslate/locales/.swag.py:16
msgid ""
"Format of source text:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
msgstr ""
"Фармат выточнага тэксту:\n"
"* `text` - Звычайны тэкст\n"
"* `html` - HTML-разметка\n"
#: libretranslate/locales/.swag.py:17
msgid "API key"
msgstr "API ключ"
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr "Перакласць файл з адной мовы на іншую"
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr "Перакладзены файл"
#: libretranslate/locales/.swag.py:20
msgid "File to translate"
msgstr "Файл для перакладу"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr "Вызначыць мову аднаго тэксту"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr "Вызначэння"
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr "Памылка вызначэння"
#: libretranslate/locales/.swag.py:24
msgid "Text to detect"
msgstr "Тэкст для вызначэння"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr "Атрымаць налады для інтэрфэйсу"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr "налады інтэрфэйсу"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "інтэрфейс"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr "Запрапанаваць як палепшыць пераклад"
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr "Поспех"
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr "Не аўтаразаваны"
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr "Арыгінальны тэкст"
#: libretranslate/locales/.swag.py:32
msgid "Suggested translation"
msgstr "Запрапанаваны пераклад"
#: libretranslate/locales/.swag.py:33
msgid "Language of original text"
msgstr "Мова арыгінальнага тэкста"
#: libretranslate/locales/.swag.py:34
msgid "Language of suggested translation"
msgstr "Мова прапанаванага перакладу"
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr "зваротная сувязь"
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr "Код мовы"
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr "Чалавекачытальная назва мовы (па-ангельску)"
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr "Коды падтрымліваемых моў"
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr "Перакладзены(-я) тэкст(-а)"
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr "Паведамленне пра абмылу"
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr "Прычына запаволення"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "URL-адрэса перакладзенага файла"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr "Ровень упэўненасці"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr ""
"Абмежаванне колькаскі знакаў для гэтай мовы (-1 азначае адсутнасць "
"абмежаванняў)"
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "Час перакладу інтэрфэйсу перавышаны"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr "Ці увамкнёная база дадзеных API ключоў."
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "Ці патрэбен API ключ."
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr "Ці ўвамкненна магчымасць адпраўляць прапановы."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr "Падтрымліваемыя фарматы файлаў"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr "Ці было адсыланне паспяховым"
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr "Скапіяваць тэкст"
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
#: libretranslate/templates/app.js.template:91
#: libretranslate/templates/app.js.template:273
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr "Немагчыма спампаваць %(url)s"
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr "Невядомая памылка"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "Скапіявана"
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
"Дзякуй за вашу заўвагу. Прыміце да ўвагі: Ваша прапанова не адразу набудзе "
"моц."
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr "Няма даступных моў. Вы слушна ўсталявалі мадэлі?"
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr "Увядзіце ваш API ключ. Калі вам патрэбен API ключ, %(instructions)s"
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr "націсніце на спасылку \"Атрымаць API ключ\"."
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr "звяжыцеся з аператарам сэрвера."
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr "Бясплатнае API для машыннага перакладу з адкрытым выточным кодам"
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
#, fuzzy
msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr "Бясплатнае API для машыннага перакладу з адкрытым выточным кодам."
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr "пераклад"
#: libretranslate/templates/index.html:11
msgid "api"
msgstr ""
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr ""
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr ""
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr ""
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr ""
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr ""
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr ""
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr ""
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr ""
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr ""
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr ""
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr ""
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr ""
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr ""
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr ""
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr ""
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr ""
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr ""
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr ""
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr ""
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr ""
#: libretranslate/templates/index.html:253
msgid "File"
msgstr ""
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr ""
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr ""
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr ""
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr ""
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr ""
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr ""
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr ""
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr ""
#: libretranslate/templates/index.html:340
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr ""
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr ""

View file

@ -0,0 +1,670 @@
# Translations template for LibreTranslate.
# Copyright (C) 2023 LibreTranslate Authors
# This file is distributed under the same license as the LibreTranslate
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: LibreTranslate 1.3.12\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2024-02-17 02:36+0000\n"
"Last-Translator: Salif Mehmed <mail@salif.eu>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/libretranslate/"
"app/bg/>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Невалиден JSON формат"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Разпознаване"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Неоторизиран"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "Твърде много нарушения на ограниченията на заявките"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Невалиден API ключ"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Моля, свържете се с оператора на сървъра, за да получите API ключ"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Посетете %(url)s, за да получите API ключ"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "Забавяне:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
#: libretranslate/app.py:743 libretranslate/app.py:745
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Невалидна заявка: липсващ %(name)s параметър"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
"Невалидна заявка: заявката (%(size)s) надвишава ограничението за текст "
"(%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "%(lang)s не се поддържа"
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr "Форматът %(format)s не се поддържа"
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
"%(tname)s (%(tcode)s) не е наличен като целеви език от %(sname)s (%(scode)s)"
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "Не може да се преведе текстът: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "Превеждането на файлове е изключено на този сървър."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "Невалидна заявка: празен файл"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "Невалидна заявка: файловият формат не се поддържа"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Невалидно име на файла"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr "Предложенията са изключени на този сървър."
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr "Английски"
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr "Арабски"
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr "Азербайджански"
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr "Китайски"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "Чешки"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr "Датски"
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr "Нидерландски"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "Есперанто"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr "Финландски"
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr "Френски"
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr "Немски"
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr "Гръцки"
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr "Иврит"
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr "Хинди"
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr "Унгарски"
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr "Индонезийски"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr "Ирландски"
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr "Италиански"
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr "Японски"
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr "Корейски"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr "Персийски"
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr "Полски"
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr "Португалски"
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr "Руски"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr "Словашки"
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr "Испански"
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr "Шведски"
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr "Турски"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "Украински"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr "Виетнамски"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Извличане на списък с поддържани езици"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr "Списък с езици"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr "превеждане"
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr "Превеждане на текст от един език на друг"
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr "Преведен текст"
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr "Невалидна заявка"
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr "Грешка при превода"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "Забавяне"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Блокиран"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Здравей, свят!"
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
msgstr "Текст(ове) за превод"
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
msgstr "Код на изходния език"
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr "Код на целевия език"
#: libretranslate/locales/.swag.py:14
msgid "text"
msgstr "text"
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr "html"
#: libretranslate/locales/.swag.py:16
msgid ""
"Format of source text:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
msgstr ""
"Формат на изходния текст:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
#: libretranslate/locales/.swag.py:17
msgid "API key"
msgstr "API ключ"
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr "Превеждане на файл от един език на друг"
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr "Преведен файл"
#: libretranslate/locales/.swag.py:20
msgid "File to translate"
msgstr "Файл за превод"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr "Разпознаване на езика на единичен текст"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr "Разпознавания"
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr "Грешка при разпознаване"
#: libretranslate/locales/.swag.py:24
msgid "Text to detect"
msgstr "Текст за разпознаване"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr "Извличане на специфични за клиентска част настройки"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr "настройки на клиентската част"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "клиентска част"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr "Изпрати предложение за подобряване на превода"
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr "Успех"
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr "Не оторизиран"
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr "Оригинален текст"
#: libretranslate/locales/.swag.py:32
msgid "Suggested translation"
msgstr "Предложен превод"
#: libretranslate/locales/.swag.py:33
msgid "Language of original text"
msgstr "Език на оригиналния текст"
#: libretranslate/locales/.swag.py:34
msgid "Language of suggested translation"
msgstr "Език на предложения превод"
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr "обратна връзка"
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr "Езиков код"
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr "Човекоразбираемо име на езика (на английски)"
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr "Поддържани целеви езикови кодове"
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr "Преведен(и) текст(ове)"
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr "Съобщение за грешка"
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr "Причина за забавяне"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "Адрес на преведен файл"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr "Стойност на увереност"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr ""
"Ограничение за въвеждане на символи за този език (-1 означава, че няма "
"ограничение)"
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "Време за изчакване на превода през клиентската част"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr "Дали базата данни с API ключове е включена."
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "Дали API ключ е задължителен."
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr "Дали изпращането на предложения е включено."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr "Поддържан файлов формат"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr "Дали подаването е било успешно"
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr "Копиране на текста"
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
#: libretranslate/templates/app.js.template:91
#: libretranslate/templates/app.js.template:273
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr "Не може да се зареди %(url)s"
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr "Неизвестна грешка"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "Копиран"
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
"Благодарности за поправката. Имайте предвид, че предложението няма да влезе "
"в сила веднага."
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr "Няма налични езици. Правилно ли инсталирахте моделите?"
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr "Въведете своя API ключ. Ако имате нужда от API ключ, %(instructions)s"
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr "натиснете връзката „Получаване на API ключ“."
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr "свържете се с оператора на сървъра."
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr "Свободен API с отворен код за машинен превод"
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
"Свободен API с отворен код за машинен превод. Самостоятелен хостинг, офлайн "
"способност и лесен за настройка. Стартирайте свой собствен API сървър само "
"за няколко минути."
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr "превод"
#: libretranslate/templates/index.html:11
msgid "api"
msgstr "api"
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr "API Документация"
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr "Получаване на API ключ"
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr "GitHub"
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr "Задаване на API ключ"
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr "Промяна на езика"
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr "Редактиране"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "Превключване на тъмен/светъл режим"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr "Отхвърляне"
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr "API за превеждане"
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr "Превод на текст"
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr "Превод на файлове"
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr "Превеждане от"
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr "Размяна на изходния и целевия език"
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr "Превеждане на"
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr "Текст за превод"
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr "Изтриване на текста"
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr "Предлагане на превод"
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr "Отказ"
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr "Изпращане"
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr "Поддържани файлови формати:"
#: libretranslate/templates/index.html:253
msgid "File"
msgstr "Файл"
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr "Премахване на файла"
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr "Превеждане"
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr "Изтегляне"
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr "Заявка"
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr "Отговор"
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr "API с отворен код за машинен превод"
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr "Самостоятелен хостинг. Офлайн способност. Лесен за настройка."
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr "LibreTranslate"
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr "Лицензия:"
#: libretranslate/templates/index.html:340
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
"Този публичен API трябва да се използва за тестване, лична или рядка "
"употреба. Ако възнамерявате да стартирате приложение в продукция, моля "
"%(host_server)s или %(get_api_key)s."
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr "хоствайте свой собствен сървър"
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr "получаване на API ключ"
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr "Направено с %(heart)s от %(contributors)s и задвижвано от %(engine)s"
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr "%(libretranslate)s Сътрудници"

View file

@ -0,0 +1,4 @@
{
"name": "Bulgarian",
"reviewed": true
}

View file

@ -0,0 +1,660 @@
# Translations template for LibreTranslate.
# Copyright (C) 2023 LibreTranslate Authors
# This file is distributed under the same license as the LibreTranslate
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: LibreTranslate 1.3.12\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2024-03-07 08:01+0000\n"
"Last-Translator: d <dmanye@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/libretranslate/"
"app/ca/>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Format JSON invàlid"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Detecció automàtica"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "No autoritzat"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "Massa violacions de límits de la sol·licitud"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Clau API invàlida"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr ""
"Si us plau, contacta amb l'administrador del servidor per demanar una clau "
"API"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Visita %(url)s per demanar una clau API"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr ""
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
#: libretranslate/app.py:743 libretranslate/app.py:745
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Sol·licitud no vàlida: falta el paràmetre %(name)s"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
"Sol·licitud no vàlida: la sol·licitud (%(size)s) supera el límit de text "
"(%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "El %(lang)s no és compatible"
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr "El format %(format)s no està implementat"
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
"%(tname)s (%(tcode)s) no està disponible com a llengua de destí des de "
"%(sname)s (%(scode)s)"
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "No es pot traduir el text: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "La traducció de fitxers està deshabilitada en aquest servidor."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "Sol·licitud no vàlida: fitxer buit"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "Sol·licitud no vàlida: el format del fitxer no està implementat"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Nom de fitxer no vàlid"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr "Els suggeriments estan deshabilitats en aquest servidor."
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr "anglès"
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr "àrab"
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr "àzeri"
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr "xinès"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "txec"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr "danès"
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr "holandès"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "esperanto"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr "finès"
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr "francès"
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr "alemany"
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr "grec"
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr "hebreu"
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr "hindi"
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr "hongarès"
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr "indonesi"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr "irlandès"
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr "italià"
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr "japonès"
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr "coreà"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr "persa"
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr "polonès"
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr "portuguès"
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr "rus"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr "eslovac"
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr "castellà"
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr "suec"
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr "turc"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "ucraïnès"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr "vietnamita"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Recupera la llista d'idiomes compatibles"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr "Llista d'idiomes"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr "traduir"
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr "Traduir text d'un idioma a un altre"
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr "Text traduït"
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr "Petició no vàlida"
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr "S'ha produït un error de traducció"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr ""
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Prohibit"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Hola món!"
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
msgstr "Text(s) a traduir"
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
msgstr "Codi de l'idioma font"
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr "Codi de l'idioma objectiu"
#: libretranslate/locales/.swag.py:14
msgid "text"
msgstr "text"
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr "html"
#: libretranslate/locales/.swag.py:16
msgid ""
"Format of source text:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
msgstr ""
#: libretranslate/locales/.swag.py:17
msgid "API key"
msgstr ""
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr ""
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr ""
#: libretranslate/locales/.swag.py:20
msgid "File to translate"
msgstr ""
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr ""
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr ""
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr ""
#: libretranslate/locales/.swag.py:24
msgid "Text to detect"
msgstr ""
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr ""
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr ""
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr ""
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr "Envia un suggeriment per millorar una traducció"
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr ""
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr ""
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr "Text original"
#: libretranslate/locales/.swag.py:32
msgid "Suggested translation"
msgstr "Traducció suggerida"
#: libretranslate/locales/.swag.py:33
msgid "Language of original text"
msgstr "Idioma del text original"
#: libretranslate/locales/.swag.py:34
msgid "Language of suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr ""
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr ""
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr ""
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr ""
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr ""
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr ""
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr ""
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr ""
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr ""
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr ""
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr ""
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr ""
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr ""
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr ""
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr ""
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
#: libretranslate/templates/app.js.template:91
#: libretranslate/templates/app.js.template:273
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr ""
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr ""
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr ""
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr ""
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr ""
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr ""
#: libretranslate/templates/index.html:11
msgid "api"
msgstr ""
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr ""
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr ""
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr ""
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr ""
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr ""
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr ""
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr ""
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr ""
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr ""
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr ""
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr ""
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr ""
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr ""
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr ""
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr ""
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr ""
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr ""
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr ""
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr ""
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr ""
#: libretranslate/templates/index.html:253
msgid "File"
msgstr ""
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr ""
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr ""
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr ""
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr ""
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr ""
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr ""
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr ""
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr ""
#: libretranslate/templates/index.html:340
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr ""
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr ""

View file

@ -9,15 +9,16 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-01-10 09:57+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"PO-Revision-Date: 2024-01-23 14:01+0000\n"
"Last-Translator: Michal Čihař <michal@weblate.org>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/libretranslate/app/"
"cs/>\n"
"Language: cs\n"
"Language-Team: Czech "
"<https://hosted.weblate.org/projects/libretranslate/app/cs/>\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 5.4-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
@ -26,11 +27,11 @@ msgstr "Neplatný formát JSON"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Auto detekce"
msgstr "Automaticky rozpoznat"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Neautorizované"
msgstr "Neoprávněné"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
@ -42,16 +43,16 @@ msgstr "Neplatný API klíč"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Obraťte se na provozovatele serveru a získejte klíč API"
msgstr "Obraťte se na provozovatele serveru pro získání API klíče"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Hledat %(url)s získat klíč API"
msgstr "Navštivte %(url)s pro získání API klíče"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "Pomalování:"
msgstr "Zpomalení:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
@ -59,14 +60,15 @@ msgstr "Pomalování:"
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, fuzzy, python-format
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Neplatný požadavek: chybějící %(name)s parametr"
msgstr "Neplatný požadavek: chybějící parametr %(name)s"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr "Neplatná žádost: žádost (%(size)s) překračuje limit textu (%(limit)s)"
msgstr ""
"Neplatná požadavek: požadavek (%(size)s) překračuje limit textu (%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
@ -91,11 +93,11 @@ msgstr ""
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "Nelze překládat text: %(text)s"
msgstr "Nelze přeložit text: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "Překlady souborů jsou zakázány na tomto serveru."
msgstr "Překlady souborů jsou na tomto serveru zakázány."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
@ -107,39 +109,39 @@ msgstr "Neplatný požadavek: formát souboru není podporován"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Jméno souboru"
msgstr "Neplatný název souboru"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr "Návrhy jsou zakázány na tomto serveru."
msgstr "Návrhy jsou na tomto serveru zakázány."
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr "Čeština"
msgstr "Angličtina"
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr "Čeština"
msgstr "Arabština"
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr "Čeština"
msgstr "Ázerbájdžánština"
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr "Čeština"
msgstr "Čínština"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "Česky"
msgstr "Čeština"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr "Čeština"
msgstr "Dánština"
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr "Čeština"
msgstr "Holandština"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
@ -147,95 +149,95 @@ msgstr "Esperanto"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr "Čeština"
msgstr "Finština"
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr "Čeština"
msgstr "Francouzština"
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr "Čeština"
msgstr "Němčina"
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr "Čeština"
msgstr "Řečtina"
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr "Čeština"
msgstr "Hebrejština"
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr "Čeština"
msgstr "Hindština"
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr "Čeština"
msgstr "Maďarština"
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr "Indonéský"
msgstr "Indonéština"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr "Čeština"
msgstr "Irština"
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr "Čeština"
msgstr "Italština"
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr "Japonské"
msgstr "Japonština"
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr "Čeština"
msgstr "Korejština"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr "Čeština"
msgstr "Perština"
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr "Čeština"
msgstr "Polština"
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr "Čeština"
msgstr "Portugalština"
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr "Rusky"
msgstr "Ruština"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr "Čeština"
msgstr "Slovenština"
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr "Čeština"
msgstr "Španělština"
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr "Čeština"
msgstr "Švédština"
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr "Čeština"
msgstr "Turečtina"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "Čeština"
msgstr "Ukrajinština"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr "Vietnamské"
msgstr "Vietnamština"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Seznam podporovaných jazyků"
msgstr "Získat seznam podporovaných jazyků"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
@ -243,15 +245,15 @@ msgstr "Seznam jazyků"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr "čeština"
msgstr "překlady"
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr "Přeložit text z jazyka do jiného"
msgstr "Přeložit text do jiného jazyka"
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr "Přeložit text"
msgstr "Přeložený text"
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
@ -263,39 +265,35 @@ msgstr "Chyba překladu"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "Pomalovat dolů"
msgstr "Zpomalte"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Čeština"
msgstr "Zablokován"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Ahoj svět!"
msgstr "Ahoj světe!"
#: libretranslate/locales/.swag.py:11
#, fuzzy
msgid "Text(s) to translate"
msgstr "Text překládat"
msgstr "Text(y) k překladu"
#: libretranslate/locales/.swag.py:12
#, fuzzy
msgid "Source language code"
msgstr "Kód jazyka"
msgstr "Kód zdojového jazyka"
#: libretranslate/locales/.swag.py:13
#, fuzzy
msgid "Target language code"
msgstr "Podporované cílové jazykové kódy"
msgstr "Kód cílového jazyka"
#: libretranslate/locales/.swag.py:14
#, fuzzy
msgid "text"
msgstr "Kopírovat text"
msgstr "text"
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr "čeština"
msgstr "html"
#: libretranslate/locales/.swag.py:16
msgid ""
@ -305,25 +303,23 @@ msgid ""
msgstr ""
"Formát zdrojového textu:\n"
"* `text` - prostý text\n"
"* `html` - HTML značení\n"
"* `html` - HTML kód\n"
#: libretranslate/locales/.swag.py:17
#, fuzzy
msgid "API key"
msgstr "čeština"
msgstr "API klíč"
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr "Přeložit soubor z jazyka do jiného"
msgstr "Přeložit soubor do jiného jazyka"
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr "Přeložit soubor"
msgstr "Přeložený soubor"
#: libretranslate/locales/.swag.py:20
#, fuzzy
msgid "File to translate"
msgstr "Text překládat"
msgstr "Soubor k překladu"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
@ -331,28 +327,27 @@ msgstr "Rozpozná jazyk jediného textu"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr "Detekce"
msgstr "Rozpoznání"
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr "Chyba detekce"
msgstr "Chyba rozpoznání"
#: libretranslate/locales/.swag.py:24
#, fuzzy
msgid "Text to detect"
msgstr "Auto detekce"
msgstr "Text pro rozpoznání"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr "Načíst frontend specifické nastavení"
msgstr "Načíst nastavení specifické pro rozhraní"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr "nastavení frontendu"
msgstr "nastavení rozhraní"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "čeština"
msgstr "rozhraní"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
@ -364,26 +359,23 @@ msgstr "Hledat"
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr "Neautorizované"
msgstr "Chybí oprávnění"
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr "Původní text"
#: libretranslate/locales/.swag.py:32
#, fuzzy
msgid "Suggested translation"
msgstr "Návrh překladu"
msgstr "Navrhovaný překlad"
#: libretranslate/locales/.swag.py:33
#, fuzzy
msgid "Language of original text"
msgstr "Rozpozná jazyk jediného textu"
msgstr "Jazyk původního textu"
#: libretranslate/locales/.swag.py:34
#, fuzzy
msgid "Language of suggested translation"
msgstr "Návrh překladu"
msgstr "Jazyk navrhovaného překladu"
#: libretranslate/locales/.swag.py:35
msgid "feedback"
@ -395,7 +387,7 @@ msgstr "Kód jazyka"
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr "Lidově čitelné jméno jazyka (v angličtině)"
msgstr "Lidsky čitelný název jazyka (v angličtině)"
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
@ -403,7 +395,7 @@ msgstr "Podporované cílové jazykové kódy"
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr "Přeložit text(y)"
msgstr "Přeložený text(y)"
#: libretranslate/locales/.swag.py:40
msgid "Error message"
@ -415,31 +407,31 @@ msgstr "Důvod pro zpomalení"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "Přeložit soubor url"
msgstr "URL přeloženého souboru"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr "Hodnota Confidence"
msgstr "Míra jistoty"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr "Omezení zadávání znaků pro tento jazyk (-1 indikuje žádný limit)"
msgstr "Omezení počtu znaků pro tento jazyk (-1 označuje žádný limit)"
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "Frontend překlad timeout"
msgstr "Časový limit překladu rozhraní"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr "Ať už je dostupná databáze API klíče."
msgstr "Jestli je dostupná databáze API klíčů."
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "Ať už je vyžadována klíč API."
msgstr "Jestli je vyžadován API klíč."
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr "Ať už je povoleno podání návrhů."
msgstr "Jestli je povoleno podání návrhů."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
@ -447,7 +439,7 @@ msgstr "Podporované formáty souborů"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr "Ať už byla objednávka úspěšná"
msgstr "Jestli bylo podání úspěšné"
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
@ -475,7 +467,7 @@ msgstr "Neznámá chyba"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "Čeština"
msgstr "Zkopírováno"
#: libretranslate/templates/app.js.template:331
msgid ""
@ -494,7 +486,7 @@ msgstr "Zadejte ve svém API klíč. Pokud potřebujete klíč API, %(instructio
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr "stiskněte odkaz \"Get API Key\"."
msgstr "následujte odkaz „Získejte API klíč“."
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
@ -503,7 +495,7 @@ msgstr "obraťte se na provozovatele serveru."
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr "Volný a otevřený zdroj Strojový překlad API"
msgstr "Zdarma a Open Source API strojového překladu"
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
@ -511,9 +503,9 @@ msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
"Zdarma a Otevřít zdroj Machine Translation API. Self-hosted, offline "
"schopný a snadné nastavení. Spusťte vlastní API server během několika "
"minut."
"Zdarma a Open Source API strojového překladu. Vlastní hostovaní, použitelné "
"bez připojení a snadno nastavitelné. Spusťte si vlastní API server během "
"několika minut."
#: libretranslate/templates/index.html:11
msgid "translation"
@ -521,23 +513,23 @@ msgstr "překlad"
#: libretranslate/templates/index.html:11
msgid "api"
msgstr "čeština"
msgstr "api"
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr "API Dokumenty"
msgstr "API dokumentace"
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr "Získejte API Čeština"
msgstr "Získejte API klíč"
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr "Čeština"
msgstr "GitHub"
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr "Nastavení API Čeština"
msgstr "Nastavit API klíč"
#: libretranslate/templates/index.html:73
msgid "Change language"
@ -549,15 +541,15 @@ msgstr "Editace"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "Toggle tmavý / světelný režim"
msgstr "Přepnout tmavý / světlý režim"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr "Čeština"
msgstr "Odmítnout"
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr "Rozhraní API"
msgstr "Překladové API"
#: libretranslate/templates/index.html:175
msgid "Translate Text"
@ -589,7 +581,7 @@ msgstr "Smazat text"
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr "Návrh překladu"
msgstr "Navrhnout překlad"
#: libretranslate/templates/index.html:230
msgid "Cancel"
@ -605,7 +597,7 @@ msgstr "Podporované formáty souborů:"
#: libretranslate/templates/index.html:253
msgid "File"
msgstr "Čeština"
msgstr "Soubor"
#: libretranslate/templates/index.html:268
msgid "Remove file"
@ -613,28 +605,28 @@ msgstr "Odebrat soubor"
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr "Čeština"
msgstr "Přeložit"
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr "Čeština"
msgstr "Stáhnout"
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr "Poptávka"
msgstr "Požadavek"
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr "Čeština"
msgstr "Odpoveď"
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr "Otevřít zdroj Strojní překlad API"
msgstr "Open Source API strojového překladu"
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr "Vlastní. Offline Capable. Snadné nastavení."
msgstr "Vlastní hostovnání. Použitelné bez připojení. Snadné nastavení."
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
@ -645,34 +637,33 @@ msgid "License:"
msgstr "Licence:"
#: libretranslate/templates/index.html:340
#, fuzzy, python-format
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
"Tento veřejný API by měl být použit pro testování, osobní nebo neobvyklé "
"použití. Pokud se chystáte spustit aplikaci ve výrobě, prosím "
"Toto veřejné API by měl být použito jen pro testování, osobní nebo pro "
"občasné použití. Pokud se chystáte spustit aplikaci v ostrém provozu, prosím "
"%(host_server)s nebo %(get_api_key)s."
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr "vlastní server"
msgstr "hostujte vlastní server"
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr "získat klíč API"
msgstr "získejte API klíč"
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr "Vyrobeno s %(heart)s podle %(contributors)s a poháněné %(engine)s"
msgstr "Vyrobeno s %(heart)s %(contributors)s a poháněno %(engine)s"
#: libretranslate/templates/index.html:348
#, fuzzy, python-format
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr "Čeština %(libretranslate)s"
msgstr "%(libretranslate)s přispěvateli"
#~ msgid "multipart/form-data"
#~ msgstr "vícepart/form-data"

View file

@ -1,4 +1,4 @@
{
"name": "Czech",
"reviewed": false
}
"reviewed": true
}

View file

@ -9,15 +9,16 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-01-10 09:57+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"PO-Revision-Date: 2024-03-25 12:01+0000\n"
"Last-Translator: cat <158170307+cultcats@users.noreply.github.com>\n"
"Language-Team: Danish <https://hosted.weblate.org/projects/libretranslate/"
"app/da/>\n"
"Language: da\n"
"Language-Team: Danish "
"<https://hosted.weblate.org/projects/libretranslate/app/da/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
@ -26,7 +27,7 @@ msgstr "Ugyldig JSON format"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Autodetektor"
msgstr "Auto detektor"
#: libretranslate/app.py:232
msgid "Unauthorized"
@ -34,7 +35,7 @@ msgstr "Uautoriseret"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "For mange anmodninger begrænser overtrædelser"
msgstr "For mange overtrædelser af anmodningsbegrænsninger"
#: libretranslate/app.py:257
msgid "Invalid API key"
@ -42,16 +43,16 @@ msgstr "Ugyldig API-nøgle"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Kontakt serveroperatøren for at få en API-nøgle"
msgstr "Kontakt venligst serveroperatøren for at få en API-nøgle"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Besøg %(url)s at få en API-nøgle"
msgstr "Besøg %(url)s for at få en API-nøgle"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "Langlægning:"
msgstr "Nedbremsning:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
@ -97,19 +98,19 @@ msgstr "Kan ikke oversætte tekst: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "Filer oversættelse er deaktiveret på denne server."
msgstr "File oversættelse er deaktiveret på denne server."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "Ugyldig anmodning: tomt fil"
msgstr "Ugyldig anmodning: tom fil"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "Ugyldig anmodning: filformat ikke understøttet"
msgstr "Ugyldig anmodning: filformat understøttes ikke"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Ugyldig filnavn"
msgstr "Ugyldigt filnavn"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
@ -141,7 +142,7 @@ msgstr "Dansk"
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr "Hollandske"
msgstr "Hollandsk"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
@ -229,7 +230,7 @@ msgstr "Tyrkisk"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "Ukranian"
msgstr "Ukrainsk"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
@ -245,10 +246,9 @@ msgstr "Liste over sprog"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr "oversætter"
msgstr "oversæt"
#: libretranslate/locales/.swag.py:4
#, fuzzy
msgid "Translate text from a language to another"
msgstr "Oversæt tekst fra et sprog til et andet"
@ -265,9 +265,8 @@ msgid "Translation error"
msgstr "Oversættelsesfejl"
#: libretranslate/locales/.swag.py:8
#, fuzzy
msgid "Slow down"
msgstr "Langsomt ned"
msgstr "Sænk farten"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
@ -278,9 +277,8 @@ msgid "Hello world!"
msgstr "Hej verden!"
#: libretranslate/locales/.swag.py:11
#, fuzzy
msgid "Text(s) to translate"
msgstr "Tekst til at oversætte"
msgstr "Tekst(er) til oversættelse"
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
@ -288,7 +286,7 @@ msgstr "Kildesprogkode"
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr "Målsprogkoder"
msgstr "Målsprogkode"
#: libretranslate/locales/.swag.py:14
msgid "text"
@ -305,7 +303,7 @@ msgid ""
" * `html` - HTML markup\n"
msgstr ""
"Format af kildetekst:\n"
"* 'tekst' - almindeligt tekst\n"
"* 'tekst' - almindelig tekst\n"
"* `html' - HTML-markup\n"
#: libretranslate/locales/.swag.py:17
@ -321,13 +319,12 @@ msgid "Translated file"
msgstr "Oversat fil"
#: libretranslate/locales/.swag.py:20
#, fuzzy
msgid "File to translate"
msgstr "Tekst at oversætte"
msgstr "Fil at oversætte"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr "Angiv sproget for en enkelt tekst"
msgstr "Registrer sproget i en enkelt tekst"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
@ -338,13 +335,12 @@ msgid "Detection error"
msgstr "Registreringsfejl"
#: libretranslate/locales/.swag.py:24
#, fuzzy
msgid "Text to detect"
msgstr "Autodetektor"
msgstr "Tekst at finde"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr "Hent frontend specifikke indstillinger"
msgstr "Hent frontend-specifikke indstillinger"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
@ -352,11 +348,11 @@ msgstr "frontend indstillinger"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "frontend"
msgstr "grænseflade"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr "Indsend et forslag til at forbedre en oversættelse"
msgstr "Indsend et forslag til forbedring af en oversættelse"
#: libretranslate/locales/.swag.py:29
msgid "Success"
@ -364,26 +360,23 @@ msgstr "Succes"
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr "Ikke godkendt"
msgstr "Ikke autoriseret"
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr "Original tekst"
#: libretranslate/locales/.swag.py:32
#, fuzzy
msgid "Suggested translation"
msgstr "Foreslå oversættelse"
msgstr "Foreslået oversættelse"
#: libretranslate/locales/.swag.py:33
#, fuzzy
msgid "Language of original text"
msgstr "Angiv sproget for en enkelt tekst"
msgstr "Originaltekstens sprog"
#: libretranslate/locales/.swag.py:34
#, fuzzy
msgid "Language of suggested translation"
msgstr "Foreslå oversættelse"
msgstr "Sprog i foreslået oversættelse"
#: libretranslate/locales/.swag.py:35
msgid "feedback"
@ -399,11 +392,11 @@ msgstr "Menneskeligt læseligt sprognavn (på engelsk)"
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr "Understøttede sprogkoder"
msgstr "Understøttede målsprogkoder"
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr "Oversat tekst(r)"
msgstr "Oversat tekst(er)"
#: libretranslate/locales/.swag.py:40
msgid "Error message"
@ -411,23 +404,23 @@ msgstr "Fejlmeddelelse"
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr "Reason for langsom ned"
msgstr "Årsag til nedbremsning"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "Oversætt fil url"
msgstr "Oversat fil-url"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr "Konsekvensværdi"
msgstr "Konfidensværdi"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr "Karakterindgangsgrænse for dette sprog (-1 angiver ingen grænse)"
msgstr "Grænse for tegninput for dette sprog (-1 angiver ingen grænse)"
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "Frontend oversættelsestidspunktout"
msgstr "Timeout for frontend-oversættelse"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
@ -435,7 +428,7 @@ msgstr "Om API-nøgledatabasen er aktiveret."
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "Om en API-nøgle kræves."
msgstr "Om en API-nøgle er påkrævet."
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
@ -443,7 +436,7 @@ msgstr "Om indsendelse af forslag er aktiveret."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr "Understøttet filformat"
msgstr "Understøttede filformater"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
@ -475,15 +468,15 @@ msgstr "Ukendt fejl"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "Copied"
msgstr "Kopieret"
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
"Tak for din korrektion. Bemærk, at forslaget ikke vil tage virkning med "
"det samme."
"Tak for din rettelse. Bemærk, at forslaget ikke vil træde i kraft med det "
"samme."
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
@ -505,7 +498,7 @@ msgstr "kontakt serveroperatøren."
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr "Gratis og Open Source Machine Oversættelse API"
msgstr "Gratis og Open Source Maskinoversættelses-API"
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
@ -513,13 +506,13 @@ msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
"Gratis og Open Source Machine Oversættelse API. Self-hosted, offline i "
"stand og let at konfigurere. Kør din egen API-server på blot et par "
"Gratis og Open Source Maskinoversættelses-API. Selv-hosted, kan bruges "
"offline og er let at opsætte. Kør din egen API-server på blot et par "
"minutter."
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr "oversættelse af oversættelse"
msgstr "oversættelse"
#: libretranslate/templates/index.html:11
msgid "api"
@ -531,7 +524,7 @@ msgstr "API Docs"
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr "Få API Nøglenøgle"
msgstr "Få API-nøgle"
#: libretranslate/templates/index.html:69
msgid "GitHub"
@ -539,7 +532,7 @@ msgstr "GitHub"
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr "Indstil API Nøglenøgle"
msgstr "Indstil API-nøgle"
#: libretranslate/templates/index.html:73
msgid "Change language"
@ -547,15 +540,15 @@ msgstr "Skift sprog"
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr "Rediger redigering"
msgstr "Rediger"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "Skift mørke/lysetilstand"
msgstr "Skift mellem mørk/lys tilstand"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr "Begrænsninger"
msgstr "Afvis"
#: libretranslate/templates/index.html:171
msgid "Translation API"
@ -563,11 +556,11 @@ msgstr "Oversættelses-API"
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr "Oversæt tekst"
msgstr "Oversæt Tekst"
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr "Oversæt filer"
msgstr "Oversæt Filer"
#: libretranslate/templates/index.html:185
msgid "Translate from"
@ -575,19 +568,17 @@ msgstr "Oversæt fra"
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr "Skift kilde- og målsprog"
msgstr "Byt om på kilde- og målsprog"
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr "Oversæt til"
#: libretranslate/templates/index.html:210
#, fuzzy
msgid "Text to translate"
msgstr "Tekst at oversætte"
#: libretranslate/templates/index.html:213
#, fuzzy
msgid "Delete text"
msgstr "Slet tekst"
@ -597,7 +588,7 @@ msgstr "Foreslå oversættelse"
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr "Annuller"
msgstr "annullere"
#: libretranslate/templates/index.html:233
msgid "Send"
@ -622,24 +613,23 @@ msgstr "Oversæt"
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr "Download"
msgstr "Hent"
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr "Anmod om forespørgsel"
msgstr "Anmod"
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr "Svar"
#: libretranslate/templates/index.html:315
#, fuzzy
msgid "Open Source Machine Translation API"
msgstr "Frit maskinoversættelses-API"
msgstr "Open Source Maskinoversættelses-API"
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr "Self-Hosted. Offline Capable. Nem at konfigurere."
msgstr "Selv-Hosted. Kan bruges offline. Nem at opsætte."
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
@ -656,14 +646,13 @@ msgid ""
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
"Denne offentlige API skal bruges til test, personlig eller sjælden brug. "
"Hvis du vil køre en ansøgning i produktionen, bedes du venligst "
"%(host_server)s eller %(get_api_key)s"
"Denne offentlige API bør bruges til test, personlig eller sjælden brug. Hvis "
"du har tænkt dig at køre en applikation i produktion, venligst %(host_server)"
"s eller %(get_api_key)s."
#: libretranslate/templates/index.html:340
#, fuzzy
msgid "host your own server"
msgstr "værts din egen server"
msgstr "host din egen server"
#: libretranslate/templates/index.html:340
msgid "get an API key"
@ -672,13 +661,12 @@ msgstr "få en API-nøgle"
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr "Lavet med %(heart)s af by %(contributors)s og drevet af %(engine)s"
msgstr "Lavet med %(heart)s af %(contributors)s og drevet af %(engine)s"
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr "%(libretranslate)s-bidragsydere"
msgstr "%(libretranslate)s Bidragsydere"
#~ msgid "multipart/form-data"
#~ msgstr "multipart/form-data"

View file

@ -0,0 +1,675 @@
# Translations template for LibreTranslate.
# Copyright (C) 2023 LibreTranslate Authors
# This file is distributed under the same license as the LibreTranslate
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: LibreTranslate 1.3.12\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2024-02-01 18:01+0000\n"
"Last-Translator: Priit Jõerüüt <hwlate@joeruut.com>\n"
"Language-Team: Estonian <https://hosted.weblate.org/projects/libretranslate/"
"app/et/>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Vigane JSON-vorming"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Tuvasta keel automaatselt"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Pole lubatud"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "Liiga palju päringuid ühes ajaühikus"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Vigane API võti"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Palun küsi serveri haldajalt API võtit"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "API võtme saamiseks palun vaata seda urli - %(url)s"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "Võtame nüüd tempot alla:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
#: libretranslate/app.py:743 libretranslate/app.py:745
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Vigane päring: puuduv parameeter „%(name)s“"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
"Vigane päring: päringu (%(size)s) suurus ületab tekstipäringutele lubatud "
"ülempiiri (%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "%(lang)s keel ei ole veel tõlgitav"
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr "%(format)s vorming ei ole veel toetatud"
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
"%(tname)s keel (%(tcode)s) ei ole veel kasutatav sihtkeelena kui lähtekeel "
"on %(sname)s keel (%(scode)s)"
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "Teksti tõlkimine ei õnnestu: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "Failide tõlkimine ei ole selles serveris lubatud."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "Vigane päring: tühi fail"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "Vigane päring: failivorming pole toetatud"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Vigane failinimi"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr "Tõlkesoovituste võimalus ei ole selles serveris kasutusel."
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr "inglise"
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr "araabia"
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr "aserbaidžaani"
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr "hiina"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "tšehhi"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr "taani"
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr "hollandi"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "esperanto"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr "soome"
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr "prantsuse"
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr "saksa"
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr "kreeka"
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr "heebrea"
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr "hindi"
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr "ungari"
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr "indoneesia"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr "iiri"
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr "itaalia"
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr "jaapani"
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr "korea"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr "pärsia"
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr "poola"
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr "portugali"
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr "vene"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr "slovaki"
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr "hispaania"
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr "rootsi"
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr "türgi"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "ukraina"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr "vietnami"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Laadi kasutatavate keelte loend"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr "Keelte loend"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr "tõlkimine"
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr "Tõlgi tekst ühest keelest teise"
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr "Tõlgitud tekst"
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr "Vigane päring"
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr "Tõlkeviga"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "Aeglustame päringuid"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Keelatud"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Tere maailm!"
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
msgstr "Tõlgitav tekst"
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
msgstr "Lähtekeele kood"
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr "Tõlkekeele kood"
#: libretranslate/locales/.swag.py:14
msgid "text"
msgstr "tekst"
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr "html"
#: libretranslate/locales/.swag.py:16
msgid ""
"Format of source text:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
msgstr ""
"Lähteteksti vorming:\n"
" * `text` - vormindamata tekst\n"
" * `html` - HTML-vormingus tekst\n"
#: libretranslate/locales/.swag.py:17
msgid "API key"
msgstr "API võti"
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr "Tõlgi fail ühest keelest teise"
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr "Tõlgitud fail"
#: libretranslate/locales/.swag.py:20
msgid "File to translate"
msgstr "Tõlgitav fail"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr "Tuvasta ühe teksti keel"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr "Tuvastamise tulemused"
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr "Viga tuvastamisel"
#: libretranslate/locales/.swag.py:24
msgid "Text to detect"
msgstr "Tekst, kust peaksime keele tuvastama"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr "Päring kasutajaliidese seadistuste vaatamiseks"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr "kasutajaliidese seadistused"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "kasutajaliides"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr "Võimalus ettepanekute saatmiseks tõlke parandamise nimel"
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr "Päring õnnestus"
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr "Päring pole lubatud"
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr "Lähtetekst"
#: libretranslate/locales/.swag.py:32
msgid "Suggested translation"
msgstr "Ettepanek tõlke parandamiseks"
#: libretranslate/locales/.swag.py:33
msgid "Language of original text"
msgstr "Teksti lähtekeel"
#: libretranslate/locales/.swag.py:34
msgid "Language of suggested translation"
msgstr "Teksti tõlkekeel"
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr "tagasiside"
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr "Keelekood"
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr "Inimloetav keele nimi (inglise keeles)"
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr "Tõetatud tõlkekeelte koodid"
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr "Tõlgitud tekst(id)"
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr "Veateade"
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr "Päringute aeglustamise põhjus"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "Tõlgitud faili url"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr "Usaldusväärsuse väärtus"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr ""
"Lähteteksti tähemärkide mahu ülempiir selle keele kohta (-1 märgib ülempiiri "
"puudumist)"
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "Tõlkepäringu aegumine kasutajaliideses"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr "Kas API võtmete andmebaas on kasutusel."
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "Kas API võtme kasutamine on nõutav."
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr "Kas tõlkesoovituste saatmine on kasutusel."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr "Toetatud failivormingud"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr "Kas tõlkesoovituse saatmine õnnstus"
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr "Kopeeri tekst"
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
#: libretranslate/templates/app.js.template:91
#: libretranslate/templates/app.js.template:273
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr "%(url)s urli laadimine ei õnnestunud"
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr "Tundmatu viga"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "Kopeeritud"
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
"Täname tõlke parandusettepaneku eest. Palun arvesta, et ta ei tule koheselt "
"kasutusele."
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr ""
"Ühtegi keelt pole saadaval. Kas sa keelemudelid paigaldasid korrektselt?"
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr "Sisesta siia oma API võti. Kui sul API võti on puudu, %(instructions)s"
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr "klõpsi linki „Osta API võti“."
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr "võta ühendust serveri haldajaga."
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr "Vaba ja avatud lähtekoodiga masintõlke API"
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
"Vaba ja avatud lähtekoodiga masintõlke API. Majutatav oma serveris, toimib "
"ka võrguühenduseta ja on hõlpsasti seadistatav. Võta oma API server "
"kasutusele vaid mõne minutiga."
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr "tõlge"
#: libretranslate/templates/index.html:11
msgid "api"
msgstr "api"
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr "API kirjeldus"
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr "Osta API võti"
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr "GitHub"
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr "Lisa API võti"
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr "Vaheta keelt"
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr "Muuda"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "Vaheta kujundust: tume/hele"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr "Loobu"
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr "TõlkeAPI"
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr "Tõlgi teksti"
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr "Tõlgi faile"
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr "Lähtekeel"
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr "Vaheta lähte- ja tõlkekeeled"
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr "Tõlkekeel"
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr "Tõlgitav tekst"
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr "Kustuta tekst"
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr "Soovita paremat tõlget"
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr "Katkesta"
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr "Saada"
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr "Kasutatavad failivormingud:"
#: libretranslate/templates/index.html:253
msgid "File"
msgstr "Fail"
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr "Eemalda fail"
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr "Tõlgi"
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr "Laadi alla"
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr "Päring"
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr "Vastus"
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr "Avatud lähtekoodiga masintõlke API"
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr ""
"Majutatav oma serveris. Toimib ka võrguühenduseta. Hõlpsasti seadistatav."
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr "LibreTranslate"
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr "Litsents:"
#: libretranslate/templates/index.html:340
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
"Palun kasuta seda avalikku API't testimiseks, isiklikel eesmärkidel või "
"muudel harvadel juhtudel. Kui tahad kasutada API't mõnes "
"produktsioonirakenduses, siis palun %(host_server)s või %(get_api_key)s."
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr "pane püsti oma server"
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr "või osta meie serveri API võti"
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr ""
"Tehtud suure %(heart)s'ga, millesse panustasid %(contributors)s ning "
"sisulise töö teeb ära %(engine)s"
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr "%(libretranslate)s kaasautorid"

View file

@ -0,0 +1,654 @@
# Translations template for LibreTranslate.
# Copyright (C) 2023 LibreTranslate Authors
# This file is distributed under the same license as the LibreTranslate
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: LibreTranslate 1.3.12\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-12-05 20:06+0000\n"
"Last-Translator: Aitor Salaberria <trslbrr@gmail.com>\n"
"Language-Team: Basque <https://hosted.weblate.org/projects/libretranslate/"
"app/eu/>\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.3-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "JSON formatu baliogabea"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Hautemate automatikoa"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Baimenik gabe"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "Eskaera-mugaren urraketa gehiegi"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "API-aren gako baliogabea"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr ""
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr ""
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr ""
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
#: libretranslate/app.py:743 libretranslate/app.py:745
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr ""
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr ""
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr ""
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr ""
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr ""
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr ""
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr ""
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr ""
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr ""
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr ""
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr ""
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr ""
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr ""
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr ""
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr ""
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr ""
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr ""
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr ""
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr ""
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr ""
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr ""
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr ""
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr ""
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr ""
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr ""
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr ""
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr ""
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr ""
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr ""
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr ""
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr ""
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr ""
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr ""
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr ""
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr ""
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr ""
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr ""
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr ""
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr ""
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr ""
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr ""
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr ""
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr ""
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr ""
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr ""
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr ""
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr ""
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr ""
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr ""
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
msgstr ""
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
msgstr ""
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr ""
#: libretranslate/locales/.swag.py:14
msgid "text"
msgstr ""
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr ""
#: libretranslate/locales/.swag.py:16
msgid ""
"Format of source text:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
msgstr ""
#: libretranslate/locales/.swag.py:17
msgid "API key"
msgstr ""
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr ""
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr ""
#: libretranslate/locales/.swag.py:20
msgid "File to translate"
msgstr ""
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr ""
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr ""
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr ""
#: libretranslate/locales/.swag.py:24
msgid "Text to detect"
msgstr ""
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr ""
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr ""
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr ""
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr ""
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr ""
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr ""
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr ""
#: libretranslate/locales/.swag.py:32
msgid "Suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:33
msgid "Language of original text"
msgstr ""
#: libretranslate/locales/.swag.py:34
msgid "Language of suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr ""
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr ""
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr ""
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr ""
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr ""
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr ""
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr ""
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr ""
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr ""
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr ""
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr ""
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr ""
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr ""
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr ""
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr ""
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
#: libretranslate/templates/app.js.template:91
#: libretranslate/templates/app.js.template:273
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr ""
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr ""
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr ""
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr ""
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr ""
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr ""
#: libretranslate/templates/index.html:11
msgid "api"
msgstr ""
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr ""
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr ""
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr ""
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr ""
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr ""
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr ""
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr ""
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr ""
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr ""
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr ""
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr ""
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr ""
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr ""
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr ""
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr ""
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr ""
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr ""
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr ""
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr ""
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr ""
#: libretranslate/templates/index.html:253
msgid "File"
msgstr ""
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr ""
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr ""
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr ""
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr ""
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr ""
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr ""
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr ""
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr ""
#: libretranslate/templates/index.html:340
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr ""
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr ""

View file

@ -9,15 +9,16 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-06-03 02:40+0000\n"
"Last-Translator: Surena <Arsinad93@gmail.com>\n"
"PO-Revision-Date: 2024-04-07 09:57+0000\n"
"Last-Translator: Ilya <ilyagvc2@gmail.com>\n"
"Language-Team: Persian <https://hosted.weblate.org/projects/libretranslate/"
"app/fa/>\n"
"Language: fa\n"
"Language-Team: Persian "
"<https://hosted.weblate.org/projects/libretranslate/app/fa/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
@ -30,7 +31,7 @@ msgstr "تشخیص خودکار"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "مجاز نیست"
msgstr "غیرمجاز"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
@ -42,7 +43,7 @@ msgstr "کلید API نامعتبر است"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "لطفاً برای دریافت کلید API با كارپرداز سرور تماس بگیرید"
msgstr "لطفاً برای دریافت کلید API با اپراتور سرور تماس بگیرید"
#: libretranslate/app.py:278
#, python-format
@ -51,7 +52,7 @@ msgstr "برای دریافت کلید API از %(url)s بازدید نمایی
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "آهسته:"
msgstr "کاهش سرعت:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
@ -61,14 +62,13 @@ msgstr "آهسته:"
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "درخواست نامعتبر است: پارامتر %(name)s وجود ندارد"
msgstr "درخواست نامعتبر: پارامتر %(name)s وجود ندارد"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
"درخواست نامعتبر است: درخواست (%(size)s) از محدودیت متنی (%(limit)s) فراتر"
" رفت"
"درخواست نامعتبر: درخواست (%(size)s) از محدودیت متنی (%(limit)s) فراتر رفت"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
@ -87,8 +87,8 @@ msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
"(%(tcode)s) (%(tname)s) از (%(scode)s) (%(sname)s)به‌عنوان یک زبان هدف در"
" دسترس نیست"
"(%(tcode)s) (%(tname)s) از (%(scode)s) (%(sname)s) به عنوان یک زبان هدف در "
"دسترس نیست"
#: libretranslate/app.py:647
#, python-format
@ -101,11 +101,11 @@ msgstr "ترجمه فایل در این سرور غیرفعال است."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "درخواست نامعتبر است: فایل خالی است"
msgstr "درخواست نامعتبر: فایل خالی است"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "درخواست نامعتبر است: فرمت فایل پشتیبانی نمی‌شود"
msgstr "درخواست نامعتبر: فرمت فایل پشتیبانی نمی‌شود"
#: libretranslate/app.py:796
msgid "Invalid filename"
@ -133,7 +133,7 @@ msgstr "چینی"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "چکی"
msgstr "(کشور) چک"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
@ -197,7 +197,7 @@ msgstr "کره‌ای"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr "فارسی"
msgstr "پارسی"
#: libretranslate/locales/.langs.py:22
msgid "Polish"
@ -261,15 +261,15 @@ msgstr "درخواست نامعتبر است"
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr "خطای ترجمه"
msgstr "خطا در ترجمه"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "آهسته"
msgstr "کاهش سرعت"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "ممنوع است"
msgstr "ممنوع شده"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
@ -302,8 +302,8 @@ msgid ""
" * `html` - HTML markup\n"
msgstr ""
"فرمت متن منبع:\n"
"* متن - متن ساده\n"
"* html - نشانه‌گذاری HTML\n"
"* text - متن ساده\n"
"* html - حالت های html\n"
#: libretranslate/locales/.swag.py:17
msgid "API key"
@ -327,7 +327,7 @@ msgstr "تشخیص زبان یک متن"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr "تشخیص‌ها"
msgstr "شناسایی ها"
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
@ -339,15 +339,15 @@ msgstr "متن برای شناسایی"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr "بازیابی تنظیمات زبان اولیه"
msgstr "بازیابی تنظیمات ظاهری ویژه"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr "تنظیمات اولیه"
msgstr "تنظیمات ظاهری"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "اولیه"
msgstr "نما ظاهری"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
@ -355,7 +355,7 @@ msgstr "پیشنهادی برای بهبود ترجمه ثبت نمایید"
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr "موفقیت‌آمیز بود"
msgstr "موفقیت‌آمیز"
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
@ -403,11 +403,11 @@ msgstr "پیام خطا"
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr "دلیل کاهش سزعت"
msgstr "دلیل کاهش سرعت"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "تارنشانی فایل ترجمه شده"
msgstr "نشانی فایل ترجمه شده"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
@ -415,37 +415,37 @@ msgstr "ضریب اطمینان"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr "محدودیت ورودی نویسه برای این زبان (تا -1 محدودیتی نیست)"
msgstr "محدودیت کاراکتر برای این زبان (-1 یعنی بدون محدودیت)"
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "پایان زمان ترجمه مقدماتی"
msgstr "محدودیت زمانی ترجمه برای نمای ظاهری"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr "اینکه آیا پایگاه داده کلید API فعال است یا خیر."
msgstr "اینکه (آیا) پایگاه داده مربوط به کلید API فعال است."
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "اینکه آیا کلید API مورد نیاز است یا خیر."
msgstr "اینکه (آیا) کلید API مورد نیاز است."
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr "اینکه آیا ارسال پیشنهادات ممکن است یا خیر."
msgstr "اینکه (آیا) ارسال پیشنهادات ممکن است."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr "قالب فایل‌های پشتیبانی شده"
msgstr "فرمت فایل‌های پشتیبانی شده"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr "اینکه آیا ارسال موفقیت‌آمیز بود یا خیر"
msgstr "اینکه (آیا) ارسال موفقیت‌آمیز بود"
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr "روگرفت متن"
msgstr "کپی متن"
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
@ -467,7 +467,7 @@ msgstr "خطای ناشناخته"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "روگرفت شد"
msgstr "کپی شد"
#: libretranslate/templates/app.js.template:331
msgid ""
@ -490,11 +490,11 @@ msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr "تارپیوند \"دریافت کلید API\" را فشار دهید."
msgstr "بر روی لینک \"دریافت کلید API\" کلیک کنید."
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr "با كارپرداز سرور تماس بگیرید."
msgstr "با اپراتور سرور تماس بگیرید."
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
@ -507,8 +507,8 @@ msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
"API ترجمه ماشینی رایگان و متن باز. خود میزبان، قابلیت کار آفلاین و با "
"قابلیت راه‌اندازی آسان. سرور API خود را تنها در چند دقیقه اجرا کنید."
"API ترجمه ماشینی رایگان و متن باز. خود میزبان، با قابلیت راه‌اندازی آسان و "
"آفلاین. سرور API خود را تنها در چند دقیقه اجرا کنید."
#: libretranslate/templates/index.html:11
msgid "translation"
@ -520,7 +520,7 @@ msgstr "api"
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr "پرونده‌های API"
msgstr "داکیومنت های API"
#: libretranslate/templates/index.html:67
msgid "Get API Key"
@ -528,7 +528,7 @@ msgstr "دریافت کلید API"
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr "GitHub"
msgstr "گیت‌هاب"
#: libretranslate/templates/index.html:71
msgid "Set API Key"
@ -544,7 +544,7 @@ msgstr "ویرایش"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "حالت تاریک / روشن"
msgstr "تغییر به حالت تیره/روشن"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
@ -560,7 +560,7 @@ msgstr "ترجمه متن"
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr "فایل‌های ترجمه"
msgstr "ترجمه فایل ها"
#: libretranslate/templates/index.html:185
msgid "Translate from"
@ -613,7 +613,7 @@ msgstr "ترجمه کن"
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr "بارگیری"
msgstr "بارگیری (دانلود)"
#: libretranslate/templates/index.html:295
msgid "Request"
@ -633,7 +633,7 @@ msgstr "خود میزبان. قابلیت کار آفلاین. با قابلیت
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr "LibreTranslate"
msgstr "لیبر ترنسلیت"
#: libretranslate/templates/index.html:337
msgid "License:"
@ -646,22 +646,22 @@ msgid ""
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
"این API عمومی باید برای آزمایش، استفاده شخصی یا گذری استفاده شود. اگر "
"قرار است برنامه‌ای در حال ساخت اجرا کنید، لطفا %(host_server)s یا "
"این API عمومی باید برای آزمایش، استفاده شخصی یا اختصاصی است. اگر قرار است "
"برنامه‌ای که برای محصول است با آن اجرا کنید، لطفا %(host_server)s یا "
"%(get_api_key)s."
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr "سرور خود را میزبانی کنید"
msgstr "در سرور خود میزبانی کنید"
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr "دریافت یک کلید API"
msgstr "یک کلید API بگیرید"
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr "ساخته شده با %(heart)s توسط %(contributors)s و بر آمده از %(engine)s"
msgstr "ساخته شده با %(heart)s توسط %(contributors)s و قدرت گرفته از %(engine)s"
#: libretranslate/templates/index.html:348
#, python-format
@ -670,4 +670,3 @@ msgstr "مشارکت‌‌کنندگان %(libretranslate)s"
#~ msgid "multipart/form-data"
#~ msgstr "multipart/form-data"

View file

@ -0,0 +1,660 @@
# Translations template for LibreTranslate.
# Copyright (C) 2023 LibreTranslate Authors
# This file is distributed under the same license as the LibreTranslate
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: LibreTranslate 1.3.12\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2024-04-03 08:46+0000\n"
"Last-Translator: searinminecraft <114207889+searinminecraft@users.noreply."
"github.com>\n"
"Language-Team: Filipino <https://hosted.weblate.org/projects/libretranslate/"
"app/fil/>\n"
"Language: fil\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1 && n != 2 && n != 3 && (n % 10 == 4 "
"|| n % 10 == 6 || n % 10 == 9);\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Hindi wastong JSON format"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "I-auto Detect"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Hindi awtorisado"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "Masyadong maraming paglalabag sa limitasyon ng hiling"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Hindi wastong API key"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Makipag-ugnayan sa operator ng server para makakuha ng API key"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Bisitahin ang %(url)s para makakuha ng API key"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "Slowdown:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
#: libretranslate/app.py:743 libretranslate/app.py:745
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Hindi wastong hiling: nawawalang %(name)s na parameter"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
"Hindi wastong hiling: lumalagpas ang hiling (%(size)s) ang limitasyon ng "
"text (%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "Hindi sinusuportahan ang %(lang)s"
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr "Hindi sinusuportahan ang %(format)s na format"
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
"Ang %(tname)s (%(tcode)s) ay hindi available bilang target na wika galing sa "
"%(sname)s (%(scode)s)"
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "Hindi masalin ang text: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "Ang pagsalin ng file ay naka-disable sa server na ito."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "Hindi wastong hiling: walang laman na file"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "Hindi wastong hiling: hindi sinusuportahan ang file format"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Hindi wastong filename"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr "Naka-disable ang mga mungkahi sa server na ito."
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr ""
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr ""
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr ""
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr ""
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr ""
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr ""
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr ""
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr ""
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr ""
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr ""
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr ""
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr ""
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr ""
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr ""
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr ""
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr ""
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr ""
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr ""
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr ""
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr ""
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr ""
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr ""
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr ""
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr ""
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr ""
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr ""
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr ""
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr ""
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr ""
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr ""
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Kunin ang listahan ng mga sinusuportahang wika"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr "Listahan ng mga wika"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr ""
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr ""
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr ""
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr ""
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr ""
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr ""
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr ""
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr ""
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
msgstr ""
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
msgstr ""
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr ""
#: libretranslate/locales/.swag.py:14
msgid "text"
msgstr ""
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr ""
#: libretranslate/locales/.swag.py:16
msgid ""
"Format of source text:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
msgstr ""
#: libretranslate/locales/.swag.py:17
msgid "API key"
msgstr ""
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr ""
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr ""
#: libretranslate/locales/.swag.py:20
msgid "File to translate"
msgstr ""
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr ""
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr ""
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr ""
#: libretranslate/locales/.swag.py:24
msgid "Text to detect"
msgstr ""
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr ""
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr ""
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr ""
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr ""
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr ""
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr ""
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr ""
#: libretranslate/locales/.swag.py:32
msgid "Suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:33
msgid "Language of original text"
msgstr ""
#: libretranslate/locales/.swag.py:34
msgid "Language of suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr ""
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr ""
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr ""
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr ""
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr ""
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr ""
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr ""
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr ""
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr ""
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr ""
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr ""
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr ""
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr ""
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr ""
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr ""
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
#: libretranslate/templates/app.js.template:91
#: libretranslate/templates/app.js.template:273
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr ""
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr ""
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr ""
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr ""
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr ""
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr ""
#: libretranslate/templates/index.html:11
msgid "api"
msgstr ""
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr ""
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr ""
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr ""
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr ""
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr ""
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr ""
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr ""
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr ""
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr ""
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr ""
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr ""
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr ""
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr ""
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr ""
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr ""
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr ""
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr ""
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr ""
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr ""
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr ""
#: libretranslate/templates/index.html:253
msgid "File"
msgstr ""
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr ""
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr ""
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr ""
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr ""
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr ""
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr ""
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr ""
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr ""
#: libretranslate/templates/index.html:340
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr ""
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr ""

View file

@ -9,15 +9,16 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-09-27 02:59+0000\n"
"Last-Translator: Olivier Dragon <odragon@videotron.ca>\n"
"PO-Revision-Date: 2024-01-04 00:08+0000\n"
"Last-Translator: EGuillemot <Elouen.Guillemot@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/libretranslate/"
"app/fr/>\n"
"Language: fr\n"
"Language-Team: French "
"<https://hosted.weblate.org/projects/libretranslate/app/fr/>\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.4-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
@ -61,13 +62,13 @@ msgstr "Ralentissement :"
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Requête incorrecte : le paramètre %(name)s est manquant"
msgstr "Requête incorrecte: le paramètre %(name)s est manquant"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
"Demande non valide : la requête (%(size)s) dépasse la limite de texte "
"Requête non valide: la requête (%(size)s) dépasse la limite de texte "
"(%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
@ -543,7 +544,7 @@ msgstr "Modifier"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "Toggle dark/light mode"
msgstr "Basculer en mode sombre/clair"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
@ -616,7 +617,7 @@ msgstr "Télécharger"
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr "Demande"
msgstr "Requête"
#: libretranslate/templates/index.html:300
msgid "Response"
@ -666,8 +667,7 @@ msgstr "Conçu avec %(heart)s par %(contributors)s et propulsé par %(engine)s"
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr "Contributrices et contributeurs %(libretranslate)s"
msgstr "Contributeurs %(libretranslate)s"
#~ msgid "multipart/form-data"
#~ msgstr "multipart/form-data"

View file

@ -9,24 +9,25 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-09-23 14:04+0000\n"
"Last-Translator: ShareASmile <aapshergill@gmail.com>\n"
"PO-Revision-Date: 2024-02-24 17:01+0000\n"
"Last-Translator: Scrambled777 <weblate.scrambled777@simplelogin.com>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/libretranslate/app/"
"hi/>\n"
"Language: hi\n"
"Language-Team: Hindi "
"<https://hosted.weblate.org/projects/libretranslate/app/hi/>\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Invalid JSON प्रारूप"
msgstr "अमान्य JSON प्रारूप"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "ऑटो"
msgstr "ऑटो डिटेक्ट करें"
#: libretranslate/app.py:232
msgid "Unauthorized"
@ -38,20 +39,20 @@ msgstr "बहुत से अनुरोध सीमा उल्लंघ
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Invalid API key"
msgstr "अमान्य API कुंजी"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "एपीआई कुंजी प्राप्त करने के लिए सर्वर ऑपरेटर से संपर्क करें"
msgstr "API कुंजी प्राप्त करने के लिए कृपया सर्वर ऑपरेटर से संपर्क करें"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "यात्रा %(url)s एक API कुंजी प्राप्त करने के लिए"
msgstr "API कुंजी प्राप्त करने के लिए %(url)s पर जाएं"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "नीचे:"
msgstr "गति कम करो:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
@ -61,12 +62,12 @@ msgstr "नीचे:"
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "अवैध अनुरोध: लापता %(name)s पैरामीटर"
msgstr "अमान्य अनुरोध: %(name)s पैरामीटर अनुपलब्ध है"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr "अनुरोध%(size)s) पाठ सीमा से अधिक है (%(limit)s)"
msgstr "अमान्य अनुरोध: अनुरोध (%(size)s) पाठ सीमा (%(limit)s) से अधिक है"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
@ -107,7 +108,7 @@ msgstr "अमान्य अनुरोध: फ़ाइल प्रार
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Invalid filename"
msgstr "अमान्य फ़ाइलनाम"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
@ -143,7 +144,7 @@ msgstr "डच"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "एस्परांतो"
msgstr "एस्परांतो"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
@ -227,7 +228,7 @@ msgstr "तुर्की"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "यूनानी"
msgstr "यूक्रेनी"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
@ -263,15 +264,15 @@ msgstr "अनुवाद त्रुटि"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "नीचे"
msgstr "गति कम करो"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "बंधा"
msgstr "प्रतिबंधित"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "नमस्कार!"
msgstr "नमस्ते दुनिया!"
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
@ -291,7 +292,7 @@ msgstr "पाठ"
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr "एचटीएमएल"
msgstr "html"
#: libretranslate/locales/.swag.py:16
msgid ""
@ -300,8 +301,8 @@ msgid ""
" * `html` - HTML markup\n"
msgstr ""
"स्रोत पाठ का प्रारूप:\n"
"* `text` - सादा पाठ\n"
"एचटीएमएल\n"
" * `पाठ` - सादा पाठ\n"
" * `html` - HTML मार्कअप\n"
#: libretranslate/locales/.swag.py:17
msgid "API key"
@ -337,15 +338,15 @@ msgstr "डिटेक्ट करने के लिए पाठ"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr "Retrieve frontend विशिष्ट सेटिंग्स"
msgstr "Frontend विशिष्ट सेटिंग्स पुनर्प्राप्त करें"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr "फ्रंटएंड सेटिंग्स"
msgstr "Frontend सेटिंग्स"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "फ्रंटएंड"
msgstr "Frontend"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
@ -393,7 +394,7 @@ msgstr "समर्थित लक्ष्य भाषा कोड"
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr "अनुवादित पाठ(s)"
msgstr "अनुवादित पाठ(ओं)"
#: libretranslate/locales/.swag.py:40
msgid "Error message"
@ -401,15 +402,15 @@ msgstr "त्रुटि संदेश"
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr "धीमा करने के लिए कारण"
msgstr "गति धीमी होने का कारण"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "अनुवादित फ़ाइल यूआरएल"
msgstr "अनुवादित फ़ाइल url"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr "गोपनीयता नीति"
msgstr "आत्मविश्वास मूल्य"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
@ -417,15 +418,15 @@ msgstr "इस भाषा के लिए चरित्र इनपुट
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "फ्रंटेंड अनुवाद टाइमआउट"
msgstr "Frontend अनुवाद टाइमआउट"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr "क्या एपीआई कुंजी डेटाबेस सक्षम है।."
msgstr "क्या API कुंजी डेटाबेस सक्षम है।।"
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "क्या एक एपीआई कुंजी की आवश्यकता है।."
msgstr "क्या एक API कुंजी की आवश्यकता है।।"
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
@ -437,7 +438,7 @@ msgstr "समर्थित फाइलें प्रारूप"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr "चाहे जमा करना सफल हो"
msgstr "क्या सबमिशन सफल रहा"
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
@ -454,7 +455,7 @@ msgstr "पाठ कॉपी करें"
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr "Cannot लोड %(url)s"
msgstr "%(url)s लोड नहीं किया जा सकता"
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
@ -465,7 +466,7 @@ msgstr "अज्ञात त्रुटि"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "Copied"
msgstr "कॉपी किया गया"
#: libretranslate/templates/app.js.template:331
msgid ""
@ -481,12 +482,12 @@ msgstr "कोई भाषा उपलब्ध नहीं है। क्
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr ""
"अपने एपीआई कुंजी में टाइप करें। यदि आपको API कुंजी की आवश्यकता है, "
"अपने API कुंजी में टाइप करें। यदि आपको API कुंजी की आवश्यकता है, "
"%(instructions)s"
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr "\"Get API कुंजी\" लिंक दबाएँ।."
msgstr "\"API कुंजी प्राप्त करें\" लिंक दबाएं।"
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
@ -495,7 +496,7 @@ msgstr "सर्वर ऑपरेटर से संपर्क करे
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr "फ्री एंड ओपन सोर्स मशीन ट्रांसलेशन एपीआई"
msgstr "मुफ़्त और मुक्त स्रोत मशीन अनुवाद API"
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
@ -503,8 +504,8 @@ msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
"फ्री एंड ओपन सोर्स मशीन ट्रांसलेशन एपीआई। स्व-होस्टेड, ऑफ़लाइन सक्षम और "
"सेटअप करने में आसान। कुछ ही मिनटों में अपना खुद का API सर्वर चलाएं।."
"मुफ़्त और मुक्त स्रोत मशीन अनुवाद एपीआई। स्व-होस्टेड, ऑफ़लाइन सक्षम और सेटअप "
"करने में आसान। कुछ ही मिनटों में अपना स्वयं का API सर्वर चलाएं।"
#: libretranslate/templates/index.html:11
msgid "translation"
@ -512,23 +513,23 @@ msgstr "अनुवाद"
#: libretranslate/templates/index.html:11
msgid "api"
msgstr "एपीआई"
msgstr "api"
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr "एपीआई डॉक"
msgstr "API दस्तावेज़"
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr "एपीआई प्राप्त करें कुंजी"
msgstr "API प्राप्त करें कुंजी"
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr "गिटहब"
msgstr "GitHub"
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr "एपीआई सेट कुंजी"
msgstr "API सेट कुंजी"
#: libretranslate/templates/index.html:73
msgid "Change language"
@ -544,11 +545,11 @@ msgstr "टॉगल डार्क / लाइट मोड"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr "Dismis"
msgstr "खारिज"
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr "अनुवाद एपीआई"
msgstr "अनुवाद API"
#: libretranslate/templates/index.html:175
msgid "Translate Text"
@ -564,7 +565,7 @@ msgstr "से अनुवाद करें"
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr "स्वैप स्रोत और लक्ष्य भाषाओं"
msgstr "स्रोत और लक्ष्य भाषाओं की अदला-बदली करें"
#: libretranslate/templates/index.html:198
msgid "Translate into"
@ -576,15 +577,15 @@ msgstr "अनुवाद करने के लिए पाठ"
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr "पाठ संपादित करें"
msgstr "पाठ हटाएँ"
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr "अनुवाद सुझा"
msgstr "अनुवाद सुझाएँ"
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr "रद्द करना"
msgstr "रद्द करें"
#: libretranslate/templates/index.html:233
msgid "Send"
@ -621,7 +622,7 @@ msgstr "जवाब"
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr "ओपन सोर्स मशीन अनुवाद एपीआई"
msgstr "ओपन सोर्स मशीन अनुवाद API"
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
@ -642,8 +643,8 @@ msgid ""
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
"इस सार्वजनिक एपीआई का उपयोग परीक्षण, व्यक्तिगत या गलत उपयोग के लिए किया "
"जाना चाहिए। यदि आप उत्पादन में आवेदन चला रहे हैं, तो कृपया ध्यान दें। "
"इस सार्वजनिक API का उपयोग परीक्षण, व्यक्तिगत या गलत उपयोग के लिए किया जाना "
"चाहिए। यदि आप उत्पादन में आवेदन चला रहे हैं, तो कृपया ध्यान दें। "
"%(host_server)s या %(get_api_key)s।"
#: libretranslate/templates/index.html:340
@ -652,7 +653,7 @@ msgstr "अपने सर्वर को होस्ट करें"
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr "एपीआई कुंजी प्राप्त करें"
msgstr "API कुंजी प्राप्त करें"
#: libretranslate/templates/index.html:348
#, python-format
@ -668,4 +669,3 @@ msgstr "%(libretranslate)s योगदानकर्ता"
#~ msgid "multipart/form-data"
#~ msgstr "multipart/form-data"

View file

@ -9,15 +9,16 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-02-25 11:36+0000\n"
"Last-Translator: ebela <bela@dandre.hu>\n"
"PO-Revision-Date: 2024-04-18 08:04+0000\n"
"Last-Translator: Netesfiu <r4verino@gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/libretranslate/"
"app/hu/>\n"
"Language: hu\n"
"Language-Team: Hungarian "
"<https://hosted.weblate.org/projects/libretranslate/app/hu/>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
@ -30,7 +31,7 @@ msgstr "Automatikus felismerés"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Nem engedélyezett"
msgstr "Nincs jogosultsága"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
@ -49,7 +50,7 @@ msgstr ""
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Látogatás %(url)s API kulcsot kapni"
msgstr "Látogasson el a(z) %(url)s címre, API kulcshoz"
#: libretranslate/app.py:318
msgid "Slowdown:"
@ -69,14 +70,14 @@ msgstr "Érvénytelen kérés: hiányzik a(z) %(name)s paraméter"
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
"Érvénytelen kérés: kérés (%(size)s) meghaladja a szövegkorlátot "
"Érvénytelen kérés: a kérés mérete (%(size)s) meghaladja a szövegkorlátot "
"(%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "%(lang)s nem támogatott"
msgstr "%(lang)s nyelv nem támogatott"
#: libretranslate/app.py:594
#, python-format
@ -99,7 +100,7 @@ msgstr "Nem fordítható szöveg: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "Files fordítás letiltása ezen a szerveren."
msgstr "Fájlok fordítása kikapcsolva ezen a szerveren."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
@ -115,7 +116,7 @@ msgstr "Érvénytelen fájlnév"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr "A javaslatok fogyatékkal élők ezen a szerveren."
msgstr "A javaslatok kikapcsolva ezen a szerveren."
#: libretranslate/locales/.langs.py:1
msgid "English"
@ -135,7 +136,7 @@ msgstr "Kínai"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "Csehország"
msgstr "Cseh"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
@ -143,11 +144,11 @@ msgstr "Dán"
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr "Hollandia"
msgstr "Holland"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "Esperanto"
msgstr "Eszperantó"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
@ -183,7 +184,7 @@ msgstr "Indonéz"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr "Írország"
msgstr "Ír"
#: libretranslate/locales/.langs.py:18
msgid "Italian"
@ -191,7 +192,7 @@ msgstr "Olasz"
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr "Japán japán"
msgstr "Japán"
#: libretranslate/locales/.langs.py:20
msgid "Korean"
@ -207,7 +208,7 @@ msgstr "Lengyel"
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr "Portugália"
msgstr "Portugál"
#: libretranslate/locales/.langs.py:24
msgid "Russian"
@ -215,7 +216,7 @@ msgstr "Orosz"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr "Szlovákia"
msgstr "Szlovák"
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
@ -223,7 +224,7 @@ msgstr "Spanyol"
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr "Svédország"
msgstr "Svéd"
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
@ -239,7 +240,7 @@ msgstr "Vietnami"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "A támogatott nyelvek újraindítása"
msgstr "A támogatott nyelvek listájának lekérése"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
@ -267,11 +268,11 @@ msgstr "Fordítási hiba"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "Lassabb"
msgstr "Lassabban"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Betiltott"
msgstr "Tiltott"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
@ -304,7 +305,7 @@ msgid ""
" * `html` - HTML markup\n"
msgstr ""
"Formátum forrás szöveg:\n"
"* `text' - Plain szöveg\n"
"* `text' - egyszerű szöveg\n"
"* `html' - HTML markup\n"
#: libretranslate/locales/.swag.py:17
@ -325,7 +326,7 @@ msgstr "Fájl fordítása"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr "Védje meg egyetlen szöveg nyelvét"
msgstr "A szöveg nyelvének észlelése"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
@ -349,11 +350,11 @@ msgstr "frontend beállítások"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "fénykép"
msgstr "frontend"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr "Javaslatot nyújt be a fordítás javítására"
msgstr "Küldjön javaslatot a fordítés javításához"
#: libretranslate/locales/.swag.py:29
msgid "Success"
@ -405,7 +406,7 @@ msgstr "Hibaüzenet"
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr "Oka lassú le"
msgstr "A lelassulás oka"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
@ -413,7 +414,7 @@ msgstr "Fordított fájl url"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr "Biztonsági érték"
msgstr "Bizalmi érték"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
@ -421,19 +422,19 @@ msgstr "Jellemző bemeneti határértéke ennek a nyelvnek (-1 nem jelzi a hatá
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "Frontend fordítási idő"
msgstr "Frontend fordítás időtúllépés"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr "Függetlenül attól, hogy az API kulcsfontosságú adatbázisa engedélyezett-e."
msgstr "Függetlenül attól, hogy az API kulcs adatbázisa engedélyezett-e."
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "Függetlenül attól, hogy egy API kulcsra van szükség."
msgstr "Szükséges-e API kulcs."
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr "Akár javaslatok benyújtása engedélyezett."
msgstr "Ha javaslatok benyújtásá engedélyezett."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
@ -441,13 +442,13 @@ msgstr "Támogatott fájlformátum"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr "Akár sikeres volt a benyújtás"
msgstr "Amennyiben a beküldsé sikeres volt"
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr "Másolás szöveg"
msgstr "Szöveg másolása"
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
@ -458,7 +459,7 @@ msgstr "Másolás szöveg"
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr "Nem tölthet %(url)s"
msgstr "Nem tölthető be a(z) %(url)s"
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
@ -469,24 +470,25 @@ msgstr "Ismeretlen hiba"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "Második"
msgstr "Másolva"
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
"Köszönöm a korrekciót. Ne feledje, hogy a javaslat nem fog azonnal "
"Köszönöm a korrekciót. Vegye figyelembe, hogy a javaslata nem fog azonnal "
"hatályba lépni."
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr "Nincsenek nyelvek. Helyesen telepítette a modelleket?"
msgstr "Nincsenek elérhető nyelvek. Helyesen telepítette a modelleket?"
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr "Típus az API kulcsodban. Ha szüksége van egy API kulcsra, %(instructions)s"
msgstr ""
"Írja be az API kulcsot. Ha szüksége van egy API kulcsra, %(instructions)s"
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
@ -499,7 +501,7 @@ msgstr "lépjen kapcsolatba a szerver-üzemeltetővel."
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr "Ingyenes és nyílt forráskódú gép fordítás API"
msgstr "Ingyenes és nyílt forráskódú gépi fordító API"
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
@ -507,8 +509,9 @@ msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
"Ingyenes és nyílt forráskódú gép fordítás API. Önálló, offline képes és "
"könnyen telepíthető. Futtassa saját API szerverét néhány perc alatt."
"Ingyenes és nyílt forráskódú gépi fordító API. Helyileg telepített, offline "
"működő és könnyen telepíthető. Futtassa saját API szerverét néhány perc "
"alatt."
#: libretranslate/templates/index.html:11
msgid "translation"
@ -520,11 +523,11 @@ msgstr "api"
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr "API Docs"
msgstr "API Dokumentáció"
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr "Szerezd meg az API-t Key"
msgstr "Szerezzen API kucsot"
#: libretranslate/templates/index.html:69
msgid "GitHub"
@ -532,11 +535,11 @@ msgstr "GitHub"
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr "Állítsa be az API-t Key"
msgstr "Állítsa be az API kulcsot"
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr "Változási nyelv"
msgstr "Nyelv módosítása"
#: libretranslate/templates/index.html:79
msgid "Edit"
@ -544,51 +547,51 @@ msgstr "Szerkesztés"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "Toggle sötét / fény mód"
msgstr "Váltás sötét/világos módra"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr "Elbocsátások"
msgstr "elvetés"
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr "Fordítás API"
msgstr "Fordító API"
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr "Fordító szöveg"
msgstr "Szöveg Fordítása"
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr "Fordító fájlok"
msgstr "File-ok fordítása"
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr "Fordítsd le"
msgstr "Fordítási ürlap"
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr "Swap forrás és célnyelvek"
msgstr "Forrás és célnyelv felcserélése"
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr "Fordítsd le"
msgstr "Fordítsd le ebbe"
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr "Fordítás szövege"
msgstr "Fordítandó szöveg"
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr "Törlés szöveg"
msgstr "szöveg törlése"
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr "Legjobb fordítás"
msgstr "Javasolj fordítást"
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr "Törlés"
msgstr "mégse"
#: libretranslate/templates/index.html:233
msgid "Send"
@ -604,7 +607,7 @@ msgstr "File"
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr "Távolítsa el a fájlt"
msgstr "File eltávolítása"
#: libretranslate/templates/index.html:275
msgid "Translate"
@ -629,7 +632,7 @@ msgstr "Nyilt Forráskódú Gépi Fordító API"
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr "Önmagát választotta. Offline Képes. Könnyű a beállításhoz."
msgstr "Helyben futtatható, offline működő. Könnyen beállítható."
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
@ -637,7 +640,7 @@ msgstr "LibreTranslate"
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr "Engedély:"
msgstr "Licenc:"
#: libretranslate/templates/index.html:340
#, python-format
@ -646,22 +649,24 @@ msgid ""
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
"Ezt a nyilvános API-t tesztelésre, személyes vagy alkalmankénti "
"használatra használhatod. Amennyiben az alkalmazásod éles környezetben "
"fogod használni úgy használd a %(host_server)s-t vagy %(get_api_key)s-t."
"Ezt a nyilvános API-t tesztelésre, személyes vagy alkalmi használatra "
"használandó. Amennyiben az alkalmazásod éles környezetben fogod használni "
"úgy használd a %(host_server)s-t vagy %(get_api_key)s-t."
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr "fogadja el saját szerverét"
msgstr "Hosztold a saját szervered"
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr "kap egy API kulcsot"
msgstr "API kulcs szerzése"
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr "Made with %(heart)s által %(contributors)s és erőteljes %(engine)s"
msgstr ""
"%(heart)s-el készítve. Közreműködtek %(contributors)s működtetve ezzel: "
"%(engine)s"
#: libretranslate/templates/index.html:348
#, python-format
@ -670,4 +675,3 @@ msgstr "%(libretranslate)s Közreműködők"
#~ msgid "multipart/form-data"
#~ msgstr "multipart/form-data"

View file

@ -1,4 +1,4 @@
{
"name": "Hungarian",
"reviewed": false
}
"reviewed": true
}

View file

@ -9,14 +9,16 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-01-10 09:57+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/libretranslate/app/ja/>\n"
"PO-Revision-Date: 2024-02-10 04:01+0000\n"
"Last-Translator: 石丸健太郎 <marudosurdo@gmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/libretranslate/"
"app/ja/>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.4-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
@ -33,20 +35,20 @@ msgstr "無許可"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "あまりにも多くのリクエストは違反を制限します"
msgstr "リクエストが多すぎます。"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Invalid API キー"
msgstr "無効な API キー"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "サーバ管理者に連絡して、APIキーを取得する"
msgstr "サーバ管理者に連絡して、APIキーを取得してください。"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "アクセス %(url)s API キーを取得する"
msgstr "%(url)sにアクセスして API キーを取得する"
#: libretranslate/app.py:318
msgid "Slowdown:"
@ -58,20 +60,20 @@ msgstr "スローダウン:"
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, fuzzy, python-format
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "無効な要求: 欠落 %(name)s パラメータ"
msgstr "無効な要求: %(name)s パラメータが欠落している"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr "無効な要求: 要求(%(size)s) テキストの制限を超えた (%(limit)s)"
msgstr "無効な要求: 要求(%(size)s)がテキストの制限(%(limit)s)超えている"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "%(lang)s サポートされていません"
msgstr "%(lang)s サポートされていません"
#: libretranslate/app.py:594
#, python-format
@ -86,7 +88,7 @@ msgid ""
msgstr "%(tname)s (%(tcode)s) 対象言語は対象言語として利用できません。 %(sname)s (%(scode)s)"
#: libretranslate/app.py:647
#, fuzzy, python-format
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "テキストを翻訳できません。 %(text)s"
@ -112,15 +114,15 @@ msgstr "このサーバーで提案が無効になっています。."
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr "日本語 English"
msgstr "日本語"
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr "ログイン"
msgstr "アラビア語"
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr "アゼルバイジャン"
msgstr "アゼルバイジャン"
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
@ -140,7 +142,7 @@ msgstr "オランダ語"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "エスペラント"
msgstr "エスペラント"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
@ -152,7 +154,7 @@ msgstr "フランス語"
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr "ドイツ"
msgstr "ドイツ"
#: libretranslate/locales/.langs.py:12
msgid "Greek"
@ -276,19 +278,16 @@ msgid "Text(s) to translate"
msgstr "翻訳するテキスト"
#: libretranslate/locales/.swag.py:12
#, fuzzy
msgid "Source language code"
msgstr "言語コード"
msgstr "ソース言語コード"
#: libretranslate/locales/.swag.py:13
#, fuzzy
msgid "Target language code"
msgstr "ターゲット言語コードをサポート"
msgstr "ターゲット言語コード"
#: libretranslate/locales/.swag.py:14
#, fuzzy
msgid "text"
msgstr "テキストのコピー"
msgstr "テキスト"
#: libretranslate/locales/.swag.py:15
msgid "html"
@ -305,9 +304,8 @@ msgstr ""
"* `html` - HTML マークアップ\n"
#: libretranslate/locales/.swag.py:17
#, fuzzy
msgid "API key"
msgstr "ログイン"
msgstr "APIキー"
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
@ -318,9 +316,8 @@ msgid "Translated file"
msgstr "翻訳ファイル"
#: libretranslate/locales/.swag.py:20
#, fuzzy
msgid "File to translate"
msgstr "翻訳するテキスト"
msgstr "翻訳するファイル"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
@ -335,9 +332,8 @@ msgid "Detection error"
msgstr "検出エラー"
#: libretranslate/locales/.swag.py:24
#, fuzzy
msgid "Text to detect"
msgstr "自動検出"
msgstr "検出するテキスト"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
@ -368,19 +364,16 @@ msgid "Original text"
msgstr "オリジナルテキスト"
#: libretranslate/locales/.swag.py:32
#, fuzzy
msgid "Suggested translation"
msgstr "翻訳の提案"
msgstr "提案された翻訳"
#: libretranslate/locales/.swag.py:33
#, fuzzy
msgid "Language of original text"
msgstr "単一のテキストの言語を検出する"
msgstr "オリジナルテキストの言語"
#: libretranslate/locales/.swag.py:34
#, fuzzy
msgid "Language of suggested translation"
msgstr "翻訳の提案"
msgstr "提案された翻訳の言語"
#: libretranslate/locales/.swag.py:35
msgid "feedback"
@ -642,14 +635,15 @@ msgid "License:"
msgstr "ライセンス:"
#: libretranslate/templates/index.html:340
#, fuzzy, python-format
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. If "
"you're going to run an application in production, please %(host_server)s or "
"%(get_api_key)s."
msgstr ""
"このパブリック API は、テスト、個人的、または不適切な使用に使用されます。 制作中のアプリケーションを実行する場合は、%(host_server)s"
" または %(get_api_key)s."
"この公開API はテストまたは個人的、頻繁でない用途に使用してください。製品のア"
"プリケーションに使用する場合は、%(host_server)s または "
"%(get_api_key)sしてください。"
#: libretranslate/templates/index.html:340
msgid "host your own server"
@ -660,9 +654,9 @@ msgid "get an API key"
msgstr "aPI キーを取得する"
#: libretranslate/templates/index.html:348
#, fuzzy, python-format
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr "作りました %(heart)s によって %(contributors)s スタッフ %(engine)s"
msgstr "%(heart)sと%(contributors)sによって作成され、%(engine)sにより作動しています。"
#: libretranslate/templates/index.html:348
#, python-format

View file

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-01-06 17:52-0500\n"
"PO-Revision-Date: 2023-06-03 02:40+0000\n"
"Last-Translator: \"T. Alexander\" <theools@gmail.com>\n"
"PO-Revision-Date: 2024-03-25 12:01+0000\n"
"Last-Translator: Kaleido Scope <senpai@firemail.cc>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
"libretranslate/app/nb_NO/>\n"
"Language: nb_NO\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.18-dev\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.11.0\n"
#: libretranslate/app.py:60
@ -36,7 +36,7 @@ msgstr "Ikke godkjent"
#: libretranslate/app.py:211
#, fuzzy
msgid "Too many request limits violations"
msgstr "For mange forespørsler"
msgstr "For mange brudd på forespørselsgrensene"
#: libretranslate/app.py:220
msgid "Invalid API key"
@ -278,7 +278,7 @@ msgstr "Bannlyst"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Hei verden."
msgstr "Hei verden!"
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
@ -297,7 +297,6 @@ msgid "text"
msgstr "tekst"
#: libretranslate/locales/.swag.py:15
#, fuzzy
msgid "html"
msgstr "HTML"

View file

@ -9,48 +9,50 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-01-10 09:57+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/libretranslate/app/nl/>\n"
"PO-Revision-Date: 2023-12-09 21:07+0000\n"
"Last-Translator: ArnoldCordewiner <arnoldc@protonmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/libretranslate/app/"
"nl/>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.3-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Invalide JSON formaat"
msgstr "Onjuist JSON formaat"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Auto Detect"
msgstr "Automatisch Detecteren"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Onbevoegd"
msgstr "Niet bevoegd"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "Teveel verzoeksovertredingen"
msgstr "Overschrijding maximaal aantal verzoeken"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Invalide API"
msgstr "Ongeldige API sleutel"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Neem contact op met de server-operator om een API sleutel te krijgen"
msgstr "Neem contact op met de server-beheerder om een API sleutel te krijgen"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Bezoek %(url)s om een API sleutel te krijgen"
msgstr "Ga naar %(url)s om een API sleutel te krijgen"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "Rustig aan"
msgstr "Vertraging:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
@ -58,25 +60,26 @@ msgstr "Rustig aan"
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, fuzzy, python-format
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Ongeldige verzoek: %(name)s parameter"
msgstr "Ongeldig verzoek: %(name)s parameter ontbreekt"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, fuzzy, python-format
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr "Invalide verzoek: (%(size)s) / (%(limit)s)"
msgstr ""
"Ongeldig verzoek: verzoek (%(size)s) overschrijdt tekstlimiet (%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "%(lang)s is niet gesteund"
msgstr "%(lang)s wordt niet ondersteund"
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr "%(format)s formaat is niet gesteund"
msgstr "%(format)s formaat wordt niet ondersteund"
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
@ -90,23 +93,23 @@ msgstr ""
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "Kan niet vertaalen tekst: %(text)s"
msgstr "Kan tekst niet vertalen: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "De dossiers vertaling zijn uitgeschakeld op deze server."
msgstr "Bestanden vertalen is uitgeschakeld op deze server."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "Invalide verzoek: lege bestanden"
msgstr "Ongeldig verzoek: leeg bestand"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "Ongeldig verzoek, dossier formaat niet gesteund"
msgstr "Ongeldig verzoek: bestandsformaat wordt niet ondersteund"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Invalide"
msgstr "Ongeldige bestandsnaam"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
@ -122,7 +125,7 @@ msgstr "Arabisch"
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr "Azerbaij"
msgstr "Azerbeidzjaans"
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
@ -130,7 +133,7 @@ msgstr "Chinees"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "Tsjetsjech"
msgstr "Tsjechisch"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
@ -146,7 +149,7 @@ msgstr "Esperanto"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr "Finish"
msgstr "Fins"
#: libretranslate/locales/.langs.py:10
msgid "French"
@ -174,7 +177,7 @@ msgstr "Hongaars"
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr "Indonesië"
msgstr "Indonesisch"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
@ -194,11 +197,11 @@ msgstr "Koreaans"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr "Perzische"
msgstr "Perzisch"
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr "Pool"
msgstr "Pools"
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
@ -210,7 +213,7 @@ msgstr "Russisch"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr "Slovak"
msgstr "Slovaaks"
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
@ -222,75 +225,71 @@ msgstr "Zweeds"
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr "Turkije"
msgstr "Turks"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "Ukranian"
msgstr "Oekraïens"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr "Vietnamese"
msgstr "Vietnamees"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Een lijst met ondersteunende talen"
msgstr "Haal de lijst met ondersteunde talen op"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr "List van talen"
msgstr "Lijst van talen"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr "vertaling:"
msgstr "vertaal"
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr "Vertaling:"
msgstr "Vertaal tekst van de ene taal naar een andere"
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr "Vertaald door"
msgstr "Vertaalde tekst"
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr "Invalide verzoek"
msgstr "Ongeldig verzoek"
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr "Vertaling"
msgstr "Vertaalfout"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "Rustig aan"
msgstr "Vertraag"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Vertaling:"
msgstr "Geband"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Hallo wereld!"
#: libretranslate/locales/.swag.py:11
#, fuzzy
msgid "Text(s) to translate"
msgstr "Text om te vertalen"
msgstr "Tekst(en) om te vertalen"
#: libretranslate/locales/.swag.py:12
#, fuzzy
msgid "Source language code"
msgstr "Vertaling:"
msgstr "Brontaal code"
#: libretranslate/locales/.swag.py:13
#, fuzzy
msgid "Target language code"
msgstr "Vertaling:"
msgstr "Doeltaal code"
#: libretranslate/locales/.swag.py:14
#, fuzzy
msgid "text"
msgstr "Begrepen"
msgstr "tekst"
#: libretranslate/locales/.swag.py:15
msgid "html"
@ -307,22 +306,20 @@ msgstr ""
"HTML markup\n"
#: libretranslate/locales/.swag.py:17
#, fuzzy
msgid "API key"
msgstr ""
msgstr "API sleutel"
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr "Vertaling:"
msgstr "Vertaal een bestand van de ene taal naar de andere"
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr "Vertaling:"
msgstr "Vertaald bestand"
#: libretranslate/locales/.swag.py:20
#, fuzzy
msgid "File to translate"
msgstr "Text om te vertalen"
msgstr "Bestand om te vertalen"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
@ -330,16 +327,15 @@ msgstr "Vernietig de taal van een enkele sms"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr "Vertaling:"
msgstr "Detecties"
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr "Detectie fout"
#: libretranslate/locales/.swag.py:24
#, fuzzy
msgid "Text to detect"
msgstr "Auto Detect"
msgstr "Tekst om te detecteren"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
@ -347,15 +343,15 @@ msgstr "Verwijder de frontend specifieke instellingen"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr "vertaling:"
msgstr "frontend instellingen"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "vertaling:"
msgstr "frontend"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr "Vertaling:"
msgstr "Doe een suggestie voor het verbeteren van een vertaling"
#: libretranslate/locales/.swag.py:29
msgid "Success"
@ -370,19 +366,16 @@ msgid "Original text"
msgstr "Originele SMS"
#: libretranslate/locales/.swag.py:32
#, fuzzy
msgid "Suggested translation"
msgstr "Suggest vertaling:"
msgstr "Voorgestelde vertaling"
#: libretranslate/locales/.swag.py:33
#, fuzzy
msgid "Language of original text"
msgstr "Vernietig de taal van een enkele sms"
msgstr "Taal van de oorspronkelijke tekst"
#: libretranslate/locales/.swag.py:34
#, fuzzy
msgid "Language of suggested translation"
msgstr "Suggest vertaling:"
msgstr "Taal van de voorgestelde vertaling"
#: libretranslate/locales/.swag.py:35
msgid "feedback"
@ -390,7 +383,7 @@ msgstr "feedback"
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr "Vertaling:"
msgstr "Taalcode"
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
@ -398,7 +391,7 @@ msgstr "Menselijke taalnaam (in Engels)"
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr "Vertaling:"
msgstr "Codes van ondersteunde doeltalen"
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
@ -414,7 +407,7 @@ msgstr "Reason"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "Vertaling:"
msgstr "URL van het vertaalde bestand"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
@ -426,7 +419,7 @@ msgstr "Character input limiet voor deze taal"
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "Vertaling:"
msgstr "Frontend vertaling timeout"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
@ -442,7 +435,7 @@ msgstr "Of het indienen van suggesties in staat is."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr "Vertaling:"
msgstr "Ondersteunde bestandsformaten"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
@ -488,10 +481,10 @@ msgid "No languages available. Did you install the models correctly?"
msgstr "Geen talen beschikbaar. Heb je de modellen correct geïnstalleerd?"
#: libretranslate/templates/app.js.template:522
#, fuzzy, python-format
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr ""
"Type in je API key. Als je een API sleutel nodig hebt, %(instructions)s"
"Voer je API sleutel in. Als je een API sleutel nodig hebt, %(instructions)s"
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
@ -518,7 +511,7 @@ msgstr ""
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr "vertaling:"
msgstr "vertaling"
#: libretranslate/templates/index.html:11
msgid "api"
@ -558,19 +551,19 @@ msgstr "Ingerukt"
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr "Vertaling:"
msgstr "Vertalings-API"
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr "Vertaling:"
msgstr "Vertaal Tekst"
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr "Vertaling:"
msgstr "Vertaal Bestanden"
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr "Vertaling:"
msgstr "Vertaal uit"
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
@ -578,7 +571,7 @@ msgstr "Zwembron en doel talen"
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr "Vertaling:"
msgstr "Vertaal naar"
#: libretranslate/templates/index.html:210
msgid "Text to translate"
@ -590,31 +583,31 @@ msgstr "Verwijder bericht"
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr "Suggest vertaling:"
msgstr "Voorgestelde vertaling"
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr "Cancel"
msgstr "Annuleren"
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr "Vertaling:"
msgstr "Versturen"
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr "Vertaling:"
msgstr "Ondersteunde bestandsformaten:"
#: libretranslate/templates/index.html:253
msgid "File"
msgstr "Veld"
msgstr "Bestand"
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr "Verwijder dossier"
msgstr "Verwijder bestand"
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr "Vertaling:"
msgstr "Vertaal"
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
@ -627,52 +620,53 @@ msgstr "Verzoek"
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr "Respons"
msgstr "Antwoord"
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr "Open Source Machine Vertaling"
msgstr "Open Source Machine Vertaling API"
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr "Zelf gehost. Offline Capable. Makkelijk voor Setup."
msgstr "Zelf gehost. Offline Capable. Makkelijk te configureren."
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr "LibreTrans"
msgstr "LibreTranslate"
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr "License:"
msgstr "Licentie:"
#: libretranslate/templates/index.html:340
#, fuzzy, python-format
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. If "
"you're going to run an application in production, please %(host_server)s or "
"%(get_api_key)s."
msgstr ""
"Deze openbare aanklager moet worden gebruikt voor testen, persoonlijk of in "
"gebruik. Als je een aanvraag in de productie doet, alsjeblieft. "
"Deze publieke API moet worden gebruikt voor testen, persoonlijk of "
"infrequent gebruik. Als je een applicatie in productie laat lopen, dan aub "
"%(host_server)s of... %(get_api_key)s."
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr "uw eigen server"
msgstr "host je eigen server"
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr "haal een API sleutel"
msgstr "verkrijg een API sleutel"
#: libretranslate/templates/index.html:348
#, fuzzy, python-format
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr "Gemaakt met %(heart)s ♪ %(contributors)s %(engine)s"
msgstr ""
"Gemaakt met %(heart)s door %(contributors)s enmet de kracht van %(engine)s"
#: libretranslate/templates/index.html:348
#, fuzzy, python-format
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr "%(libretranslate)s Verboden"
msgstr "%(libretranslate)s Bijdragers"
#~ msgid "multipart/form-data"
#~ msgstr "multipart/form-data"

View file

@ -0,0 +1,654 @@
# Translations template for LibreTranslate.
# Copyright (C) 2023 LibreTranslate Authors
# This file is distributed under the same license as the LibreTranslate
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: LibreTranslate 1.3.12\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2024-03-25 12:01+0000\n"
"Last-Translator: Kaleido Scope <senpai@firemail.cc>\n"
"Language-Team: Norwegian Nynorsk <https://hosted.weblate.org/projects/"
"libretranslate/app/nn/>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Ugyldig JSON-format"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "Oppdag automatisk"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Ikkje godkjent"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "For mange førespurnadar"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Ugyldig API-nykel"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Ta kontakt med sørvaradministrator for å få API-nykel"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Besøk %(url)s for å få ein API-nykel"
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr "Nedbremsing:"
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
#: libretranslate/app.py:743 libretranslate/app.py:745
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Ugyldig førespurnad: manglande %(name)s-parameter"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr ""
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr ""
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr ""
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr ""
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr ""
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr ""
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr ""
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr ""
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr "Engelsk"
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr "Arabisk"
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr "Azeri"
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr "Mandarin"
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr "Tjekkisk"
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr "Dansk"
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr "Nederlandsk"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "Esperanto"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr "Finsk"
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr "Fransk"
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr "Tysk"
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr "Gresk"
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr "Hebraisk"
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr "Hindi"
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr "Ungarsk"
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr "Indonesisk"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr "Irsk"
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr "Italiensk"
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr "Japansk"
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr "Koreansk"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr "Farsi"
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr "Polsk"
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr "Portugisisk"
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr "Russisk"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr "Slovakisk"
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr "Spansk"
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr "Svensk"
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr "Tyrkisk"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "Ukrainsk"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr "Vietnamesisk"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Hent liste over støtta språk"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr "Språkliste"
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr ""
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr "Omset tekst frå eit språk til eit anna"
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr "Omsette tekst"
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr "Ugyldig førespurnad"
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr "Omsetningsfeil"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "Senk farten"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Utestengd"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Hei verda!"
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
msgstr "Tekst til omsetning"
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
msgstr ""
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr ""
#: libretranslate/locales/.swag.py:14
msgid "text"
msgstr ""
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr ""
#: libretranslate/locales/.swag.py:16
msgid ""
"Format of source text:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
msgstr ""
#: libretranslate/locales/.swag.py:17
msgid "API key"
msgstr ""
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr ""
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr ""
#: libretranslate/locales/.swag.py:20
msgid "File to translate"
msgstr ""
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr ""
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr ""
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr ""
#: libretranslate/locales/.swag.py:24
msgid "Text to detect"
msgstr ""
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr ""
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr ""
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr ""
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr ""
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr ""
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr ""
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr ""
#: libretranslate/locales/.swag.py:32
msgid "Suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:33
msgid "Language of original text"
msgstr ""
#: libretranslate/locales/.swag.py:34
msgid "Language of suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr ""
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr ""
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr ""
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr ""
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr ""
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr ""
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr ""
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr ""
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr ""
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr ""
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr ""
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr ""
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr ""
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr ""
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr ""
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
#: libretranslate/templates/app.js.template:91
#: libretranslate/templates/app.js.template:273
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr ""
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr ""
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr ""
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr ""
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr ""
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr ""
#: libretranslate/templates/index.html:11
msgid "api"
msgstr ""
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr ""
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr ""
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr ""
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr ""
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr ""
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr ""
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr ""
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr ""
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr ""
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr ""
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr ""
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr ""
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr ""
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr ""
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr ""
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr ""
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr ""
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr ""
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr ""
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr ""
#: libretranslate/templates/index.html:253
msgid "File"
msgstr ""
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr ""
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr ""
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr ""
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr ""
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr ""
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr ""
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr ""
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr ""
#: libretranslate/templates/index.html:340
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr ""
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr ""

View file

@ -9,14 +9,17 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-09-01 11:56+0000\n"
"Last-Translator: Wojtek Jurkowlaniec <wojtek.jurkowlaniec@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/libretranslate/app/pl/>\n"
"PO-Revision-Date: 2024-01-30 16:01+0000\n"
"Last-Translator: r5jyhte <ioulykttr@proton.me>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/libretranslate/"
"app/pl/>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.4-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
@ -541,7 +544,7 @@ msgstr "Edyta"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "Toggle dark/light mode"
msgstr "Przełącz tryb ciemny/jasny"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
@ -601,16 +604,16 @@ msgstr "File"
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr "Remove plik"
msgstr "Usuń plik"
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr "Translat"
msgstr "Tłumacz"
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr "Download"
msgstr "Pobierz"
#: libretranslate/templates/index.html:295
msgid "Request"

View file

@ -0,0 +1,654 @@
# Translations template for LibreTranslate.
# Copyright (C) 2023 LibreTranslate Authors
# This file is distributed under the same license as the LibreTranslate
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: LibreTranslate 1.3.12\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2024-02-20 07:02+0000\n"
"Last-Translator: Liam Johnson <ibrahimjan@mail.ustc.edu.cn>\n"
"Language-Team: Uyghur <https://hosted.weblate.org/projects/libretranslate/"
"app/ug/>\n"
"Language: ug\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "ئىناۋەتسىز JSON فورماتى"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
msgstr "ئاپتوماتىك تەكشۈرۈش"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "ھوقۇق بېرىلمىگەن"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "ئىلتىماس سانى چەكتىن ئاشتى"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "API ئاچقۇچ ئىناۋەتسىز"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr ""
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr ""
#: libretranslate/app.py:318
msgid "Slowdown:"
msgstr ""
#: libretranslate/app.py:525 libretranslate/app.py:527
#: libretranslate/app.py:529 libretranslate/app.py:741
#: libretranslate/app.py:743 libretranslate/app.py:745
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr ""
#: libretranslate/app.py:544 libretranslate/app.py:553
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr ""
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr ""
#: libretranslate/app.py:594
#, python-format
msgid "%(format)s format is not supported"
msgstr ""
#: libretranslate/app.py:602 libretranslate/app.py:626
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from "
"%(sname)s (%(scode)s)"
msgstr ""
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr ""
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr ""
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr ""
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr ""
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr ""
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
msgstr ""
#: libretranslate/locales/.langs.py:1
msgid "English"
msgstr ""
#: libretranslate/locales/.langs.py:2
msgid "Arabic"
msgstr ""
#: libretranslate/locales/.langs.py:3
msgid "Azerbaijani"
msgstr ""
#: libretranslate/locales/.langs.py:4
msgid "Chinese"
msgstr ""
#: libretranslate/locales/.langs.py:5
msgid "Czech"
msgstr ""
#: libretranslate/locales/.langs.py:6
msgid "Danish"
msgstr ""
#: libretranslate/locales/.langs.py:7
msgid "Dutch"
msgstr ""
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr ""
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
msgstr ""
#: libretranslate/locales/.langs.py:10
msgid "French"
msgstr ""
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr ""
#: libretranslate/locales/.langs.py:12
msgid "Greek"
msgstr ""
#: libretranslate/locales/.langs.py:13
msgid "Hebrew"
msgstr ""
#: libretranslate/locales/.langs.py:14
msgid "Hindi"
msgstr ""
#: libretranslate/locales/.langs.py:15
msgid "Hungarian"
msgstr ""
#: libretranslate/locales/.langs.py:16
msgid "Indonesian"
msgstr ""
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr ""
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr ""
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr ""
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr ""
#: libretranslate/locales/.langs.py:21
msgid "Persian"
msgstr ""
#: libretranslate/locales/.langs.py:22
msgid "Polish"
msgstr ""
#: libretranslate/locales/.langs.py:23
msgid "Portuguese"
msgstr ""
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr ""
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
msgstr ""
#: libretranslate/locales/.langs.py:26
msgid "Spanish"
msgstr ""
#: libretranslate/locales/.langs.py:27
msgid "Swedish"
msgstr ""
#: libretranslate/locales/.langs.py:28
msgid "Turkish"
msgstr ""
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr ""
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
msgstr ""
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr ""
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
msgstr ""
#: libretranslate/locales/.swag.py:3
msgid "translate"
msgstr ""
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr ""
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr ""
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr ""
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr ""
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr ""
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr ""
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr ""
#: libretranslate/locales/.swag.py:11
msgid "Text(s) to translate"
msgstr ""
#: libretranslate/locales/.swag.py:12
msgid "Source language code"
msgstr ""
#: libretranslate/locales/.swag.py:13
msgid "Target language code"
msgstr ""
#: libretranslate/locales/.swag.py:14
msgid "text"
msgstr ""
#: libretranslate/locales/.swag.py:15
msgid "html"
msgstr ""
#: libretranslate/locales/.swag.py:16
msgid ""
"Format of source text:\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
msgstr ""
#: libretranslate/locales/.swag.py:17
msgid "API key"
msgstr ""
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr ""
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr ""
#: libretranslate/locales/.swag.py:20
msgid "File to translate"
msgstr ""
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr ""
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr ""
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr ""
#: libretranslate/locales/.swag.py:24
msgid "Text to detect"
msgstr ""
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr ""
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr ""
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr ""
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr ""
#: libretranslate/locales/.swag.py:29
msgid "Success"
msgstr ""
#: libretranslate/locales/.swag.py:30
msgid "Not authorized"
msgstr ""
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr ""
#: libretranslate/locales/.swag.py:32
msgid "Suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:33
msgid "Language of original text"
msgstr ""
#: libretranslate/locales/.swag.py:34
msgid "Language of suggested translation"
msgstr ""
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr ""
#: libretranslate/locales/.swag.py:36
msgid "Language code"
msgstr ""
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr ""
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr ""
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr ""
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr ""
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr ""
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr ""
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr ""
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr ""
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr ""
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr ""
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr ""
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr ""
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr ""
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr ""
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
#: libretranslate/templates/app.js.template:91
#: libretranslate/templates/app.js.template:273
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, python-format
msgid "Cannot load %(url)s"
msgstr ""
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr ""
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr ""
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect "
"right away."
msgstr ""
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr ""
#: libretranslate/templates/app.js.template:522
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr ""
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr ""
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline "
"capable and easy to setup. Run your own API server in just a few minutes."
msgstr ""
#: libretranslate/templates/index.html:11
msgid "translation"
msgstr ""
#: libretranslate/templates/index.html:11
msgid "api"
msgstr ""
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr ""
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr ""
#: libretranslate/templates/index.html:69
msgid "GitHub"
msgstr ""
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr ""
#: libretranslate/templates/index.html:73
msgid "Change language"
msgstr ""
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr ""
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr ""
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr ""
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr ""
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr ""
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr ""
#: libretranslate/templates/index.html:185
msgid "Translate from"
msgstr ""
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr ""
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr ""
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr ""
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr ""
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr ""
#: libretranslate/templates/index.html:230
msgid "Cancel"
msgstr ""
#: libretranslate/templates/index.html:233
msgid "Send"
msgstr ""
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr ""
#: libretranslate/templates/index.html:253
msgid "File"
msgstr ""
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr ""
#: libretranslate/templates/index.html:275
msgid "Translate"
msgstr ""
#: libretranslate/templates/index.html:276
#: libretranslate/templates/index.html:320
msgid "Download"
msgstr ""
#: libretranslate/templates/index.html:295
msgid "Request"
msgstr ""
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr ""
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr ""
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr ""
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr ""
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr ""
#: libretranslate/templates/index.html:340
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. "
"If you're going to run an application in production, please "
"%(host_server)s or %(get_api_key)s."
msgstr ""
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr ""
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr ""
#: libretranslate/templates/index.html:348
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr ""

View file

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-10-23 08:00+0000\n"
"PO-Revision-Date: 2023-11-26 07:04+0000\n"
"Last-Translator: Fqwe1 <Fqwe1@users.noreply.hosted.weblate.org>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/libretranslate/"
"app/uk/>\n"
@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.1.1-dev\n"
"X-Generator: Weblate 5.2.1-rc\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79 libretranslate/app.py:60

View file

@ -9,19 +9,21 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-01-10 09:57+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/libretranslate/app/vi/>\n"
"PO-Revision-Date: 2023-12-16 08:07+0000\n"
"Last-Translator: tuanta <tuanta@skiff.com>\n"
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/"
"libretranslate/app/vi/>\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.3\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "Invalid JSON Format"
msgstr "Định dạng JSON không hợp lệ"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
@ -29,24 +31,24 @@ msgstr "Tự động phát hiện"
#: libretranslate/app.py:232
msgid "Unauthorized"
msgstr "Trái phép"
msgstr "Không được phép"
#: libretranslate/app.py:250
msgid "Too many request limits violations"
msgstr "Quá nhiều yêu cầu vi phạm giới hạn"
msgstr "Quá nhiều yêu cầu vượt giới hạn"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "Chìa khóa API"
msgstr "Mã API không hợp lệ"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "Làm ơn liên lạc với người điều hành máy chủ để lấy chìa khóa API"
msgstr "Hãy liên hệ với người quản trị máy chủ để nhận mã API"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "Đi %(url)s Để lấy chìa khóa API"
msgstr "Vào %(url)s để lấy mã API"
#: libretranslate/app.py:318
msgid "Slowdown:"
@ -58,55 +60,56 @@ msgstr "Chậm lại:"
#: libretranslate/app.py:896 libretranslate/app.py:1053
#: libretranslate/app.py:1055 libretranslate/app.py:1057
#: libretranslate/app.py:1059
#, fuzzy, python-format
#, python-format
msgid "Invalid request: missing %(name)s parameter"
msgstr "Yêu cầu tội lỗi: mất tích %(name)s Tham số"
msgstr "Yêu cầu không hợp lệ: thiếu tham số %(name)s"
#: libretranslate/app.py:544 libretranslate/app.py:553
#, fuzzy, python-format
#, python-format
msgid "Invalid request: request (%(size)s) exceeds text limit (%(limit)s)"
msgstr "Yêu cầu tội phạm: %(size)s Quá giới hạn tin nhắn. (%(limit)s)"
msgstr ""
"Yêu cầu không hợp lệ: kích thước yêu cầu %(size)s vượt quá giới hạn chữ "
"(%(limit)s)"
#: libretranslate/app.py:583 libretranslate/app.py:588
#: libretranslate/app.py:758 libretranslate/app.py:763
#, python-format
msgid "%(lang)s is not supported"
msgstr "%(lang)s Không được hỗ trợ."
msgstr "%(lang)s không được hỗ trợ"
#: libretranslate/app.py:594
#, fuzzy, python-format
#, python-format
msgid "%(format)s format is not supported"
msgstr "%(format)s Định dạng không được hỗ trợ"
msgstr "định dạng %(format)s không được hỗ trợ"
#: libretranslate/app.py:602 libretranslate/app.py:626
#, fuzzy, python-format
#, python-format
msgid ""
"%(tname)s (%(tcode)s) is not available as a target language from %(sname)s "
"(%(scode)s)"
msgstr ""
"%(tname)s (%(tcode)s) không có sẵn làm ngôn ngữ mục tiêu từ %(sname)s "
"(%(scode)s)"
"%(tname)s (%(tcode)s) không có sẵn làm ngôn ngữ đích từ %(sname)s (%(scode)s)"
#: libretranslate/app.py:647
#, python-format
msgid "Cannot translate text: %(text)s"
msgstr "Không thể dịch tin nhắn: %(text)s"
msgstr "Không thể dịch văn bản: %(text)s"
#: libretranslate/app.py:734 libretranslate/app.py:788
msgid "Files translation are disabled on this server."
msgstr "Dịch dữ liệu bị tắt trên máy chủ này."
msgstr "Dịch tệp tin bị tắt trên máy chủ này."
#: libretranslate/app.py:748
msgid "Invalid request: empty file"
msgstr "Yêu cầu tội phạm: hồ sơ trống rỗng"
msgstr "Yêu cầu không hợp lệ: tệp tin trống"
#: libretranslate/app.py:751
msgid "Invalid request: file format not supported"
msgstr "Yêu cầu về hồ sơ không được hỗ trợ"
msgstr "Yêu cầu không hợp lệ: định dạng tệp tin không được hỗ trợ"
#: libretranslate/app.py:796
msgid "Invalid filename"
msgstr "Tên hồ sơ tội phạm"
msgstr "Tên tệp tin không hợp lệ"
#: libretranslate/app.py:1038
msgid "Suggestions are disabled on this server."
@ -142,7 +145,7 @@ msgstr "Hà Lan"
#: libretranslate/locales/.langs.py:8
msgid "Esperanto"
msgstr "Esperanto"
msgstr "Esperanto (Quốc tế ngữ)"
#: libretranslate/locales/.langs.py:9
msgid "Finnish"
@ -154,7 +157,7 @@ msgstr "Pháp"
#: libretranslate/locales/.langs.py:11
msgid "German"
msgstr "Người Đức"
msgstr "Đức"
#: libretranslate/locales/.langs.py:12
msgid "Greek"
@ -178,19 +181,19 @@ msgstr "Indonesia"
#: libretranslate/locales/.langs.py:17
msgid "Irish"
msgstr "Ai đó"
msgstr "Ireland"
#: libretranslate/locales/.langs.py:18
msgid "Italian"
msgstr "Người Ý"
msgstr "Ý"
#: libretranslate/locales/.langs.py:19
msgid "Japanese"
msgstr "Người Nhật"
msgstr "Nhật"
#: libretranslate/locales/.langs.py:20
msgid "Korean"
msgstr "Hàn Quốc"
msgstr "Hàn"
#: libretranslate/locales/.langs.py:21
msgid "Persian"
@ -206,7 +209,7 @@ msgstr "Bồ Đào Nha"
#: libretranslate/locales/.langs.py:24
msgid "Russian"
msgstr "Người Nga"
msgstr "Nga"
#: libretranslate/locales/.langs.py:25
msgid "Slovak"
@ -226,7 +229,7 @@ msgstr "Thổ"
#: libretranslate/locales/.langs.py:29
msgid "Ukranian"
msgstr "Anh quốc"
msgstr "Ukraina"
#: libretranslate/locales/.langs.py:30
msgid "Vietnamese"
@ -234,7 +237,7 @@ msgstr "Việt Nam"
#: libretranslate/locales/.swag.py:1
msgid "Retrieve list of supported languages"
msgstr "Lấy danh sách hỗ trợ ngôn ngữ"
msgstr "Lấy danh sách ngôn ngữ được hỗ trợ"
#: libretranslate/locales/.swag.py:2
msgid "List of languages"
@ -246,51 +249,47 @@ msgstr "dịch"
#: libretranslate/locales/.swag.py:4
msgid "Translate text from a language to another"
msgstr "Dịch từ ngôn ngữ sang tiếng khác"
msgstr "Dịch ngôn ngữ sang ngôn ngữ khác"
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:222
msgid "Translated text"
msgstr "Dịch"
msgstr "Văn bản dịch"
#: libretranslate/locales/.swag.py:6
msgid "Invalid request"
msgstr "Yêu cầu tội phạm"
msgstr "Yêu cầu không hợp lệ"
#: libretranslate/locales/.swag.py:7
msgid "Translation error"
msgstr "Lỗi dịch thuật"
msgstr "Lỗi dịch"
#: libretranslate/locales/.swag.py:8
msgid "Slow down"
msgstr "Chậm thôi"
msgstr "Chậm lại"
#: libretranslate/locales/.swag.py:9
msgid "Banned"
msgstr "Banned"
msgstr "Đã bị cấm"
#: libretranslate/locales/.swag.py:10
msgid "Hello world!"
msgstr "Xin chào!"
msgstr "Xin chào thế giới!"
#: libretranslate/locales/.swag.py:11
#, fuzzy
msgid "Text(s) to translate"
msgstr "Tin nhắn để dịch"
msgstr "Chữ để dịch"
#: libretranslate/locales/.swag.py:12
#, fuzzy
msgid "Source language code"
msgstr "Mã ngôn ngữ"
msgstr "Mã ngôn ngữ nguồn"
#: libretranslate/locales/.swag.py:13
#, fuzzy
msgid "Target language code"
msgstr "Hỗ trợ mã ngôn ngữ mục tiêu"
msgstr "Mã ngôn ngữ đích"
#: libretranslate/locales/.swag.py:14
#, fuzzy
msgid "text"
msgstr ""
msgstr "chữ"
#: libretranslate/locales/.swag.py:15
msgid "html"
@ -303,59 +302,56 @@ msgid ""
" * `html` - HTML markup\n"
msgstr ""
"Định dạng văn bản nguồn:\n"
"♪ 'text' - Plain text\n"
"* 'html'\n"
" * `text` - Plain text\n"
" * `html` - HTML markup\n"
#: libretranslate/locales/.swag.py:17
#, fuzzy
msgid "API key"
msgstr "api"
msgstr "Mã API"
#: libretranslate/locales/.swag.py:18
msgid "Translate file from a language to another"
msgstr "Dịch tài liệu từ ngôn ngữ sang tiếng khác"
msgstr "Dịch tệp tin sang ngôn ngữ khác"
#: libretranslate/locales/.swag.py:19
msgid "Translated file"
msgstr "Hồ sơ dịch"
msgstr "Tệp tin đã dịch"
#: libretranslate/locales/.swag.py:20
#, fuzzy
msgid "File to translate"
msgstr "Tin nhắn để dịch"
msgstr "Tệp để dịch"
#: libretranslate/locales/.swag.py:21
msgid "Detect the language of a single text"
msgstr "Phát hiện ngôn ngữ của một tin nhắn"
msgstr "Phát hiện ngôn ngữ của một đoạn chữ"
#: libretranslate/locales/.swag.py:22
msgid "Detections"
msgstr "Phát hiện"
msgstr "Các phát hiện"
#: libretranslate/locales/.swag.py:23
msgid "Detection error"
msgstr "Lỗi phát hiện"
#: libretranslate/locales/.swag.py:24
#, fuzzy
msgid "Text to detect"
msgstr "Tự động phát hiện"
msgstr "Chữ để phát hiện"
#: libretranslate/locales/.swag.py:25
msgid "Retrieve frontend specific settings"
msgstr "Lấy thiết lập cụ thể"
msgstr "Lấy cài đặt về giao diện"
#: libretranslate/locales/.swag.py:26
msgid "frontend settings"
msgstr "cài đặt trước"
msgstr "các cài đặt giao diện"
#: libretranslate/locales/.swag.py:27
msgid "frontend"
msgstr "phía trước"
msgstr "giao diện"
#: libretranslate/locales/.swag.py:28
msgid "Submit a suggestion to improve a translation"
msgstr "Gửi lời đề nghị để cải thiện bản dịch"
msgstr "Gửi gợi ý để cải thiện bản dịch"
#: libretranslate/locales/.swag.py:29
msgid "Success"
@ -367,26 +363,23 @@ msgstr "Không được phép"
#: libretranslate/locales/.swag.py:31
msgid "Original text"
msgstr "Bản tin gốc"
msgstr "Chữ gốc"
#: libretranslate/locales/.swag.py:32
#, fuzzy
msgid "Suggested translation"
msgstr "Lời khuyên"
msgstr "Bản dịch đề xuất"
#: libretranslate/locales/.swag.py:33
#, fuzzy
msgid "Language of original text"
msgstr "Phát hiện ngôn ngữ của một tin nhắn"
msgstr "Ngôn ngữ của văn bản gốc"
#: libretranslate/locales/.swag.py:34
#, fuzzy
msgid "Language of suggested translation"
msgstr "Lời khuyên"
msgstr "Ngôn ngữ của bản dịch đề xuất"
#: libretranslate/locales/.swag.py:35
msgid "feedback"
msgstr "phản ứng"
msgstr "phản hồi"
#: libretranslate/locales/.swag.py:36
msgid "Language code"
@ -394,65 +387,65 @@ msgstr "Mã ngôn ngữ"
#: libretranslate/locales/.swag.py:37
msgid "Human-readable language name (in English)"
msgstr "Tên ngôn ngữ có thể đọc được của con người"
msgstr "Tên ngôn ngữ (để người đọc)"
#: libretranslate/locales/.swag.py:38
msgid "Supported target language codes"
msgstr "Hỗ trợ mã ngôn ngữ mục tiêu"
msgstr "Các mã ngôn ngữ đích được hỗ trợ"
#: libretranslate/locales/.swag.py:39
msgid "Translated text(s)"
msgstr "Dịch tin nhắn"
msgstr "Chữ đã dịch"
#: libretranslate/locales/.swag.py:40
msgid "Error message"
msgstr "Tin nhắn"
msgstr "Thông điệp lỗi"
#: libretranslate/locales/.swag.py:41
msgid "Reason for slow down"
msgstr "Reason chậm lại"
msgstr "Lý do phải chậm lại"
#: libretranslate/locales/.swag.py:42
msgid "Translated file url"
msgstr "Dịch file url"
msgstr "Dịch url tệp tin"
#: libretranslate/locales/.swag.py:43
msgid "Confidence value"
msgstr "Giá trị tự tin"
msgstr "Giá trị tin cậy"
#: libretranslate/locales/.swag.py:44
msgid "Character input limit for this language (-1 indicates no limit)"
msgstr "Nhân chứng đầu vào giới hạn ngôn ngữ này.."
msgstr "Giới hạn ký tự đầu vào cho ngôn ngữ này (-1 nghĩa là không giới hạn)"
#: libretranslate/locales/.swag.py:45
msgid "Frontend translation timeout"
msgstr "Thời gian dịch trước"
msgstr "Quá hạn đợi bản dịch"
#: libretranslate/locales/.swag.py:46
msgid "Whether the API key database is enabled."
msgstr "Cho dù cơ sở dữ liệu khóa API được kích hoạt."
msgstr "Cơ sở dữ liệu mã API có được bật không."
#: libretranslate/locales/.swag.py:47
msgid "Whether an API key is required."
msgstr "Cho dù là chìa khóa API cần thiết."
msgstr "Có bắt buộc mã API hay không."
#: libretranslate/locales/.swag.py:48
msgid "Whether submitting suggestions is enabled."
msgstr "Cho dù có gợi ý nào được kích hoạt."
msgstr "Có cho phép gửi đề xuất hay không."
#: libretranslate/locales/.swag.py:49
msgid "Supported files format"
msgstr "Tập tin được hỗ trợ"
msgstr "Các định dạng tệp tin được hỗ trợ"
#: libretranslate/locales/.swag.py:50
msgid "Whether submission was successful"
msgstr "Cho dù trình diễn thành công"
msgstr "Đã gửi thành công hay chưa"
#: libretranslate/templates/app.js.template:31
#: libretranslate/templates/app.js.template:286
#: libretranslate/templates/app.js.template:290
msgid "Copy text"
msgstr ""
msgstr "Copy chữ"
#: libretranslate/templates/app.js.template:80
#: libretranslate/templates/app.js.template:86
@ -461,50 +454,49 @@ msgstr "Rõ"
#: libretranslate/templates/app.js.template:343
#: libretranslate/templates/app.js.template:431
#: libretranslate/templates/app.js.template:479
#, fuzzy, python-format
#, python-format
msgid "Cannot load %(url)s"
msgstr "Không được %(url)s"
msgstr "Không thể tải %(url)s"
#: libretranslate/templates/app.js.template:264
#: libretranslate/templates/app.js.template:334
#: libretranslate/templates/app.js.template:412
#: libretranslate/templates/app.js.template:423
msgid "Unknown error"
msgstr "Lỗi chưa rõ"
msgstr "Lỗi không rõ"
#: libretranslate/templates/app.js.template:287
msgid "Copied"
msgstr "Cảnh sát"
msgstr "Đã copy"
#: libretranslate/templates/app.js.template:331
msgid ""
"Thanks for your correction. Note the suggestion will not take effect right "
"away."
msgstr "Cảm ơn đã sửa chữa. Chú ý đề nghị sẽ không hiệu quả ngay lập tức."
msgstr "Cảm ơn đã sửa. Lưu ý đề xuất sẽ không có tác dụng ngay lập tức."
#: libretranslate/templates/app.js.template:455
msgid "No languages available. Did you install the models correctly?"
msgstr "Không có ngôn ngữ nào cả. Anh đã cài đặt các người mẫu đúng không?"
msgstr "Không có ngôn ngữ nào. Bạn đã cài đặt các bản mẫu (model) đúng chưa?"
#: libretranslate/templates/app.js.template:522
#, fuzzy, python-format
#, python-format
msgid "Type in your API Key. If you need an API key, %(instructions)s"
msgstr ""
"Loại trong chìa khóa của anh. Nếu anh cần chìa khóa API, %(instructions)s"
msgstr "Nhập mã API của bạn. Nếu bạn cần lấy mã API, %(instructions)s"
#: libretranslate/templates/app.js.template:522
msgid "press the \"Get API Key\" link."
msgstr "nhấn liên kết \" Lấy khóa\" đi."
msgstr "nhấn liên kết \"Lấy khóa\"."
#: libretranslate/templates/app.js.template:522
msgid "contact the server operator."
msgstr "liên lạc với người điều hành máy chủ."
msgstr "liên hệ với người quản trị máy chủ."
#: libretranslate/templates/index.html:9
#: libretranslate/templates/index.html:27
#: libretranslate/templates/index.html:336
msgid "Free and Open Source Machine Translation API"
msgstr "Miễn phí và mở nguồn máy dịch"
msgstr "API dịch thuật máy miễn phí và mã nguồn mở"
#: libretranslate/templates/index.html:10
#: libretranslate/templates/index.html:31
@ -512,8 +504,8 @@ msgid ""
"Free and Open Source Machine Translation API. Self-hosted, offline capable "
"and easy to setup. Run your own API server in just a few minutes."
msgstr ""
"Miễn phí và mở nguồn máy dịch. Tự chủ, đột nhập có thể và dễ dàng thiết lập."
" Chạy máy chủ của mình trong vài phút."
"API dịch thuật máy miễn phí và nguồn mở. Tự host, có thể sử dụng offline và "
"dễ cài đặt. Tự chạy máy chủ API của bạn chỉ trong vài phút."
#: libretranslate/templates/index.html:11
msgid "translation"
@ -525,11 +517,11 @@ msgstr "api"
#: libretranslate/templates/index.html:65
msgid "API Docs"
msgstr "API Docs"
msgstr "Tài liệu API"
#: libretranslate/templates/index.html:67
msgid "Get API Key"
msgstr "Lấy API Chìa khóa"
msgstr "Lấy API"
#: libretranslate/templates/index.html:69
msgid "GitHub"
@ -537,7 +529,7 @@ msgstr "GitHub"
#: libretranslate/templates/index.html:71
msgid "Set API Key"
msgstr "Đặt API Chìa khóa"
msgstr "Đặt API"
#: libretranslate/templates/index.html:73
msgid "Change language"
@ -545,27 +537,27 @@ msgstr "Thay đổi ngôn ngữ"
#: libretranslate/templates/index.html:79
msgid "Edit"
msgstr "Edited"
msgstr "Sửa"
#: libretranslate/templates/index.html:81
msgid "Toggle dark/light mode"
msgstr "Chuyển sang chế độ ánh sáng"
msgstr "Chuyển chế độ sáng/tối"
#: libretranslate/templates/index.html:157
msgid "Dismiss"
msgstr "Giải tán"
msgstr "Bỏ"
#: libretranslate/templates/index.html:171
msgid "Translation API"
msgstr "Dịch"
msgstr "API dịch"
#: libretranslate/templates/index.html:175
msgid "Translate Text"
msgstr "Dịch"
msgstr "Chữ được dịch"
#: libretranslate/templates/index.html:179
msgid "Translate Files"
msgstr "Dịch Files"
msgstr "Dịch tệp tin"
#: libretranslate/templates/index.html:185
msgid "Translate from"
@ -573,23 +565,23 @@ msgstr "Dịch từ"
#: libretranslate/templates/index.html:195
msgid "Swap source and target languages"
msgstr "Nguồn tin và mục tiêu ngôn ngữ"
msgstr "Đổi ngôn ngữ nguồn và đích"
#: libretranslate/templates/index.html:198
msgid "Translate into"
msgstr "Dịch"
msgstr "Dịch sang"
#: libretranslate/templates/index.html:210
msgid "Text to translate"
msgstr "Tin nhắn để dịch"
msgstr "Chữ để dịch"
#: libretranslate/templates/index.html:213
msgid "Delete text"
msgstr "Xóa tin nhắn"
msgstr "Xóa chữ"
#: libretranslate/templates/index.html:226
msgid "Suggest translation"
msgstr "Lời khuyên"
msgstr "Đề xuất dịch"
#: libretranslate/templates/index.html:230
msgid "Cancel"
@ -601,15 +593,15 @@ msgstr "Gửi"
#: libretranslate/templates/index.html:249
msgid "Supported file formats:"
msgstr "Tập tin được hỗ trợ:"
msgstr "Các định dạng tệp tin được hỗ trợ:"
#: libretranslate/templates/index.html:253
msgid "File"
msgstr "Tài liệu"
msgstr "Tệp tin"
#: libretranslate/templates/index.html:268
msgid "Remove file"
msgstr "Lấy hồ sơ"
msgstr "Bỏ tệp tin"
#: libretranslate/templates/index.html:275
msgid "Translate"
@ -626,52 +618,52 @@ msgstr "Yêu cầu"
#: libretranslate/templates/index.html:300
msgid "Response"
msgstr "Phản ứng"
msgstr "Trả lời"
#: libretranslate/templates/index.html:315
msgid "Open Source Machine Translation API"
msgstr "Mở máy dịch"
msgstr "API Dịch Máy Mã Nguồn Mở"
#: libretranslate/templates/index.html:316
msgid "Self-Hosted. Offline Capable. Easy to Setup."
msgstr "Tự lưu trữ. Có khả năng ngoại tuyến. Bình tĩnh."
msgstr "Tự lưu trữ. Có thể dùng ngoại tuyến. Dễ cài đặt."
#: libretranslate/templates/index.html:335
msgid "LibreTranslate"
msgstr "Libretranslate"
msgstr "LibreTranslate"
#: libretranslate/templates/index.html:337
msgid "License:"
msgstr "Giấy phép:"
#: libretranslate/templates/index.html:340
#, fuzzy, python-format
#, python-format
msgid ""
"This public API should be used for testing, personal or infrequent use. If "
"you're going to run an application in production, please %(host_server)s or "
"%(get_api_key)s."
msgstr ""
"API công khai này nên được dùng để thử nghiệm, sử dụng cá nhân hay không "
"thường xuyên. Nếu anh định làm đơn xin sản xuất, làm ơn. %(host_server)s "
"Hoặc %(get_api_key)s."
"API công khai này chỉ nên dùng để thử nghiệm, sử dụng cá nhân hay không "
"thường xuyên. Nếu bạn muốn sử dụng cho mục đích khác, hãy %(host_server)s "
"hoặc %(get_api_key)s."
#: libretranslate/templates/index.html:340
msgid "host your own server"
msgstr "chủ máy chủ của anh"
msgstr "tự lưu máy chủ của chính bạn"
#: libretranslate/templates/index.html:340
msgid "get an API key"
msgstr "lấy chìa khóa API"
msgstr "lấy API"
#: libretranslate/templates/index.html:348
#, fuzzy, python-format
#, python-format
msgid "Made with %(heart)s by %(contributors)s and powered by %(engine)s"
msgstr "Làm với %(heart)s ♪ %(contributors)s và được cung cấp bởi %(engine)s"
msgstr "Tạo ra với %(heart)s bởi %(contributors)s và chạy bằng %(engine)s"
#: libretranslate/templates/index.html:348
#, fuzzy, python-format
#, python-format
msgid "%(libretranslate)s Contributors"
msgstr "%(libretranslate)s Cộng sản"
msgstr "Các cộng tác viên %(libretranslate)s"
#~ msgid "multipart/form-data"
#~ msgstr "đa phần dữ liệu"

View file

@ -9,19 +9,21 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-10-09 15:17-0400\n"
"PO-Revision-Date: 2023-02-02 18:50+0000\n"
"Last-Translator: Poesty Li <poesty7450@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/libretranslate/app/zh_Hans/>\n"
"PO-Revision-Date: 2024-01-30 16:01+0000\n"
"Last-Translator: Yanjun Chen <coned@outlook.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"libretranslate/app/zh_Hans/>\n"
"Language: zh\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.4-dev\n"
"Generated-By: Babel 2.12.1\n"
#: libretranslate/app.py:79
msgid "Invalid JSON format"
msgstr "无效的JSON格式"
msgstr "无效的 JSON 格式"
#: libretranslate/app.py:149 libretranslate/templates/app.js.template:459
msgid "Auto Detect"
@ -37,16 +39,16 @@ msgstr "请求次数过多超过限制"
#: libretranslate/app.py:257
msgid "Invalid API key"
msgstr "无效的API密钥"
msgstr "无效的 API 密钥"
#: libretranslate/app.py:276
msgid "Please contact the server operator to get an API key"
msgstr "请联系服务器管理员以获取API密钥"
msgstr "请联系服务器管理员以获取 API 密钥"
#: libretranslate/app.py:278
#, python-format
msgid "Visit %(url)s to get an API key"
msgstr "访问 %(url)s 以获取API密钥"
msgstr "访问 %(url)s 以获取 API 密钥"
#: libretranslate/app.py:318
msgid "Slowdown:"

View file

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: LibreTranslate 1.3.9\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2023-01-06 17:52-0500\n"
"PO-Revision-Date: 2023-05-18 17:53+0000\n"
"PO-Revision-Date: 2024-04-23 20:07+0000\n"
"Last-Translator: Peter Dave Hello <hsu@peterdavehello.org>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"libretranslate/app/zh_Hant/>\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.18-dev\n"
"X-Generator: Weblate 5.5-dev\n"
"Generated-By: Babel 2.11.0\n"
#: libretranslate/app.py:60

View file

@ -35,6 +35,20 @@ def get_args():
metavar="<Storage URI>",
help="Storage URI to use for request limit data storage. See https://flask-limiter.readthedocs.io/en/stable/configuration.html. (%(default)s)",
)
parser.add_argument(
"--hourly-req-limit",
default=DEFARGS['HOURLY_REQ_LIMIT'],
type=int,
metavar="<number>",
help="Set the default maximum number of requests per hour per client, in addition to req-limit. (%(default)s)",
)
parser.add_argument(
"--hourly-req-limit-decay",
default=DEFARGS['HOURLY_REQ_LIMIT_DECAY'],
type=int,
metavar="<number>",
help="When used in combination with hourly-req-limit, adds additional hourly restrictions that logaritmically decrease for each additional hour. (%(default)s)",
)
parser.add_argument(
"--daily-req-limit",
default=DEFARGS['DAILY_REQ_LIMIT'],
@ -49,6 +63,13 @@ def get_args():
metavar="<number>",
help="Set the maximum number of request limit offences that a client can exceed before being banned. (%(default)s)",
)
parser.add_argument(
"--req-time-cost",
default=DEFARGS['REQ_TIME_COST'],
type=int,
metavar="<number>",
help="Considers a time cost (in seconds) for request limiting purposes. If a request takes 10 seconds and this value is set to 5, the request cost is either 2 or the actual request cost (whichever is greater). (%(default)s)",
)
parser.add_argument(
"--batch-limit",
default=DEFARGS['BATCH_LIMIT'],
@ -194,6 +215,10 @@ def main():
if '--wsgi' in sys.argv:
return app
else:
if args.debug and args.host == "*":
# '::' will listen on both ipv6 and ipv4
args.host = "::"
if args.debug:
app.run(host=args.host, port=args.port)
else:

View file

@ -29,6 +29,9 @@ def manage():
keys_add_parser.add_argument(
"--key", type=str, default="auto", required=False, help="API Key"
)
keys_add_parser.add_argument(
"--char-limit", type=int, default=0, required=False, help="Character limit"
)
keys_remove_parser = keys_subparser.add_parser(
"remove", help="Remove API keys to database"
@ -52,7 +55,7 @@ def manage():
print("{}: {}".format(*item))
elif args.sub_command == "add":
print(db.add(args.req_limit, args.key)[0])
print(db.add(args.req_limit, args.key, args.char_limit)[0])
elif args.sub_command == "remove":
print(db.remove(args.key))
else:

View file

@ -118,17 +118,10 @@ h3.header {
display: none;
}
#nav:hover .change-language:hover + .locale-panel,
#nav-mobile:hover .change-language:hover + .locale-panel,
.change-language.clicked + .locale-panel{
display: block;
}
#nav:hover .locale-panel:hover,
#nav-mobile .locale-panel:hover{
display: block;
}
.locale-panel select {
display: block;
height: 32px;

View file

@ -49,6 +49,8 @@
<link rel="stylesheet" href="{{ url_for('static', filename='css/material-icons.css') }}" />
<link rel="stylesheet" href="{{ url_for('static', filename='css/prism.min.css') }}" />
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}?v={{ version }}" />
<meta name="color-scheme" content="light dark">
</head>
<body>
@ -335,11 +337,6 @@
<h5 class="white-text">{{ _h("LibreTranslate") }}</h5>
<p class="grey-text text-lighten-4">{{ _h("Free and Open Source Machine Translation API") }}</p>
<p>{{ _h("License:") }} <a class="grey-text text-lighten-4" href="https://www.gnu.org/licenses/agpl-3.0.en.html" rel="noopener noreferrer">AGPLv3</a></p>
{% if web_version %}
<p>
{{ _h("This public API should be used for testing, personal or infrequent use. If you're going to run an application in production, please %(host_server)s or %(get_api_key)s.", host_server='<a href="https://github.com/LibreTranslate/LibreTranslate" class="grey-text text-lighten-4" rel="noopener noreferrer">' + _h("host your own server") + '</a>', get_api_key='<a class="grey-text text-lighten-4" href="' + (get_api_key_link if get_api_key_link else "https://github.com/LibreTranslate/LibreTranslate#mirrors") + '" rel="noopener noreferrer">' + _h("get an API key") + '</a>') }}
</p>
{% endif %}
</div>
</div>
</div>

View file

@ -33,8 +33,8 @@ classifiers = [
dynamic = ["version"]
dependencies = [
"argostranslate ==1.9.1",
"Flask ==2.2.2",
"argostranslate ==1.9.6",
"Flask ==2.2.5",
"flask-swagger ==0.2.14",
"flask-swagger-ui ==4.11.1",
"Flask-Limiter ==2.6.3",
@ -42,19 +42,21 @@ dependencies = [
"Flask-Session ==0.4.0",
"waitress ==2.1.2",
"expiringdict ==1.2.2",
" LTpycld2==0.42",
"langdetect==1.0.9",
"lexilang==1.0.1",
"morfessor ==2.0.6",
"appdirs ==1.4.4",
"APScheduler ==3.9.1",
"translatehtml ==1.5.2",
"argos-translate-files ==1.1.4",
"itsdangerous ==2.1.2",
"Werkzeug ==2.2.2",
"requests ==2.28.1",
"redis ==4.3.4",
"Werkzeug ==2.3.8",
"requests ==2.31.0",
"redis ==4.4.4",
"prometheus-client ==0.15.0",
"polib ==1.1.1",
"packaging ==23.1"
"packaging ==23.1",
"torch ==2.0.1"
]
[project.scripts]
@ -68,6 +70,7 @@ test = [
"pytest-cov",
"pre-commit >=3.0.0",
"types-requests",
"pip-audit"
]
@ -78,6 +81,8 @@ Documentation = "https://github.com/LibreTranslate/LibreTranslate"
Tracker = "https://github.com/LibreTranslate/LibreTranslate/issues"
History = "https://github.com/LibreTranslate/LibreTranslate/releases"
[tool.hatch.build]
artifacts = ["*.mo"]
# ENVIRONMENTS AND SCRIPTS
[tool.hatch.envs.default]

View file

@ -1,7 +1,7 @@
import requests
response = requests.post(
url='http://0.0.0.0:5000/translate',
url='http://localhost:5000/translate',
headers={'Content-Type': 'application/json'},
json={
'q': 'Hello World!',