开始为 Weblate 贡献代码

为了理解 Weblate 源代码,请首先查看 Weblate 源代码Weblate 前端Weblate 内部

用我们的代码库开始

如果查找一些缺陷来是自己熟悉 Weblate 代码库,那么请查看标记 good first issue 的那些。

本地运行 Weblate

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

  1. 复制 Weblate 源码:

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

    virtualenv .venv
    .venv/bin/activate
    
  3. 安装 Weblate(这需要一些系统依赖性,请参见 从源文件安装):

    pip install -e .
    
  1. 安装用于开发的所有依赖性:

    pip install -r requirements-dev.txt
    
  2. 开始运行开发服务器:

    weblate runserver
    
  3. 依赖于配置,您会想要开始 Celery workers:

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

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

在 Docker 中本地运行 Weblate

如果安装了 Docker 和 docker-compose,您可以启动开发环境,只通过简单地运行:

./rundev.sh

它将新建 Docker 影响并启动它。Weblate 运行在 <http://127.0.0.1:8080/> 上,并且您可以以 admin 用户和 admin 密码来登录。新的安装是空的,所以您会想要以 添加翻译项目和组件 来继续。

对此,Dockerfiledocker-compose.yml 位于本地的 dev-docker 目录中。

脚本还接受一些参数,要执行测试,以 test 参数来运行,然后指定任何 test 参数,例如:

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

注解

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

展示日志:

./rundev.sh logs

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

./rundev.sh stop

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

注解

这不是用于生产的合适设置,它包括几个不安全的破解,但使开发更容易。

使用 PyCharm 为 Weblate 编写代码

PyCharm 是 Python 的著名 IDE,这里是一些指示,帮助您在其中设置 Weblate 项目。

考虑刚刚克隆了 Github 仓库,只是在 PyCharm 中打开将其克隆进去的文件夹。一旦打开 IDE,第一步是指定想要的解释程序:

../_images/pycharm-1.png

可以或者选择让 PyCharm 为您创建 virtualenv(虚拟环境),或者选择已经存在的:

../_images/pycharm-2.png

一旦设置了解释程序就不要忘记安装依赖性:可以通过控制台来进行(来自 IDE 的控制台将默认直接使用虚拟环境),或者在得到丢失依赖性的警告是通过界面来进行。

第二步是设置正确的信息,在 PyCharm 内使用本地 Django:理念是能够立即触发 IDE 中的单元测试。为此需要指定 Django 的根路径和一个设置的路径:

../_images/pycharm-3.png

要小心,Django project root`(Dejango 项目的根)是仓库的根,而不是 weblate 子目录。关于设置,我个人使用来自仓库的`settings_test,但您可以新建自己的设置,并在那里设置。

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

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

对适当检查的 “No reload”(无重新载入)要小心:如果修改一些文件的话,并不会得到更多服务器现场重新载入的,而调试程序会在您设置的断点上停止。

创立引得开发实例

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