添加语言

准备

如果您要翻译的语言尚未由其他人启动,并且您希望为所需语言创建一组新文档,例如 'fr'(法语),那么您必须首先使用您创建的环境,如入门中的指导,特别是安装依赖关系编译手册

该基础环境将用于:

  • 从英语源文本创建一组新的翻译语言。

  • 执行 make 命令将 po 文件中的已翻译文本转换为 html 文件,以便在本地进行测试。

  • 同步其他贡献者添加的英文文本更改。

下面的例子展示了在 Linux 平台上为法语(语言代码 fr)创建一组新文件的过程。其他平台大同小异。

  1. 创建一个 Blender ID,如果您尚未这么做。

  2. 登录 projects.blender.org创建一个 Issue,申请提交权限,以便将更改传输到翻译团队的中央仓库。

  3. 打开一个控制台应用程序实例。

  4. 将当前工作目录更改为 blender-manual,也就是 Makefile 实例所在的目录。

尝试以英语创建 HTML 文件的编译过程

  1. 如果存在之前的 build 目录,请确保已删除:

    make clean
    
  2. 将所有 rst 文件转换为 pot 翻译文件:

    make gettext
    
  3. 创建 html 文件:

    make html
    
  4. 此后,就可以通过打开 blender-manual/build/html/index.html 文件在本地查看按提示指令创建的 html 文件。

在 HTML 菜单中创建语言条目

  1. 打开文件 ./build_files/theme/js/version_switch.js(假设您在 blender-manual 子目录下),在 html 菜单中创建语言条目。

  2. 查找 var all_langs = {..}; 中的语言表。

  3. 输入条目:"fr": "Français",, ("fr": "Français")。(注意 Unicode 字符。)

  4. 提交更新后的文件:

    git add ./build_files/theme/js/version_switch.js
    git commit -m "HTML: Add French to language menu"
    
  5. 将更改推送到上游存储库:

    git push
    

生成目标语言的文件集

  1. 使用以下命令检验当前的翻译库:

    git clone https://projects.blender.org/blender/blender-manual-translations.git locale
    

    这将把存储库中的所有语言集下载到你磁盘上的 locale 目录中。你可以进入 locale 目录,查看其中隐藏的子目录 .git,以及语言目录。您需要为要翻译的语言添加自己的文件集。

  2. blender-manual 目录生成一组用于 fr 语言的文件:

    make update_po
    

    这些文件仍然仅以英文显示,所有 msgstr 条目均为空白。

  3. 将新一组文件提交到中央存储库:

    cd locale
    git add fr
    git commit -m "Initial commit language set of files for French"
    

Tip

  • 建议你在 .bashrc 中为这些目录创建两个环境变量,以方便修改或编写用于翻译和查看结果的批处理/shell命令:

    export BLENDER_MAN_EN=$HOME/<directory to make file directory above>/blender-manual
    export BLENDER_MAN_FR=$BLENDER_MAN_EN/locale
    
  • 新生成的文件会包含一些作者和修订日期等占位符。如果您觉得替换这些占位符的工作很重复,可以使用子目录 ~/blender-manual/tools/util_maintenance 中的脚本 change_placeholders.sh,将其复制到本地 bin 目录中,并用您的具体信息替换文件中提到的所有值,然后在每次修改文件后执行以下命令,用您的个人信息、修改日期和时间更新文件,并生成您所使用语言的 html 文件,你可以使用互联网浏览器查看:

    $HOME/bin/change_placeholders.sh $BLENDER_MAN_FR
    make -d --trace -w -B -e SPHINXOPTS="-D language='fr'" 2>&1