This commit is contained in:
vdbhb59 2025-05-08 20:06:26 +05:30
commit 149ba9a6a6
5 changed files with 197 additions and 50 deletions

View file

@ -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
View 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)

View file

@ -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)

View file

@ -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 "галисийский"

View file

@ -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"