Дополнительные модули Weblate¶
Для вашей установки доступно несколько дополнительных модулей.
Экспортер Git¶
Предоставляет доступ на чтение к нижележащему репозиторию Git через HTTP(S).
Установка¶
Добавьте
weblate.gitexportв установленные приложения в файлеsettings.py:INSTALLED_APPS += ("weblate.gitexport",)
Экспортируйте существующие репозитории, выполнив перено своей базы данных после установки:
weblate migrate
Подсказка
Git-экспортёр включён в нашем официальном образе Docker. Чтобы отключить его, используйте:
WEBLATE_REMOVE_APPS=weblate.gitexport
Использование¶
Модуль автоматически внедряется в Weblate и устанавливает URL-адрес экспортируемого репозитория в Настройки компонента. Репозитории доступны в части /git/ URL-адреса Weblate, например https://example.org/git/weblate/main/.
Репозитории для проектов, доступных публично, могут быть клонированы без авторизации:
git clone 'https://example.org/git/weblate/main/'
Доступ к просмотру репозиториев с ограниченным доступом (с Private access control или когда REQUIRE_LOGIN включён) требует токен API, который можно получить в вашем user profile:
git clone 'https://user:KEY@example.org/git/weblate/main/'
Примечание
Weblate обслуживает сам репозиторий Git, но не обслуживает объекты Git LFS. Для репозиториев, использующих Git LFS, клонируйте из вышестоящего репозитория и добавьте Weblate как другой удалённый репозиторий. Если вам нужны только файлы, отслеживаемые Git, вы можете клонировать из Weblate с GIT_LFS_SKIP_SMUDGE=1, чтобы пропустить загрузку объектов Git LFS.
Подсказка
По умолчанию у членов группы Пользователи и анонимных пользователей есть доступ к репозиториям публичных проектов через роли Доступ к репозиторию и Опытный пользователь.
Выставление счетов¶
Этот модуль используется на Облачном хостинге Weblate, для задания тарифных планов, а также отслеживания платежей и лимитов.
Установка¶
Добавьте weblate.billing в установленные приложения в файле settings.py:
INSTALLED_APPS += ("weblate.billing",)
Запустите миграцию базы данных для необязательной установки для модуля дополнительных структур базы данных:
weblate migrate
Создание и назначение тарифного плана¶
Сначала вам нужно создать тарифный план, чтобы активировать биллинг. Перейдите в раздел Администрирование (обозначен значком гаечного ключа) и откройте экран Инструменты. Оттуда перейдите в Интерфейс администратора Django.
В интерфейсе администратора Django найдите раздел BILLING и добавьте тарифный план. Например, вы можете добавить бесплатный план Free.
Если вы хотите назначить тарифный план существующему проекту, это также можно сделать в Интерфейсе администратора Django с помощью параметра Customer billings.
Наконец, Интерфейс администратора Django предоставляет параметр Invoice для регистрации платежей ваших клиентов.
Использование¶
После установки вы можете управлять биллингом в интерфейсе администратора. Пользователи с включённым биллингом получат новую вкладку Billing в своём Профиль пользователя.
Модуль тарифных планов также позволяет пользователям создавать новые проекты и компоненты без прав суперпользователя (см. Добавление проектов и компонентов перевода). Это возможно при выполнении следующих условий:
Тариф не исчерпал заданные лимиты (любое избыточное использование ресурсов влечёт блокировку создания проектов/компонентов) и оплачен (если он не бесплатный)
Пользователь имеет разрешение Добавление проектов в рабочее пространство для рабочего пространства, охваченного тарифным планом.
При создании проекта пользователь может выбрать, в каком рабочем пространстве должен находиться проект. Проекты, созданные в рабочем пространстве с тарификацией, учитываются в тарифном плане, назначенном этому рабочему пространству. Пользователи с разрешением Редактирование настроек рабочего пространства могут просматривать и оплачивать тарифный план; этим пользователям отправляются уведомления о тарификации по электронной почте. Подробнее см. Выставление счетов.
Юридический модуль¶
Этот модуль используется на Облачном хостинге Weblate для вывода необходимых юридических документов. Он поставляется в комплекте с набором незаполненных документов. Предполагается, что вы самостоятельно заполните следующие шаблоны:
legal/documents/tos.htmlДокумент условий обслуживания
legal/documents/privacy.htmlДокумент политики конфиденциальности
legal/documents/summary.htmlКраткий обзор условий обслуживания и политики конфиденциальности
При изменении документов с условиями обслуживания измените LEGAL_TOS_DATE так, чтобы пользователи были вынуждены согласиться с обновлёнными документами.
Примечание
Юридические документы для сервиса Hosted Weblate, управляемого Weblate s.r.o., доступны в этом Git-репозитории: <https://github.com/WeblateOrg/wllegal/tree/main/wllegal/templates/legal/documents>.
Включённые условия обслуживания и связанные с ними юридические документы относятся к этому сервису и не предназначены для общего использования. Тем не менее, они могут пригодиться в качестве отправной точки, если их скорректировать в соответствии с вашими потребностями.
Установка¶
1. Add weblate.legal to installed apps in
settings.py:
INSTALLED_APPS += ("weblate.legal",)
# Optional:
# Social auth pipeline to confirm TOS upon registration/subsequent sign in
SOCIAL_AUTH_PIPELINE += ("weblate.legal.pipeline.tos_confirm",)
# Middleware to enforce TOS confirmation of signed in users
MIDDLEWARE += [
"weblate.legal.middleware.RequireTOSMiddleware",
]
Запустите миграцию базы данных для необязательной установки для модуля дополнительных структур базы данных:
weblate migrate
Отредактируйте юридические документы в каталоге
weblate/legal/templates/legal/в соответствии с вашими условиями.
Подсказка
В развёртываниях Docker включите юридический модуль с помощью WEBLATE_LEGAL_INTEGRATION вместо редактирования settings.py. Используйте tos-confirm, чтобы включить юридический модуль и подтверждение условий обслуживания, или wllegal, чтобы дополнительно загрузить размещённые шаблоны юридических документов, используемые сервисами, управляемыми Weblate s.r.o. Эти шаблоны не предназначены для общего использования. Чтобы предоставить свои собственные шаблоны в Docker, поместите их в /app/data/python/customize/templates/legal/documents, см. Замена логотипа и других статических файлов.
Использование¶
После установки и редактирования юридические документы будут отображаться в пользовательском интерфейсе Weblate.
Аватары¶
Аватары загружаются и кэшируются на стороне сервера, чтобы уменьшить утечку информации на сайты, обслуживающие их по умолчанию. Встроенную поддержку получения аватаров из настроенных для этого адресов электронной почты можно отключить с помощью параметра ENABLE_AVATARS.
В настоящее время Weblate поддерживает:
CDN локализации¶
Надстройки CDN локализации JavaScript и CDN файлов перевода записывают файлы в LOCALIZE_CDN_PATH; Weblate не обслуживает их. Настройте веб-сервер или CDN, обслуживающий LOCALIZE_CDN_URL, как общедоступный, доступный только для чтения хост статических файлов.
Обрабатывайте каждый опубликованный CDN-файл как общедоступный. Специфичный для надстройки UUID в URL-адресе не является механизмом контроля доступа. Не включайте CDN-надстройки для компонентов, которые содержат приватные строки, текст невыпущенного продукта, данные клиентов, внутренние URL-адреса, примеры API, пути к репозиториям, комментарии переводчиков или метаданные формата файлов, которые не должны быть раскрыты.
Надстройка CDN файлов перевода публикует необработанные файлы переводов в форматах, поддерживаемых Weblate. Некоторые форматы могут интерпретироваться браузерами или другими клиентами как HTML, SVG, XML, JavaScript, YAML или специфичная для приложения конфигурация. Обслуживайте CDN с выделенного домена, отдельного от Weblate и от приложения, потребляющего переводы. Не передавайте куки аутентификации домену CDN.
Рекомендуемая конфигурация сервера:
Обслуживайте только каталог, настроенный параметром
LOCALIZE_CDN_PATH; не раскрывайте репозитории Weblate, резервные копии, медиафайлы, конфигурацию или весь каталог данных.Отключите листинг каталогов.
Используйте HTTPS и сделайте хост CDN доступным только для чтения с веб-сервера.
Отправляйте X-Content-Type-Options с
nosniff.Настройте консервативные MIME-типы. Обслуживайте неизвестные форматы переводов как text/plain или application/octet-stream; обслуживайте
weblate.jsтолько как JavaScript.Для необработанных форматов переводов, не предназначенных для отображения в браузере, рассмотрите возможность добавления Content-Disposition с
attachment.Настраивайте
Access-Control-Allow-Originтолько для сайтов, которым требуется доступ браузера к файлам.Установите время жизни кэша, соответствующее вашим ожиданиям обновления, и очищайте кэши CDN, когда устаревшие переводы должны быстро исчезнуть.
Следующий фрагмент nginx обслуживает только настроенный CDN-каталог и применяет консервативные значения по умолчанию для необработанных файлов переводов:
#
# nginx configuration for the Weblate localization CDN
#
# You will want to change:
#
# - server_name to match the host configured in LOCALIZE_CDN_URL
# - root to match LOCALIZE_CDN_PATH
# - Access-Control-Allow-Origin to the sites that need browser access
# - TLS configuration if HTTPS is not terminated before nginx
#
server {
listen 80;
server_name cdn.example.com;
# LOCALIZE_CDN_PATH
root /home/weblate/data/l10n-cdn;
autoindex off;
disable_symlinks on;
location = / {
return 404;
}
# The JavaScript localization add-on publishes this loader.
location ~ "^/[0-9a-f]{32}/weblate\.js$" {
try_files $uri =404;
types {
application/javascript js;
}
default_type application/javascript;
add_header X-Content-Type-Options nosniff always;
# add_header Access-Control-Allow-Origin "https://www.example.com" always;
expires 1h;
}
# Other CDN files are translation files. Serve them conservatively so raw
# formats are not interpreted as active browser content.
location / {
try_files $uri =404;
types {
}
default_type text/plain;
add_header X-Content-Type-Options nosniff always;
add_header Content-Disposition "attachment" always;
# add_header Access-Control-Allow-Origin "https://www.example.com" always;
expires 1h;
}
}
Подписание коммитов Git с помощью GnuPG¶
Все коммиты могут быть подписаны с помощью ключа GnuPG вашего экземпляра Weblate.
Включите
WEBLATE_GPG_IDENTITY. (Weblate при необходимости создаст ключ GnuPG и будет использовать его для подписи всех коммитов переводов.)Эта функция требует установки GnuPG 2.1 или новее.
Этот ключ будет хранится по пути, указанному в
DATA_DIR, а открытый ключ будет отображаться на странице «О Weblate» (/about/):
В качестве альтернативы вы также можете импортировать существующие ключи в Weblate, просто установите
HOME=$DATA_DIR/homeпри вызове gpg.
Подсказка
Ключевой материал кэшируется Weblate на длительный период. Если вы позволяете Weblate создать ключ с WEBLATE_GPG_IDENTITY, а затем импортировать ключ с тем же идентификатором, чтобы использовать существующий ключ, рекомендуется очистить кэш Redis, чтобы увидеть эффект такого изменения.
Примечание
При совместном использовании DATA_DIR между несколькими серверами, пожалуйста, следуйте инструкциям на https://wiki.gnupg.org/NFS для обеспечения надёжной работы подписи GnuPG.
См. также
Ограничение частоты запросов¶
Изменено в версии 4.6: Ограничение частоты больше не применяется к вошедшим в систему суперпользователям.
Некоторые операции Weblate ограничены по частоте. Допустимо не более RATELIMIT_ATTEMPTS попыток за период RATELIMIT_WINDOW секунд. Если это количество превышено, то пользователь блокируется на RATELIMIT_LOCKOUT секунд. Существуют также параметры, задающие ограничения, специфические для конкретных действий, например RATELIMIT_CONTACT_ATTEMPTS или RATELIMIT_TRANSLATE_ATTEMPTS. Следующая таблица является исчерпывающим списком таких параметров.
Следующие операции подвержены ограничению частоты запросов:
Имя |
Область |
Допустимо попыток |
Временное окно |
Период блокировки |
|---|---|---|---|---|
Регистрация |
|
5 |
300 |
600 |
Отправка сообщения администраторам |
|
2 |
300 |
600 |
Аутентификация по паролю при входе |
|
5 |
300 |
600 |
Двухфакторная аутентификация |
|
5 |
300 |
600 |
Поиск по всему сайту |
|
6 |
60 |
60 |
Перевод |
|
30 |
60 |
600 |
Добавление в словарь |
|
30 |
60 |
600 |
Начало перевода на новый язык |
|
2 |
300 |
600 |
Создание нового проекта |
|
5 |
600 |
600 |
Ограничение частоты основано на сеансах, когда пользователь вошёл в систему, и на IP-адресе, если нет.
Если у пользователя не получается войти AUTH_LOCK_ATTEMPTS раз, то авторизация по паролю полностью отключается до тех пор, пока пользователь не сбросит свой пароль.
Настройки можно также применить в Docker-контейнере, добавив префикс WEBLATE_ к имени настройки, например RATELIMIT_ATTEMPTS становится WEBLATE_RATELIMIT_ATTEMPTS.
Для API есть отдельные настройки ограничения количества запросов, смотреть раздел Ограничение частоты запросов API.