Клиент Weblate¶
Установка¶
Клиент Weblate поставляется отдельно и включает модуль Python. Для использования команд ниже вам необходимо установить wlc с помощью pip:
pip install wlc
Вы также можете выполнить его напрямую с помощью uvx:
uvx wlc --help
Подсказка
Вы также можете использовать этот wlc как модуль Python, см. wlc.
Использование Docker¶
Клиент Weblate также доступен в виде образа Docker.
Этот образ публикуется на Docker Hub: https://hub.docker.com/r/weblate/wlc
Установка:
docker pull weblate/wlc
Контейнер Docker использует настройки по умолчанию Клиента Weblate и подключается к API, развёрнутому на localhost. Настройте URL-адрес API и ключ API с помощью обычных аргументов wlc или переменных окружения, например --url, --key, WLC_URL и WLC_KEY. Ключи API по умолчанию отклоняются для нелокальных URL-адресов http://; используйте HTTPS, loopback HTTP для локальной разработки или явно разрешите небезопасный HTTP.
У команды запуска контейнера следующий синтаксис:
docker run --rm weblate/wlc [WLC_ARGS]
Пример:
docker run --rm weblate/wlc --url https://hosted.weblate.org/api/ list-projects
Возможно, вы захотите передать ваш Файлы настроек в контейнер Docker. Если ваш репозиторий содержит конфигурацию проекта, например .weblate, самый простой подход — добавить вашу текущую директорию как том /home/weblate:
docker run --volume $PWD:/home/weblate --rm weblate/wlc show
Когда смонтированный репозиторий предоставляет URL-адрес API в конфигурации проекта, а вы передаёте контейнеру ключ API без области действия, также явно укажите URL-адрес: WLC_KEY требует WLC_URL, а --key требует --url.
Если настроенный URL-адрес API использует нелокальный http:// и предоставлен ключ API, контейнер отказывается отправлять ключ, если только небезопасный HTTP явно не включён. Предпочитайте HTTPS; для устаревших развёртываний передайте --allow-insecure-http или установите WLC_ALLOW_INSECURE_HTTP.
Начало работы¶
Самый простой способ начать — создать персональную конфигурацию wlc в ~/.config/weblate (полные правила обнаружения и другие расположения см. в Файлы настроек):
[weblate]
url = https://hosted.weblate.org/api/
[keys]
https://hosted.weblate.org/api/ = APIKEY
После этого вы сможете вызывать команды на умолчательном сервере:
wlc ls
wlc commit sandbox/hello-world
См. также
Устаревшая конфигурация¶
Изменено в версии 1.17: Устаревшая конфигурация с использованием key без области действия больше не поддерживается.
Миграция устаревшей конфигурации:
[weblate]
url = https://hosted.weblate.org/api/
key = YOUR_KEY_HERE
В конфигурацию с ключом, ограниченным URL-адресом API:
[weblate]
url = https://hosted.weblate.org/api/
[keys]
https://hosted.weblate.org/api/ = YOUR_KEY_HERE
Обзор¶
wlc [arguments] <command> [options]
Команды фактически указывают, какая операция должна быть выполнена.
Описание¶
Клиент Weblate — это библиотека Python и инструмент командной строки для удалённого управления Weblate с помощью его API REST для Weblate. Инструмент командной строки может быть вызван как wlc и встроен в wlc.
Аргументы¶
Программа принимает следующие аргументы, определяющие формат вывода или то, какой надо использовать экземпляр Weblate’а. Они должны быть введены до какой-либо команды.
- --format {csv,json,text,html}¶
Определяет формат вывода.
- --url URL¶
Задаёт URL-адрес API. Переопределяет любое значение, найденное в файле настроек, смотрите раздел Файлы настроек. URL-адрес должен заканчиваться на
/api/, например,https://hosted.weblate.org/api/.
- --key KEY¶
Укажите ключ пользователя API для использования. Переопределяет любое значение, найденное в файле конфигурации, см. Файлы настроек. Вы можете найти свой ключ в своём профиле на Weblate. Когда URL-адрес API загружается из автоматически обнаруженной конфигурации проекта,
--keyдолжен использоваться вместе с--url. Ключи API по умолчанию отклоняются для нелокальных URL-адресовhttp://.
- --allow-insecure-http¶
Разрешить отправку ключей API через нелокальные URL-адреса
http://. Предпочитайте HTTPS или loopback HTTP; эта опция предназначена только для устаревших развёртываний, где HTTPS недоступен. Эта опция включает небезопасный HTTP только для текущего запуска; её пропуск не отключаетallow_insecure_httpиз конфигурации.
- --config PATH¶
Загружайте конфигурацию только из
PATHвместо обнаруженных глобальных и проектных файлов конфигурации, см. Файлы настроек.
- --config-section SECTION¶
Переопределяет используемый раздел файла настроек, смотрите раздел Файлы настроек.
Команды¶
Доступны следующие команды:
- version¶
Распечатать текущую версию.
- list-languages¶
Вывести список используемых в Weblate языков.
- list-projects¶
Вывести список существующих в Weblate проектов.
- list-components¶
Вывести список существующих в Weblate компонентов.
- list-translations¶
Вывести список существующих в Weblate переводов.
- show¶
Показать объект Weblate (перевод, компонент или проект).
- ls¶
Вывести список объектов Weblate (переводов, компонентов или проектов).
- commit¶
Зафиксировать изменения, внесённые в объект Weblate (перевод, компонент или проект).
- pull¶
Извлечь изменения из удалённого репозитория в объект Weblate (перевод, компонент или проект).
- push¶
Отправить изменения объекта Weblate (перевода, компонента или проекта) в удалённый репозиторий.
- reset¶
Сбросить изменения в объекте Weblate (переводе, компоненте или проекте) для приведения их в соответствие с удалённым репозиторием.
- cleanup¶
Удалить любые неотслеживаемые изменения в объекте Weblate (переводе, компоненте или проекте) для приведения их в соответствие с удалённым репозиторием.
- repo¶
Вывести статус репозитория для данного объекта Weblate (перевода, компонента или проекта).
- stats¶
Вывести подробную статистику по данному объекту Weblate (переводу, компоненту или проекту).
- lock-status¶
Вывести статус блокировки.
- lock¶
Заблокировать компонент в Weblate от дальнейшего перевода.
- unlock¶
Разблокировать перевод компонента Weblate.
- changes¶
Вывести список изменений для данного объекта.
- download¶
Скачать файл перевода.
- --convert¶
Преобразовывать формат файла; если не указан, то ни каких преобразований на стороне сервера не происходит и файл скачивается в том виде, в котором он сохранён в репозитории.
- --output¶
Задаёт файл, в который нужно сохранить файл перевода, если не указан, он будет распечатан в стандартный поток вывода.
- upload¶
Загрузить файл перевода.
- --overwrite¶
Перезаписывать существующие переводы во время загрузки.
- --input¶
Файл, из которого читается содержимое, если не указан, чтение будет производиться со стандартного потока ввода.
- --method¶
Используемый метод загрузки, смотрите Способы импорта.
- --fuzzy¶
Что делать с неточными, отмеченными на правку, переводами (пусто,
processилиapprove)
- --author-name¶
Имя автора, для замены авторизованного в данный момент пользователя
- --author-email¶
Электронная почта автора для переопределения текущей авторизации пользователя
Подсказка
Более подробную информацию по выполнению конкретных команд можно получить с помощью параметра --help, например, wlc ls --help.
Файлы настроек¶
Если указан --config, wlc загружает только этот файл.
Без --config wlc сначала загружает обнаруженный глобальный файл конфигурации из стандартных, зависящих от платформы мест:
C:\Users\NAME\AppData\Roaming\weblate.iniГлобальный файл конфигурации в Windows в роуминговом профиле.
C:\Users\NAME\AppData\Local\weblate.iniГлобальный файл конфигурации в Windows в локальном профиле.
~/.config/weblateГлобальный файл конфигурации на Unix-подобных системах.
/etc/xdg/weblateОбщесистемный резервный файл конфигурации.
Программа следует спецификации XDG, поэтому вы можете настроить размещение файлов конфигурации с помощью переменных окружения XDG_CONFIG_HOME или XDG_CONFIG_DIRS.
В Windows предпочтительными местами расположения файла настроек являются каталоги APPDATA и LOCALAPPDATA.
После загрузки глобальной конфигурации wlc загружает ближайший файл конфигурации проекта из текущего каталога или его родительских каталогов:
.weblate,.weblate.ini,weblate.iniФайл конфигурации проекта, размещённый в репозитории.
Загружается только ближайший файл конфигурации проекта. Файлы конфигурации в более удалённых родительских каталогах игнорируются.
Можно настроить следующие параметры, находящиеся в разделе [weblate] (изменить этот раздел вы можете ключом командной строки --config-section):
- key
Удалено в версии 1.17: Используйте раздел
[keys], чтобы указать ключи, ограниченные для отдельных URL-адресов API, см. Устаревшая конфигурация.
- url
Адрес API сервера, по умолчанию установлен
http://127.0.0.1:8000/api/.
- translation
Путь к переводу по умолчанию — компоненту или проекту.
- allow_insecure_http
Разрешить ключи API через нелокальные URL-адреса
http://, по умолчаниюfalse. URL-адреса loopback HTTP, такие какhttp://127.0.0.1:8000/api/, остаются разрешёнными для локальной разработки без этой опции. Предпочитайте HTTPS вместо включения этого параметра. Автоматически обнаруживаемые файлы конфигурации проекта не могут включить эту опцию; установите её в пользовательской конфигурации, явном файле--config,WLC_ALLOW_INSECURE_HTTPили--allow-insecure-http. Настройка является накопительной: любого доверенного источника, включающего небезопасный HTTP, достаточно, а значения false или не установленные значения из командной строки или окружения не отключают её.
- retries, timeout, allowed_methods, backoff_factor, status_forcelist
Необязательные настройки повторных попыток HTTP и тайм-аута, передаваемые в
urllib3. Используйтеallowed_methodsдля перечисления методов запроса, которые могут быть повторены. Текущие выпуски wlc используют это имя параметра вместо старой опцииmethod_whitelist.
Файл настроек является INI-файлом, например:
[weblate]
url = https://hosted.weblate.org/api/
translation = weblate/application
retries = 3
allowed_methods = PUT,POST,GET
backoff_factor = 0.2
status_forcelist = 429,500,502,503,504
timeout = 30
allow_insecure_http = false
Ключи API хранятся в разделе [keys]:
[keys]
https://hosted.weblate.org/api/ = APIKEY
Это позволяет вам хранить ключи в ваших личных настройках, используя конфигурацию .weblate в репозитории системы контроля версий, чтобы wlc знал, с каким сервером ему следует общаться. Поиск [keys] ограничен точным URL-адресом API.
В CI ключи без области действия должны явно указывать URL-адрес API: установите как WLC_URL, так и WLC_KEY, или используйте --url вместе с --key.
Переменные окружения¶
Добавлено в версии 1.18.0.
Изменено в версии 2.0.1: Ключи API без области действия требуют явного URL-адреса API, когда конфигурация проекта обнаруживается автоматически. Ключи API отклоняются для нелокальных URL-адресов http://, если только небезопасный HTTP явно не включён.
URL-адрес API и ключ также можно настроить с помощью переменных окружения. Это особенно полезно для рабочих процессов CI, где WLC_URL указывает пункт назначения, а WLC_KEY вводится как секрет:
- WLC_URL¶
URL-адрес API
- WLC_KEY¶
Ключ API. Когда URL-адрес API в противном случае поступал бы из автоматически обнаруженной конфигурации проекта,
WLC_KEYпринимается только вместе сWLC_URL. Ключи API по умолчанию отклоняются для нелокальных URL-адресовhttp://.
- WLC_ALLOW_INSECURE_HTTP¶
Установите
1,true,yesилиon, чтобы разрешить ключи API через нелокальные URL-адресаhttp://. Предпочитайте HTTPS или loopback HTTP вместо этого. Другие значения, такие как0илиfalse, рассматриваются как неустановленные и не отключаютallow_insecure_httpиз конфигурации.
Такая же защита применяется к аргументам командной строки: --key принимается с автоматически обнаруженной конфигурацией проекта только при наличии --url.
Приоритет конфигурации URL-адреса API и ключа (от высшего к низшему):
Конфигурация, загруженная из
--config, или из обнаруженной глобальной конфигурации плюс ближайшей конфигурации проекта, когда--configне используется.
Разрешение небезопасного HTTP является только включением, а не обычной настройкой приоритета. Оно включается, когда передан --allow-insecure-http, когда WLC_ALLOW_INSECURE_HTTP имеет истинное значение или когда allow_insecure_http включён в доверенной конфигурации. Автоматически обнаруженная конфигурация проекта не может включить его; установите его в пользовательской конфигурации или передайте явный файл --config.
Примеры¶
Печать текущей версии программы:
$ wlc version
version: 0.1
Список всех проектов:
$ wlc list-projects
name: Hello
slug: hello
url: http://example.com/api/projects/hello/
web: https://weblate.org/
web_url: http://example.com/projects/hello/
Загрузить файл перевода:
$ wlc upload project/component/language --input /tmp/hello.po
Вы также можете указать, над каким проектом wlc должен работать:
$ cat .weblate
[weblate]
url = https://hosted.weblate.org/api/
translation = weblate/application
$ wlc show
branch: main
file_format: po
source_language: en
filemask: weblate/locale/*/LC_MESSAGES/django.po
git_export: https://hosted.weblate.org/git/weblate/application/
license: GPL-3.0+
license_url: https://spdx.org/licenses/GPL-3.0+
name: Application
new_base: weblate/locale/django.pot
project: weblate
repo: git://github.com/WeblateOrg/weblate.git
slug: application
template:
url: https://hosted.weblate.org/api/components/weblate/application/
vcs: git
web_url: https://hosted.weblate.org/projects/weblate/application/
При такой настройке закоммитить отложенные изменения в текущем проекте проще простого:
$ wlc commit