定制 Weblate#

使用 Django 和 Python 进行扩展和定制。将你的更改贡献给上游,让每个人都能受益。这降低了您的维护成本;当改变内部接口或重构代码时,Weblate 的代码会被照顾到。

提示

你也可以在 :ref:`管理外观`中定制 Weblate 外观。

警告

内部接口与模板都不被认为是稳定的 API。请每次升级都检查你的定制,接口或其语义可能未经通知就进行更改。

建立 Python 模块#

如果不熟悉 Python,你可以查看 适合初学者的 Python(英文) ,它解释了其基本内容并指向了高级教程。

要写入有定制 Python 代码(被称为模块)的文件,需要一个地方存储它,或者在系统路径(通常像 /usr/lib/python3.9/site-packages/ 的地方),或者在 Weblate 目录下,同样也添加到解释程序搜索路径下。

提示

使用 using Docker 时,你可将 Python 模块置于 /app/data/python/ (见 Docker 容器卷) 以便它们可以由 Weblate 从 settings override file 等处进行加载。

更好地是,将你的定制化转变为适当的 Python 包:

  1. 为你的包建立文件夹(我们会使用 weblate_customization )。

  2. 在里面新建`setup.py` 文件来描述包:

    from setuptools import setup
    
    setup(
        name="weblate_customization",
        version="0.0.1",
        author="Your name",
        author_email="yourname@example.com",
        description="Sample Custom check for Weblate.",
        license="GPLv3+",
        keywords="Weblate check example",
        packages=["weblate_customization"],
    )
    
  3. 建立定制代码的 Python 模块( 也被成为 weblate_customization )的文件夹。

  4. 在里面建立 __init__.py 文件来确认 Python 可以导入模块。

  5. 现在可以使用 pip install -e 安装这个包。更多信息可以在 Editable installs 中找到。

  6. 模块一旦安装,就可以用在 Webalte 配置中(例如 weblate_customization.checks.FooCheck )。

你的包结构应该看起来像这样:

weblate_customization
├── setup.py
└── weblate_customization
    ├── __init__.py
    ├── addons.py
    └── checks.py

可以在 <https://github.com/WeblateOrg/customize-example> 找到定制 Weblate 的示例,它涵盖了下面描述的所有题目。

定制的质量检查、附加组件和自动修复#

要在 Weblate 中安装你的 定制的自动修正编写自己的检查编写附加组件 代码:

  1. 将文件放进你的包含 Weblate 定制的 Python 模块中(请参见 建立 Python 模块 )。

  2. 在专用设置( WEBLATE_ADDONSCHECK_LISTAUTOFIX_LIST )中将其完全合法的路径添加到 Python 类中:

# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)

# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)

# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)