Synced
This commit is contained in:
parent
7979077941
commit
149ba9a6a6
5 changed files with 197 additions and 50 deletions
|
|
@ -134,3 +134,7 @@ This prevents pip packages from being installed system-wide. This way, there are
|
|||
|
||||
References:
|
||||
* [Python venv documentation](https://docs.python.org/library/venv.html)
|
||||
|
||||
## Other Languages
|
||||
|
||||
- [Español (CONTRIBUTING)](docs/CONTRIBUTING.es.md)
|
||||
138
docs/CONTRIBUTING.es.md
Normal file
138
docs/CONTRIBUTING.es.md
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
# Contribuyendo
|
||||
|
||||
Si desea modificar el código, puede compilar desde el código fuente y ejecutar la API.
|
||||
|
||||
## Dependencias de compilación
|
||||
|
||||
* cmake
|
||||
|
||||
### Debian / Ubuntu
|
||||
|
||||
```sh
|
||||
sudo apt-get install cmake
|
||||
```
|
||||
|
||||
### Fedora / RHEL
|
||||
|
||||
```sh
|
||||
sudo dnf install cmake
|
||||
```
|
||||
|
||||
## Primeros pasos
|
||||
|
||||
Instale [`hatch`](https://hatch.pypa.io) para administrar las dependencias del proyecto y ejecutar scripts de desarrollo:
|
||||
|
||||
```bash
|
||||
pipx install hatch
|
||||
```
|
||||
|
||||
Clonar el repositorio:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/LibreTranslate/LibreTranslate.git
|
||||
cd LibreTranslate
|
||||
```
|
||||
|
||||
Hatch instalará automáticamente las dependencias necesarias en un entorno virtual y habilitará [`pre-commit`](https://pre-commit.com/), que se ejecutará antes de cada confirmación para ejecutar el formateo. Si es necesario, puedes ignorar las comprobaciones de `pre-commit` al confirmar: `git commit --no-verify -m "Fix"`
|
||||
|
||||
Ejecutar en desarrollo:
|
||||
|
||||
```bash
|
||||
hatch run dev --debug
|
||||
```
|
||||
|
||||
Luego, abre un navegador web en <http://localhost:5000>
|
||||
|
||||
También puedes iniciar una nueva shell en un entorno virtual con libretranslate instalado:
|
||||
|
||||
```bash
|
||||
hatch shell
|
||||
libretranslate [args]
|
||||
# O
|
||||
python main.py [args]
|
||||
```
|
||||
|
||||
> Puedes usar `pip install -e ".[test]"` directamente si no quieres usar Hatch.
|
||||
|
||||
## Ejecutar las pruebas
|
||||
|
||||
Ejecutar el conjunto de pruebas y las comprobaciones de linting:
|
||||
|
||||
```bash
|
||||
hatch run test
|
||||
```
|
||||
|
||||
Para mostrar todos los `print()` durante la depuración:
|
||||
|
||||
```bash
|
||||
hatch run test -s
|
||||
```
|
||||
|
||||
También puedes ejecutar las pruebas en varias versiones de Python:
|
||||
|
||||
```bash
|
||||
hatch run all:test
|
||||
```
|
||||
|
||||
Puedes limpiar el entorno virtual con:
|
||||
|
||||
```bash
|
||||
hatch env prune
|
||||
```
|
||||
|
||||
## Ejecutar con Docker
|
||||
|
||||
Linux/MacOS: `./run.sh [args]`
|
||||
Windows: `run.bat [args]`
|
||||
|
||||
Luego, abre un navegador web en <http://localhost:5000>
|
||||
|
||||
## Construir con Docker
|
||||
|
||||
```bash
|
||||
docker build -f docker/Dockerfile [--build-arg with_models=true] -t libretranslate .
|
||||
```
|
||||
|
||||
Si quieres ejecutar la imagen de Docker en un entorno completamente sin conexión, debes agregar el parámetro `--build-arg with_models=true`. Los modelos de lenguaje se descargan durante el proceso de construcción de la imagen. De lo contrario, estos modelos se descargan durante la primera ejecución de la imagen/contenedor.
|
||||
|
||||
Ejecute la imagen compilada:
|
||||
|
||||
```bash
|
||||
docker run -it -p 5000:5000 libretranslate [args]
|
||||
```
|
||||
|
||||
O compila y ejecuta con Docker Compose:
|
||||
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
> Puedes modificar el archivo [`docker-compose.yml`](https://github.com/LibreTranslate/LibreTranslate/blob/main/docker-compose.yml) para adaptarlo a tus necesidades de implementación o usar un archivo `docker-compose.prod.yml` adicional para la configuración de tu implementación.
|
||||
>
|
||||
> Los modelos se almacenan dentro del contenedor en `/home/libretranslate/.local/share` y `/home/libretranslate/.local/cache`. Puedes usar volúmenes si no quieres volver a descargar los modelos cuando se destruya el contenedor. Para actualizar los modelos, usa el argumento `--update-models`.
|
||||
|
||||
## Preguntas frecuentes
|
||||
|
||||
### Entorno administrado externamente
|
||||
|
||||
Algunos usuarios pueden encontrar el siguiente error al instalar paquetes:
|
||||
|
||||
```
|
||||
error: externally-managed-environment
|
||||
|
||||
× Este entorno está administrado externamente
|
||||
╰─> Para instalar paquetes de Python en todo el sistema, pruebe apt install python3-xyz, donde xyz es el paquete que intenta instalar.
|
||||
|
||||
…
|
||||
```
|
||||
|
||||
Esto ocurre cuando su sistema operativo depende de Python y lo administra para su funcionalidad principal. En este caso, debe instalar y configurar venv (entornos virtuales) para administrar las dependencias del proyecto.
|
||||
|
||||
Esto evita que los paquetes pip se instalen en todo el sistema. De esta manera, se evita el riesgo de que los paquetes pip entren en conflicto entre varios proyectos o el sistema operativo.
|
||||
|
||||
Referencias:
|
||||
* [Documentación de venv sobre Python](https://docs.python.org/library/venv.html)
|
||||
|
||||
## Otros idiomas
|
||||
|
||||
- [English (CONTRIBUTING)](/CONTRIBUTING.md)
|
||||
|
|
@ -10,10 +10,6 @@ API de traducción automática gratuita y de código abierto, completamente aloj
|
|||
|
||||
[Pruébalo en línea!](https://libretranslate.com) | [Documentación de la API](https://libretranslate.com/docs)
|
||||
|
||||
## Otros idiomas
|
||||
|
||||
- [English (README)](/README.md)
|
||||
|
||||
## Ejemplos de la API
|
||||
|
||||
### Básico
|
||||
|
|
@ -742,3 +738,7 @@ Este trabajo es posible en gran medida gracias a [Argos Translate](https://githu
|
|||
## Marca registrada
|
||||
|
||||
Consulte las [Directrices de marca registrada](https://github.com/LibreTranslate/LibreTranslate/blob/main/docs/TRADEMARK.es.md)
|
||||
|
||||
## Otros idiomas
|
||||
|
||||
- [English (README)](/README.md)
|
||||
|
|
@ -9,16 +9,18 @@ msgstr ""
|
|||
"Project-Id-Version: LibreTranslate 1.3.9\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2025-04-18 14:43-0400\n"
|
||||
"PO-Revision-Date: 2025-02-04 19:02+0000\n"
|
||||
"Last-Translator: Blueberry <igory.ygr200@gmail.com>\n"
|
||||
"PO-Revision-Date: 2025-05-08 05:34+0000\n"
|
||||
"Last-Translator: 439JBYL80IGQTF25UXNR0X1BG "
|
||||
"<439JBYL80IGQTF25UXNR0X1BG@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Russian <https://hosted.weblate.org/projects/libretranslate/"
|
||||
"app/ru/>\n"
|
||||
"Language: ru\n"
|
||||
"Language-Team: Russian "
|
||||
"<https://hosted.weblate.org/projects/libretranslate/app/ru/>\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"
|
||||
"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.12-dev\n"
|
||||
"Generated-By: Babel 2.12.1\n"
|
||||
|
||||
#: libretranslate/app.py:93
|
||||
|
|
@ -261,7 +263,7 @@ msgstr "португальский"
|
|||
|
||||
#: libretranslate/locales/.langs.py:34
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr ""
|
||||
msgstr "португальский (бразильский)"
|
||||
|
||||
#: libretranslate/locales/.langs.py:35
|
||||
msgid "Romanian"
|
||||
|
|
@ -643,6 +645,8 @@ msgid ""
|
|||
"Due to bot abuse, translation requests are temporarily limited to users "
|
||||
"with a valid API key. Sorry for the inconvenience!"
|
||||
msgstr ""
|
||||
"Из-за злоупотреблений ботов, запросы переводов временно ограничены для "
|
||||
"пользователей с действительным API ключом. Извините за неудобства!"
|
||||
|
||||
#: libretranslate/templates/index.html:182
|
||||
msgid "Translation API"
|
||||
|
|
@ -775,4 +779,3 @@ msgstr "участникам, внёсшим вклад в разработку
|
|||
|
||||
#~ msgid "Galician"
|
||||
#~ msgstr "галисийский"
|
||||
|
||||
|
|
|
|||
|
|
@ -9,8 +9,9 @@ msgstr ""
|
|||
"Project-Id-Version: LibreTranslate 1.3.9\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2025-04-18 14:43-0400\n"
|
||||
"PO-Revision-Date: 2025-04-26 21:09+0000\n"
|
||||
"Last-Translator: Bezruchenko Simon <worcposj44@gmail.com>\n"
|
||||
"PO-Revision-Date: 2025-05-07 15:01+0000\n"
|
||||
"Last-Translator: Do you know my name? "
|
||||
"<anonymous2676@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/libretranslate/"
|
||||
"app/uk/>\n"
|
||||
"Language: uk\n"
|
||||
|
|
@ -24,7 +25,7 @@ msgstr ""
|
|||
|
||||
#: libretranslate/app.py:93
|
||||
msgid "Invalid JSON format"
|
||||
msgstr "Неправильний формат JSON"
|
||||
msgstr "Недійсний формат JSON"
|
||||
|
||||
#: libretranslate/app.py:209 libretranslate/templates/app.js.template:473
|
||||
msgid "Auto Detect"
|
||||
|
|
@ -36,20 +37,20 @@ msgstr "Неавторизовано"
|
|||
|
||||
#: libretranslate/app.py:329
|
||||
msgid "Too many request limits violations"
|
||||
msgstr "Перевищено ліміт запитів"
|
||||
msgstr "Перевищено обмеження запитів"
|
||||
|
||||
#: libretranslate/app.py:336
|
||||
msgid "Invalid API key"
|
||||
msgstr "Неправильний API ключ"
|
||||
msgstr "Недійсний ключ API"
|
||||
|
||||
#: libretranslate/app.py:371
|
||||
msgid "Please contact the server operator to get an API key"
|
||||
msgstr "Зв'яжіться із оператором сервера, щоб отримати API ключ"
|
||||
msgstr "Зв'яжіться з оператором сервера, щоб отримати ключ API"
|
||||
|
||||
#: libretranslate/app.py:373
|
||||
#, python-format
|
||||
msgid "Visit %(url)s to get an API key"
|
||||
msgstr "Відвідайте %(url)s, щоб отримати API ключ"
|
||||
msgstr "Відвідайте %(url)s, щоб отримати ключ API"
|
||||
|
||||
#: libretranslate/app.py:420
|
||||
msgid "Slowdown:"
|
||||
|
|
@ -63,22 +64,23 @@ msgstr "Сповільнення:"
|
|||
#: libretranslate/app.py:1214
|
||||
#, python-format
|
||||
msgid "Invalid request: missing %(name)s parameter"
|
||||
msgstr "Неправильний запит: відсутній параметр %(name)s"
|
||||
msgstr "Недійсний запит: бракує параметра %(name)s"
|
||||
|
||||
#: libretranslate/app.py:666
|
||||
#, python-format
|
||||
msgid "Invalid request: %(name)s parameter is not a number"
|
||||
msgstr "Неправильний запит: параметр %(name)s не є числом"
|
||||
msgstr "Недійсний запит: параметр %(name)s не є числом"
|
||||
|
||||
#: libretranslate/app.py:669
|
||||
#, python-format
|
||||
msgid "Invalid request: %(name)s parameter must be <= %(value)s"
|
||||
msgstr "Неправильний запит: параметр %(name)s має бути <= %(value)s"
|
||||
msgstr "Недійсний запит: параметр %(name)s має бути <= %(value)s"
|
||||
|
||||
#: libretranslate/app.py:686 libretranslate/app.py:696
|
||||
#, 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:715 libretranslate/app.py:720
|
||||
#: libretranslate/app.py:897 libretranslate/app.py:902
|
||||
|
|
@ -112,15 +114,15 @@ msgstr "Переклад файлів на цьому сервері вимкн
|
|||
|
||||
#: libretranslate/app.py:889
|
||||
msgid "Invalid request: empty file"
|
||||
msgstr "Неправильний запит: порожній файл"
|
||||
msgstr "Недійсний запит: порожній файл"
|
||||
|
||||
#: libretranslate/app.py:892
|
||||
msgid "Invalid request: file format not supported"
|
||||
msgstr "Неправильний запит: формат файлу не підтримується"
|
||||
msgstr "Недійсний запит: формат файлу не підтримується"
|
||||
|
||||
#: libretranslate/app.py:951
|
||||
msgid "Invalid filename"
|
||||
msgstr "Неправильна назва файлу"
|
||||
msgstr "Недійсна назва файлу"
|
||||
|
||||
#: libretranslate/app.py:1193
|
||||
msgid "Suggestions are disabled on this server."
|
||||
|
|
@ -332,7 +334,7 @@ msgstr "переклад"
|
|||
|
||||
#: libretranslate/locales/.swag.py:4
|
||||
msgid "Translate text from a language to another"
|
||||
msgstr "Перекласти текст з однієї мови на іншу"
|
||||
msgstr "Перекласти текст із однієї мови на іншу"
|
||||
|
||||
#: libretranslate/locales/.swag.py:5 libretranslate/templates/index.html:233
|
||||
msgid "Translated text"
|
||||
|
|
@ -340,7 +342,7 @@ msgstr "Перекладений текст"
|
|||
|
||||
#: libretranslate/locales/.swag.py:6
|
||||
msgid "Invalid request"
|
||||
msgstr "Неправильний запит"
|
||||
msgstr "Недійсний запит"
|
||||
|
||||
#: libretranslate/locales/.swag.py:7
|
||||
msgid "Translation error"
|
||||
|
|
@ -360,7 +362,7 @@ msgstr "Привіт, світе!"
|
|||
|
||||
#: libretranslate/locales/.swag.py:11
|
||||
msgid "Text(s) to translate"
|
||||
msgstr "Текст(и) для перекладу"
|
||||
msgstr "Текст для перекладу"
|
||||
|
||||
#: libretranslate/locales/.swag.py:12
|
||||
msgid "Source language code"
|
||||
|
|
@ -384,7 +386,7 @@ msgid ""
|
|||
" * `text` - Plain text\n"
|
||||
" * `html` - HTML markup\n"
|
||||
msgstr ""
|
||||
"Формат вихідного тексту:\n"
|
||||
"Формат оригінального тексту:\n"
|
||||
" * `text` - Звичайний текст\n"
|
||||
" * `html` - HTML розмітка\n"
|
||||
|
||||
|
|
@ -394,11 +396,11 @@ msgstr "Бажана кількість альтернативних перек
|
|||
|
||||
#: libretranslate/locales/.swag.py:18
|
||||
msgid "API key"
|
||||
msgstr "API ключ"
|
||||
msgstr "Ключ API"
|
||||
|
||||
#: libretranslate/locales/.swag.py:19
|
||||
msgid "Translate file from a language to another"
|
||||
msgstr "Перекласти файл з однієї мови на іншу"
|
||||
msgstr "Перекласти файл із однієї мови на іншу"
|
||||
|
||||
#: libretranslate/locales/.swag.py:20
|
||||
msgid "Translated file"
|
||||
|
|
@ -482,7 +484,7 @@ msgstr "Підтримувані коди мов перекладу"
|
|||
|
||||
#: libretranslate/locales/.swag.py:40
|
||||
msgid "Translated text(s)"
|
||||
msgstr "Перекладений(і) текст(и)"
|
||||
msgstr "Перекладений текст"
|
||||
|
||||
#: libretranslate/locales/.swag.py:41
|
||||
msgid "Error message"
|
||||
|
|
@ -512,15 +514,15 @@ msgstr "Перевищено час очікування перекладу ін
|
|||
|
||||
#: libretranslate/locales/.swag.py:47
|
||||
msgid "Whether the API key database is enabled."
|
||||
msgstr "Чи увімкнено базу даних API ключів."
|
||||
msgstr "Чи ввімкнено базу даних ключів API."
|
||||
|
||||
#: libretranslate/locales/.swag.py:48
|
||||
msgid "Whether an API key is required."
|
||||
msgstr "Чи потрібен API ключ."
|
||||
msgstr "Чи потрібен ключ API."
|
||||
|
||||
#: libretranslate/locales/.swag.py:49
|
||||
msgid "Whether submitting suggestions is enabled."
|
||||
msgstr "Чи увімкнено подання пропозицій."
|
||||
msgstr "Чи ввімкнено подання пропозицій."
|
||||
|
||||
#: libretranslate/locales/.swag.py:50
|
||||
msgid "Supported files format"
|
||||
|
|
@ -573,11 +575,11 @@ msgstr "Немає доступних мов. Чи правильно ви вс
|
|||
#: libretranslate/templates/app.js.template:536
|
||||
#, python-format
|
||||
msgid "Type in your API Key. If you need an API key, %(instructions)s"
|
||||
msgstr "Введіть свій API ключ. Якщо вам потрібен API ключ, %(instructions)s"
|
||||
msgstr "Уведіть свій ключ API. Якщо вам потрібен ключ API, %(instructions)s"
|
||||
|
||||
#: libretranslate/templates/app.js.template:536
|
||||
msgid "press the \"Get API Key\" link."
|
||||
msgstr "натисніть на посилання \"Отримати API ключ\"."
|
||||
msgstr "натисніть на покликання «Отримати ключ API»."
|
||||
|
||||
#: libretranslate/templates/app.js.template:536
|
||||
msgid "contact the server operator."
|
||||
|
|
@ -586,7 +588,7 @@ msgstr "зв'язатися з оператором сервера."
|
|||
#: libretranslate/templates/index.html:9 libretranslate/templates/index.html:27
|
||||
#: libretranslate/templates/index.html:347
|
||||
msgid "Free and Open Source Machine Translation API"
|
||||
msgstr "Безплатний API машинного перекладу з відкритим сирцевим кодом"
|
||||
msgstr "Вільний API машинного перекладу з відкритим сирцевим кодом"
|
||||
|
||||
#: libretranslate/templates/index.html:10
|
||||
#: libretranslate/templates/index.html:31
|
||||
|
|
@ -594,9 +596,9 @@ msgid ""
|
|||
"Free and Open Source Machine Translation API. Free to download, 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"
|
||||
|
|
@ -612,7 +614,7 @@ msgstr "Документація до API"
|
|||
|
||||
#: libretranslate/templates/index.html:69
|
||||
msgid "Get API Key"
|
||||
msgstr "Отримати API ключ"
|
||||
msgstr "Отримати ключ API"
|
||||
|
||||
#: libretranslate/templates/index.html:71
|
||||
msgid "GitHub"
|
||||
|
|
@ -620,7 +622,7 @@ msgstr "GitHub"
|
|||
|
||||
#: libretranslate/templates/index.html:73
|
||||
msgid "Set API Key"
|
||||
msgstr "Встановити API ключ"
|
||||
msgstr "Установити ключ API"
|
||||
|
||||
#: libretranslate/templates/index.html:75
|
||||
msgid "Change language"
|
||||
|
|
@ -643,8 +645,8 @@ msgid ""
|
|||
"Due to bot abuse, translation requests are temporarily limited to users "
|
||||
"with a valid API key. Sorry for the inconvenience!"
|
||||
msgstr ""
|
||||
"Через зловживання ботом запити на переклад тимчасово обмежені для "
|
||||
"користувачів із чинним API-ключем. Вибачте за незручності!"
|
||||
"Через зловживання ботами, запити на переклад тимчасово обмежено для "
|
||||
"користувачів із дійсним ключем API. Вибачте за незручності!"
|
||||
|
||||
#: libretranslate/templates/index.html:182
|
||||
msgid "Translation API"
|
||||
|
|
@ -700,7 +702,7 @@ msgstr "Файл"
|
|||
|
||||
#: libretranslate/templates/index.html:279
|
||||
msgid "Remove file"
|
||||
msgstr "Видалити файл"
|
||||
msgstr "Вилучити файл"
|
||||
|
||||
#: libretranslate/templates/index.html:286
|
||||
msgid "Translate"
|
||||
|
|
@ -726,8 +728,8 @@ msgstr "API машинного перекладу з відкритим сирц
|
|||
#: libretranslate/templates/index.html:327
|
||||
msgid "Free to download. Offline Capable. Easy to Setup."
|
||||
msgstr ""
|
||||
"Безплвтне завантаження. Можливість роботи в офлайн режимі. Простота "
|
||||
"налаштування."
|
||||
"Безплатний для завантаження. З можливість роботи офлайн. Простотий у "
|
||||
"налаштуванні."
|
||||
|
||||
#: libretranslate/templates/index.html:346
|
||||
msgid "LibreTranslate"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue