diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4bd0221..ee4ded6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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) \ No newline at end of file diff --git a/docs/CONTRIBUTING.es.md b/docs/CONTRIBUTING.es.md new file mode 100644 index 0000000..6cdda07 --- /dev/null +++ b/docs/CONTRIBUTING.es.md @@ -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 + +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 + +## 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) \ No newline at end of file diff --git a/docs/README.es.md b/docs/README.es.md index 6f1d7e2..ebf6d19 100644 --- a/docs/README.es.md +++ b/docs/README.es.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 @@ -741,4 +737,8 @@ 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) \ No newline at end of file +Consulte las [Directrices de marca registrada](https://github.com/LibreTranslate/LibreTranslate/blob/main/docs/TRADEMARK.es.md) + +## Otros idiomas + +- [English (README)](/README.md) \ No newline at end of file diff --git a/libretranslate/locales/ru/LC_MESSAGES/messages.po b/libretranslate/locales/ru/LC_MESSAGES/messages.po index 1cff880..3c21316 100644 --- a/libretranslate/locales/ru/LC_MESSAGES/messages.po +++ b/libretranslate/locales/ru/LC_MESSAGES/messages.po @@ -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 \n" +"PO-Revision-Date: 2025-05-08 05:34+0000\n" +"Last-Translator: 439JBYL80IGQTF25UXNR0X1BG " +"<439JBYL80IGQTF25UXNR0X1BG@users.noreply.hosted.weblate.org>\n" +"Language-Team: Russian \n" "Language: ru\n" -"Language-Team: Russian " -"\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 "галисийский" - diff --git a/libretranslate/locales/uk/LC_MESSAGES/messages.po b/libretranslate/locales/uk/LC_MESSAGES/messages.po index 03d8996..3849613 100644 --- a/libretranslate/locales/uk/LC_MESSAGES/messages.po +++ b/libretranslate/locales/uk/LC_MESSAGES/messages.po @@ -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 \n" +"PO-Revision-Date: 2025-05-07 15:01+0000\n" +"Last-Translator: Do you know my name? " +"\n" "Language-Team: Ukrainian \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"