开始为 Weblate 贡献代码

要理解 Weblate 源代码,请查看 Weblate 源代码、Weblate 前端 和 Weblate 内部。

从代码库开始

想熟悉 Weblate 代码库,不如先试试对带有 good first issue 标签的那些 bug 下手。

欢迎你在无人请求的情况下开始处理这些问题。只要在相关 issue 中宣布一下,让别人知道有人正在处理它。

本地运行 Weblate

开始 Weblate 开发的最舒适的方法是按照 从源码安装。它将给您一个带有可编辑的 Weblate 源代码的 Python 环境。

  1. 克隆 Weblate 源码:

    git clone https://github.com/WeblateOrg/weblate.git
    cd weblate
    
  2. 安装 Weblate 和所有对开发有用的依赖项:

    uv sync --all-extras --dev
    
  3. 启动一台开发服务器:

    uv run weblate runserver
    
  4. 你可能还想启动 Celery 工作进程,这取决于你的配置:

    uv run ./weblate/examples/celery start
    
  5. 若要运行测试(更多细节请参见 Weblate 的本地测试):

    . scripts/test-database.sh
    uv run pytest
    

在 Docker 中本地运行 Weblate

如果你安装了 Docker 和 docker-compose-plugin,你还需要通过你喜爱的包管理器安装名为 jq 的额外工具。之后,只需运行以下命令即可启动开发环境:

./rundev.sh

它将新建一个 Docker 镜像并启动它。Weblate 运行在 <http://127.0.0.1:8080/> 上,并且您可以以用户 admin 的身份登录,密码是 admin。新安装是什么都没有的,所以接着您可能想 添加翻译项目和部件。

Weblate 被配置为将 maildev 容器用作电子邮件服务器。可以在 <http://127.0.0.1:1080/> 看到传递的电子邮件。

相关 Dockerfile 和 docker-compose.yml 位于的 dev-docker 目录中。要在开发期间更轻松地访问数据库,暴露运行 PostgreSQL 的容器于端口 5433 。

脚本还接受一些参数,要执行测试,以 test 参数来运行,然后指定任意 test 参数,例如,只在 weblate.machine 模块中运行测试:

./rundev.sh test --exitfirst weblate/machine

备注

小心在运行测试前您的 Docker 容易活动并运行。您可以通过运行 docker ps 命令来检查。

展示日志:

./rundev.sh logs

为了停止后台容器,运行:

./rundev.sh stop

运行没有任何变量的脚本将重建 Docker 容器并重启动它。

警告

容器并不适合生产适用,因为牺牲了安全性来简化开发。

引导你的开发实例

您会想要使用 import_demo 来新建演示翻译,并且使用 createadmin 来创建一名管理用户。

如果也安装了 账单,可以使用 billing_demo 创建演示账单项目。

使用 PyCharm 为 Weblate 编写代码

PyCharm 是一个著名的 Python IDE,以下是一些指导准则,可以帮助你在其中设置你的 Weblate 项目。

考虑到你刚刚将 GitHub 仓库复制到一个文件夹中,只需使用 PyCharm 打开它。一旦 IDE 打开,第一步要做的是指定你想要使用的解释器:

../_images/pycharm-1.png

Select the .venv environment created by uv sync --all-extras --dev to match the command-line development setup. You can also let PyCharm create a Python environment for you, but the uv-managed environment is preferred:

../_images/pycharm-2.png

Don't forget to install the dependencies once the interpreter is set. When using the preferred uv-managed environment, run uv sync --all-extras --dev from the console.

第二步是设置正确的信息来在 PyCharm 中本地使用 Django:目的是能够立即触发 IDE 中的单元测试。为此,你需要指定该 Django 项目的根路径及其设置路径:

../_images/pycharm-3.png

请注意,Django project root 是仓库的实际根目录,而不是 Weblate 子目录。关于设置,你可以使用仓库中的 weblate/settings_test.py,您也可以创建自己的设置并将其设置在那里。

最后一步是运行服务器,并将断点放置在代码中而能够调试它。这通过新建新的 Django Server 配置来完成:

../_images/pycharm-4.png ../_images/pycharm-5.png

提示

小心被称为 No reload 的属性:如果你修改文件,它会阻止服务器被实时重新加载。这允许保留现有的调试器断点,而它们通常会在重新加载服务器时被丢弃。