开始为 Weblate 贡献代码

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

从代码库开始

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

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

本地运行 Weblate

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

  1. 克隆 Weblate 源码:

    git clone https://github.com/WeblateOrg/weblate.git
    cd weblate
    
  2. 创建一个虚拟环境:

    virtualenv .venv
    . .venv/bin/activate
    
  3. 安装 Weblate(这需要一些系统依赖项,请参见 从源码安装)和所有对开发有用的依赖项:

    pip install -e '.[all,dev,ci,test,mypy,lint]'
    
  1. 启动一台开发服务器:

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

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

    . scripts/test-database.sh
    ./manage.py test
    

在 Docker 中本地运行 Weblate

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

./rundev.sh

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

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

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

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

备注

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

展示日志:

./rundev.sh logs

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

./rundev.sh stop

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

备注

这不是用于生产的合适设置,因它包括几个不安全的小技巧,但它们会使开发更容易。

引导你的开发实例

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

使用 PyCharm 为 Weblate 编写代码

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

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

../_images/pycharm-1.png

你可以选择让 PyCharm 为您创建 virtualenv(虚拟环境),或者选择一个现有的:

../_images/pycharm-2.png

一旦设置了解释程序别忘了安装依赖项:要么通过控制台(IDE的控制台默认情况下会直接使用你的 virtualenv),或者当你得到一个关于缺少依赖项的警告时通过接口。

第二步是设置正确的信息来在 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

提示

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