如何编译与翻译Blender中文手册

本文详细介绍编译与参与Blender中文手册翻译步骤,步骤参考官方手册步骤,并根据实际情况,有所修改和添加。

一、软件安装

1. python安装

由于目前的blender手册源文件是rst格式的,需要用到 sphinx,而 sphinx 是作为python是作为python的一个包存在的,所以我们首先安装python。
这里我们用的是Python 3.82版本。
下载合适版本(32位或64位)后,安装Python3,选择Customize Installation,记得勾选Add Python to environment variables,这样就不用手动配置环境变量了。

Python_Installation_option.png

2. 安装sphinx与依赖环境

打开命令行提示符(或PowerShell),输入:

pip install Jinja2==3.1.2 Pygments==2.13.0 docutils==0.17.1 snowballstemmer==2.2.0 babel==2.10.3 requests==2.27.1 sphinx-intl==2.0.1 sphinx_rtd_theme==1.0.0 sphinx-autobuild==2021.3.14
requirement_installation.png

)

回车,等待下载完成,关闭命令行(这个很重要,后面会提到)。

3. 下载与安装TortoiseSVN

由于blender手册使用版本控制使用的是svn,所以必须安装一个svn客户端,本文用到的是TortoiseSVN
下载地址如下:
https://tortoisesvn.net/downloads.html

TortoiseSVN_installation.png

选择对应版本软件,安装时选择command line client tools 选项,其余使用默认配置安装。

4. 安装poedit(用于翻译)

由于blender手册翻译用的是po文件,所以需要用到poedit作为翻译工具。
poedit官网下载对应版本poedit,安装使用默认配置即可。

二、代码下载与手册编译

1. 下载手册代码

打开选择存放代码的文件夹,右键单击,选择SVN Checkout...

svn_checkout_menu.png

在弹出的对话框中的URL of repository文本框中输入:

https://svn.blender.org/svnroot/bf-manual/trunk/blender_docs
svn_checkout.png

Checkout directory会自动填入,默认即可。
单击确定,开始下载代码,等待下载结束。

2. 下载中文po翻译文件

打开blender_docs文件夹,按shift + 右键,选择在此处打开命令行窗口
在打开的命令行窗口输入并执行:

svn checkout https://svn.blender.org/svnroot/bf-manual-translations/trunk/blender_docs/locale/zh-hans locale/zh

此操作下载中文po文件,更新的po文件位于blender_docs\locale\zh文件夹下。

3. 编译手册

  • 编译英文手册,在blender_docs文件夹打开的命令行执行:
./make.bat

等待编译结束,编译后的网页文件位于“blender_docs\build\html”文件夹下。

en_manual.png

注:
1. 编译过程中的警告可以忽略;
2. 如果提示“'sphinx-build' 不是内部或外部命令,也不是可运行程序或批处理文件”,请关闭当前命令行,重开命令行后再运行./make.bat
*3. 该步骤为编译英文手册,可选择跳过。

  • 编译中文手册,在blender_docs文件夹打开的命令行执行:
sphinx-build -b html -D language=zh manual/ build/zhhtml

编译的中文手册位于 blender_docs\build\zhhtml 文件夹下,这时你就可以在本地查看与官网同步的手册了。

zh_manual.png

三、手册翻译与排错

1. 手册翻译

手册翻译只需使用poedit打开前述步骤中下载的po文件,逐行翻译即可。
手册翻译注意事项如下:

  • 斜体与粗体
    markdown语法规则一样,左右加*表示斜体,左右加**表示粗体:
    the *Rigid Body* settings **will not** be linked in since they are associated with their scene's world.
    经解析后,在手册中显示为:
    the Rigid Body settings will not be linked in since they are associated with their scene's world.
    如果***前后有字符,需各保留1空格,所以该句子翻译为:
    *刚体* 设置 **不会** 被关联,因为它们是从属于场景世界的。

  • 页内链接
    页内链接使用 `页内小标题名`_ 为标识符,如果 ` 前后有字符(后面可直接紧跟逗号,句号),需各保留1空格; 页内小标题名 需翻译,且与锚点位置中文一致。

所以,
`Switching Select Mode`_
译为
`切换选择模式`_

  • 手册内链接
    手册内链接使用:doc::ref: 为标识符,如果:doc:前或:ref: 前,第二个`后有字符(后面可直接紧跟逗号,句号),需各保留1空格;尖括号 <> 中间链接不要翻译, < 左侧保留1空格。

    所以,
    see :doc:`relative paths </data_system/files/relative_paths>`. 翻译为:
    见 :doc:`相对路径 </data_system/files/relative_paths>` 。

    :ref:`Fake User <data-system-datablock-fake-user>`. 翻译为:
    :ref:`伪用户 <data-system-datablock-fake-user>` 。

    :ref: 是预定义好的锚点,还有一类无尖括号情形无需翻译。

    所以,
    You can change the options of the object in the :ref:`ui-undo-redo-adjust-last-operation` panel just after creating it: 翻译为:
    用户可以在创建物体后在 :ref:`ui-undo-redo-adjust-last-operation` 面板中更改该物体的选项:

  • 菜单
    菜单使用:menuselection:为标识符,如果:menuselection:前或第二个 ` 后有字符(包括逗号,句号等),需各保留1空格;菜单文字参照软件界面(UI)翻译。
    所以,

Menu: :menuselection:`File --> Append or Link`翻译为:
菜单: :menuselection:`文件 --> 追加 或 关联`

  • 快捷键
    快捷键使用:kbd:为标识符,如果:kbd:前或第二个 ` 后有字符(包括逗号,句号等),需各保留1空格;快捷键无需翻译。
    所以,

Hotkey: :kbd:`Shift-F1` or :kbd:`Ctrl-Alt-O`翻译为:
快捷键: :kbd:`Shift-F1` 或者 :kbd:`Ctrl-Alt-O`

2. 翻译检查与排错

  • 错误: 这是第一次定义的位置
    如果翻译保存时报错错误: 这是第一次定义的位置:

    save_error1.png

    可选择菜单编目 --> 清楚已删除的翻译(P),清楚翻译即可排错。
    error1_troubleshooting.png

  • 错误: 不像 "msgid" , "msgstr" 不是有效的Python格式字符串 。
    如果翻译保存时报错错误: 不像 "msgid" , "msgstr" 不是有效的Python格式字符串。:

    save_error2.png

    使用文本编辑器打开该po文件,找到错误行对应位置,删除#, python-format这一行重新保存即可。

  • 警告:头部缺少文件头"Language"
    如果翻译保存时报错警告:头部缺少文件头"Language"

    language_warning.png

    重新选择语言即可:
    language_warning1.png

    language_selection.png

  • 编译并检查错误
    按照前述编译中文手册步骤,编译中文手册,并打开所翻译页面,检查并修正翻译文字格式错误。

小技巧
检查错误过程中,可能需要频繁执行编译手册命令,以确认修改结果是否正确。在命令行窗口重复输入命令就显得过于麻烦了。我们可以在blender_docs文件夹下新建一个build.bat的脚本,简化操作。
build.bat内容如下 :

@echo off
sphinx-build -b html -D language=zh manual/ build/zhhtml
pause

四、翻译提交

1. 提交patch:

在没有申请官方提交权限时,需本地生成 patch 文件,并提交patch
下面以我自己翻译的 /about 目录下的 introduction.po 为例,介绍如何提交翻译。

  • 生成patch文件
    选择 ‘introduction.po’ 文件,右键单击,选择TortoiseSVN --> Create patch

patch_generate.png

在弹出的对话框中点击OK
patch_dialog1.png

在弹出的目录选择对话框选择当前目录,点击保存

patch_dialog2.png

然后就会生成一个 introduction.po.patch 的文件了。

  • 提交patch文件
    打开下面的网址:
    https://developer.blender.org/differential/diff/create/
    按照下面图片的要求,填入内容或上传文件,然后点击Create diff
    creat_diff.png

    点击Continue
    continue.png

    依照图示输入或选择,然后点击Save
    save.png

    以上步骤完成后,提交的翻译就等待审查和提交了。
    注:如果没有https://developer.blender.org/ 账号的,需要自己申请一个。

2. 直接提交

目前Blendercn社区已成立手册翻译组,志愿负责中文手册的翻译与维护,欢迎加入。
目前本人(NGE)与kidux均有手册提交权限,如果嫌提交patch流程麻烦,可以加入翻译组,将po文件交给我们代为提交。
同时,手册翻译组鼓励成员向官方申请提交权限,自行提交翻译。

五、依赖包升级

blender_docs文件夹下有一个requirements.txt文件,其中列出了python依赖包和版本清单,打开后,内容如下:

Sphinx==1.6.2
sphinx-intl==0.9.9
sphinx_rtd_theme==0.2.5b1

svn update后,该文件有更新的情况下,建议升级依赖包。

requirements.txt change Log

升级方法有以下两种:

1. 命令行升级

打开命令行窗口,输入:
pip install --upgrade Sphinx sphinx-intl sphinx_rtd_theme
回车,即可在线升级依赖包。

2. 脚本升级所有python包

新建一个文本文件,打开并添加内容如下:

import pip
from subprocess import call
 
for dist in pip.get_installed_distributions():
    call("pip install --upgrade " + dist.project_name, shell=True)

改名为upgrade.py,双击运行该脚本,即可一次升级电脑内安装的所有python包。

期待看完本文的你可以参与到Blender中文手册翻译工作中来。

注:本文所有操作适用于Windows系统,linux与macos系统具体操作稍有差异,可自行摸索或参考官方手册

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容