Weblate 内部

备注

这一章将给出 Weblate 内部的基本概况。

Weblate 从 Django 得到其多数代码架构,并基于它。

目录结构

Weblate 主仓库目录结构的速览:

docs

本文档的源码,可使用 Sphinx 来构建。

dev-docker

运行开发服务器的 Docker 代码,请参见 在 Docker 中本地运行 Weblate

weblate

Weblate 作为 Django 应用程序的源代码,请参见 Weblate 内部

weblate/static

客户端文件(CSS、Javascript 和图片),请参见 Weblate 前端

模块

Weblate 包括几个 Django 应用(一些是可选的,请参见 可选的 Weblate 模块):

accounts

用户账户、简介和通知。

addons

微调 Weblate 行为的附加组件,请参见 附加组件

api

基于 Django REST 框架 的 API。

auth

认证和权限。

billing

可选的 账单 模块。

checks

翻译字符串 质量检查 模块。

fonts

字体渲染检查模块。

formats

基于 translate-toolkit 的文件格式抽象层。

gitexport

可选的 Git 导出器 模块。

lang

定义语言和复数模型的模块。

legal

可选的 法律组件 模块。

machinery

机器翻译服务的集成。

memory

内置的翻译记忆库,请参见 翻译记忆库

screenshots

屏幕截图管理与 OCR 模块。

trans

处理翻译的主模块。

utils

各种帮助功能。

vcs

版本控制系统抽象概念。

wladmin

Django 管理界面定制。

后台任务间隔

提示

此部分描述 Celery 任务内部情况。使用 Celery 的后台任务 描述如何配置 Celery 来运行这些任务。

Weblate 使用 Celery 在后台执行任务。一些任务由事件触发,而一些任务由计划触发。

Celery Beat 用于安排任务时间,django-celery-beat 用来在数据库中保存定期的任务计划。在每一个 Django 应用中,任务计划在 tasks.py 中进行配置。

使用数个队列运行任务;在 settings.py 中配置路由。队列被设计为隔开不同种类的工作负担:

celery

处理后台任务的默认队列。

notify

传送 Weblate 内事件及身份认证或注册的通知邮件。这是个单独队列以让邮件顺利传送,即使积压了其他任务。

memory

更新翻译记忆库条目。导入新字符串时更新队列可能较长,漫长的处理在这里不是十分重要,因此单独队列避免拦截其他任务。

backup

备份任务无法并行处理,单一的专门在worker 让备份更轻松。

translate

已知自动翻译任务会花很长时间,因为要访问数个外部服务。