翻译项目#
翻译组织#
Weblate 将项目/部件的可翻译版本控制系统内容组织成树状结构。你还可以使用类别来组织项目内的部件。
底层对象是 项目配置,该项目配置应将所有翻译归在一起(例如,多个版本的应用程序翻译和/或随附的文档)。
你可以选择通过 :ref:`category`创建该中间级别。可以嵌套类别来实现更复杂的结构。
在上面的级别上,即 部件配置,实际上是要翻译的部件,您定义要使用的版本控制系统仓库以及要翻译的文件掩码。
在 部件配置 上方有单独的翻译,当版本控制系统仓库中出现翻译文件(与 部件配置 中定义的 文件掩码 匹配)时,Weblate 会自动处理这些翻译。
Weblate 支持 Translate Toolkit 支持的多种翻译格式(双语和单语),请参阅 支持的文件格式。
备注
您可以使用 Weblate 内部网址 共享克隆的版本控制系统仓库。当您有许多共享同一版本控制系统的部件时,强烈推荐使用此功能。它提高了性能并减少了所需的磁盘空间。
添加翻译项目和部件#
根据你的权限,可以创建新的翻译项目和部件。具备 Add new projects 权限的用户总是可以这么做。如果你的实例使用付费托管(如 https://hosted.weblate.org/,请参见 账单),你还可以从管理账单的用户账户基于套餐限额创建它们。
提示
要授予每名用户创建新项目的权限,请为 Project creators 团队创建新的 自动团队分配。
您可以在单独的页面上查看当前的付费套餐:

您可以从此处开始创建项目,也可以使用导航栏中的菜单来填写翻译项目的基本信息以完成添加:

创建项目后,您将直接进入项目页面:

只需单击一次即可启动创建新翻译部件的操作。创建部件的过程是多阶段的,并自动检测大多数翻译参数。有几种创建部件的方法:
- 从版本控制
从远程版本控制仓库创建部件。
- 从现有部件
通过选择不同的文件为现有部件创建其他部件。
- 其他分支
仅针对不同分支,为现有部件创建其他部件。
- 上传翻译文件
如果您没有版本控制或不想将其与 Weblate 集成,则将翻译文件上传到 Weblate。您以后可以使用网络界面或 Weblate 的 REST API 更新内容。
- 翻译文档
上传单个文档或翻译文件并进行翻译。
- 从头开始
创建空白翻译项目并手动添加字符串。
一旦有了现有的翻译部件,就可以使用同一仓库轻松地为其他文件或分支添加新的部件。
首先,您需要填写名称和仓库位置:

在下一页上,将显示已发现的可翻译资源的列表:

最后,您检查翻译部件信息并填写可选详细信息:

参见
项目配置#
创建一个翻译项目,然后在其中添加一个新的翻译部件。这个项目就像一个架子,里面堆放着真正的翻译。同一项目中的所有部件共享建议及其字典;翻译也将自动传播到单个项目中的所有部件(除非在部件配置中关闭),请参见 翻译记忆库。
参见
这些基本属性被新建并通知翻译人员项目:
项目名称#
详细的项目名称,用于显示项目名称。
URL 标识串#
适用于 URL 的项目名称。
项目网站#
译者可以在其中找到有关该项目的更多信息的 URL。
这是一个必须的参数,除非通过 :setting:`WEBSITE_REQUIRED`关闭。
翻译说明#
描述项目中的本地化过程的文本,以及任何其他对翻译人员有用的信息。Markdown可用于文本格式化或插入链接。
设置 “Language-Team” 标头#
Weblate 是否应该管理 Language-Team
标头(目前这是一个 GNU gettext PO (Portable Object) 独占功能)。
访问控制#
配置每个项目的访问控制,请参阅 项目访问控制 以获取更多详细信息。
可以通过 DEFAULT_ACCESS_CONTROL
更改默认值。
启用审校#
允许复核翻译的工作流程,请参见 专门的审校员。
参见
启用原文审校#
允许复核源字符串的工作流程,请参见 源字符串复查。
启用钩子#
是否将未经身份验证的 通知钩子 用于此仓库。
语言别名#
将翻译导入到Weblate时定义语言代码映射。当您的仓库中的语言代码不一致,并且您希望在Weblate中获得一致的视图,或者如果您想使用翻译文件的非标准命名时,可以使用此方法。
典型的使用情况会是将 美国英语映射到英语:en_US:en
由逗号分隔的多个映射:en_GB:en,en_US:en
使用非标准代码:ia_FOO:ia
提示
当匹配翻译文件时映射语言代码,并且映射是大小写敏感的,所以您确保使用与文件名中使用的形式相同的源语言代码。
部件配置#
部件是用于翻译的内容的分组。您输入版本控制系统仓库位置和想要翻译那个文件的掩码,Weblate 会自动地从 这个版本控制系统中取回,并找到所有匹配的翻译文件。
参见
您可以在 支持的文件格式 中找到一些典型配置的示例。
备注
建议将翻译部件保持在合理的规模——将翻译分成对你有意义的部分(单个应用程序或附加组件、书籍章节或网站)。
Weblate 可以轻松处理有 10000 多条字符串的翻译,但对于如此庞大的翻译部件,译者之间的分工和协调更为困难。
如果翻译的语言定义丢失,会新建一个空的定义,并且命名为 “cs_CZ (generated)”。您应该调整定义,并将其反馈给 Weblate 的作者,从而丢失的语言可以包括在下一次的发布版本中。
使用版本控制系统工作的所有重要参数都包含在部件中,并且从中取出翻译:
部件名称#
冗长部件名称,用于显示部件的名称。
部件标识串#
适用于 URL 的部件名称。
部件项目#
部件所属的 项目配置。
版本控制系统#
使用的版本控制系统,细节请参见: 版本控制集成。
源代码仓库#
版本控制系统仓库,用于拉取更改。
参见
指定 URL 的更多细节请参见 访问仓库。
提示
这可以是真实的版本控制系统的 URL,也可以是 weblate://project/component
,表示与其它部件共享该仓库。更多细节请参见 Weblate 内部网址。
仓库推送 URL#
用于推送的仓库 URL,其行为取决于 版本控制系统。更多详细信息见 推送 Weblate 的更改。
对于链接的仓库,这一点不被使用,链接部件的设置适用。
参见
关于如何指定仓库 URL 的更多细节请见 访问仓库,并且关于从 Weblate 推送更改的更多细节,请参见 推送 Weblate 的更改。
仓库浏览器#
用于显示源文件(所用消息的位置)的仓库浏览器的 URL。此处为空时,将不生成这样的链接。你可以使用 模板标记。
例如在 GitHub 上,使用类似:https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename}}#L{{line}}
如果你的路径是相对于不同文件夹的(路径包含 ..
),您可能想使用 parentdir
过滤器(见 模板标记)来剥除前导文件夹:https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename|parentdir}}#L{{line}}
已导出仓库 URL#
由 Weblate 进行的更改被导出的 URL。当不使用 持续本地化 时,或者当需要手动合并更改时,这是重要的。您可以为 Git 仓库使用 Git 导出器,来将其自动化。
仓库分支#
从版本控制系统核实哪个分支,以及从哪里寻找翻译。
对于链接的仓库,这一点不被使用,链接部件的设置适用。
推送分支#
用于推送更改的分支,留空则使用 仓库分支。
对于链接的仓库,这一点不被使用,链接部件的设置适用。
备注
此功能目前只支持 Git、GitLab 和 GitHub,不支持其他版本控制系统集成。
文件掩码#
要翻译的文件的掩码,包括路径。它应包含一个“*”替换语言代码(有关处理方式的信息,请参阅 语言定义)。如果您的仓库包含多个翻译文件(例如,多个 gettext 域),则您需要为每个文件创建一个部件。
例如 po/*.po
或 locale/*/LC_MESSAGES/django.po
。
如果文件名包含特殊字符(例如 [
或 ]
),则需要将这些特殊字符转义为 [[]
或 []]
。
截屏文件掩码#
此功能使用 VCS 仓库路径通过截屏文件掩码来发现和更新截屏。此功能运行在组件级别且必须使用星号“*”来替换截屏文件名。
允许的格式是 WebP、JPEG、PNG、APNG 和 GIF。
备注:
文件掩码和截屏文件掩码并不相关,请分别配置它们。
需要手动将部件中发现的截屏链接到特定的翻译密钥。
例如:
让我们假定你的 VCS 仓库有一个类似这样的结构:
component_A
└── docs
├── image1.png
└── image2.jpg
对于 A 部件,你想允许 PNG 截屏发现和更新。你会把 A 部件的截屏文件掩码设置为 component_A/docs/*.png
。这表示部件 A 中 doc 目录下的任意 PNG 格式图片可被发现并更新。因此,若你想更新 image1.png
,你提供的新截屏应当命名为 image1.png
来匹配现有的 filename
,并保存在 component_A/docs/
下。
单语言译文模版语言文件#
包含字符串定义的译文模板文件,用于 单语言部件。
编辑译文模版文件#
是否允许编辑 :ref:`component-template`中的字符串。
中间语言文件#
对于 单语言部件 的单一语言文件。在多数情况下,这是开发者提供的翻译文件,并且在新建真正的源字符串时使用。
设置好后,源字符串将基于此文件,但所有其他语言都基于 单语言译文模版语言文件。如果字符串没有被翻译成源语言,则禁止翻译成其他语言。这样就提供了 源字符串质量把关。
新语种的翻译模版#
用于生成新翻译的翻译模板文件。
对于多数单语言格式,请将此字段留空。这些格式通常可以从一个空白文件开始。
GNU gettext PO 文件选择
.pot
文件。选择没有译文的空白文件,如果你有的话。
对于需要存在完整密钥集的单语言格式,请选择 单语言译文模版语言文件。
文档翻译选择 单语言译文模版语言文件。
其他格式选择任意翻译文件。
多数情况下,模板文件可以和基础文件相同。
提示
在很多单语言格式中,Weblate 默认以空文件开始。新建新的翻译时,在您想要所有的字符串都以空值出现的情况下来使用。
文件格式#
翻译文件格式,还请参见 支持的文件格式。
源字符串缺陷报告地址#
用于报告上游缺陷的电子邮箱地址。这个地址还会收到在 Weblate 中作出的任何源字符串评论的通知。
对于 :ref:`gettext`格式,此地址同样由 Weblate 保存在该文件的 :mailheader:`Report-Msgid-Bugs-To`标头内。
允许同步翻译#
您可以关闭项目内从其它部件到这个部件的翻译的传播。这实际上取决于您要翻译的内容,有时最好能多次使用同一个翻译。
对于单语言翻译,除非您跨越整个项目中使用相同的 ID,通常关闭它是个好主意。
可以通过 DEFAULT_TRANSLATION_PROPAGATION
更改默认值。
参见
启用建议#
对于这个部件,建议的翻译是否被接受。
参见
建议投票#
为建议打开投票,请参见 建议投票。
参见
自动接受建议#
自动接收被投票的建议,请参见 建议投票。
参见
翻译标记#
质量检查和其他 Weblate 行为的定制,请参见 使用标记定制行为。
强制检查#
检查哪个不能被忽视的列表,请参见 强制检查。
翻译许可证#
翻译的许可(不需要与源代码的许可证相同)。
贡献者协议#
翻译此部件前需先同意的用户协议。
添加新语种#
如何处理创建新语言的请求。可用选项:
- 联系维护者
用户可以选择所需的语言,项目维护者将收到相关通知。由项目维护者来决定是否将该语言添加到仓库中。
- 指向翻译指引 URL
用户会看到一个链接,该链接指向的页面描述了开始新翻译的过程。如果需要更正式的过程(例如在开始实际翻译之前组建一个团队),请使用此选项。
- 为新语言创建翻译文档
用户可以选择语言,Weblate 会自动为其创建文件,然后就可以开始翻译了。
- 禁用添加新语种
用户将无法开始新的翻译。
提示
项目管理员可以添加新的翻译,即使这里是禁用的,只要有可能(要么:新语种的翻译模版,要么文件格式支持从一个空文件开始)。
管理字符串#
在 4.5 版本加入.
配置Weblate中的用户是否被允许添加新字符串和删除现有字符串。调整这一点以配合你的本地化工作流程–新字符串应该如何被引入。
对于双语格式,字符串通常是从源代码中提取的(例如通过使用 xgettext),在Weblate中添加新的字符串应该被禁用(下次更新翻译文件时,它们会被丢弃)。在Weblate中,你可以为每个翻译管理字符串,但它并不强制要求所有翻译中的字符串都是一致的。
对于单语格式,字符串只在源语言上管理,并在翻译中自动添加或删除。一旦翻译完毕,这些字符串就会出现在翻译文件中。
提示
对于单语言格式,你可能想要同时打开 component-edit_template`和 :guilabel:`Manage strings。
语言代码风格#
自定义 Weblate 创建的用于生成翻译文件名的语言代码。
备注
Weblate 在解析翻译文件时能识别其中的语言代码,以下设置只影响新文件的创建方式。
- 基于文件格式的默认值
取决于文件格式,其中大多数文件格式用的是 POSIX 风格。
- POSIX 风格,使用下划线作为分隔符
通常由 gettext 和相关工具使用,生成像
pt_BR
这样的语言代码。- POSIX 风格,使用下划线作为分隔符,包括国家地区代码
POSIX 风格的语言代码,包含国家地区代码,即使没有必要(例如
cs_CZ
)。- POSIX 风格,使用下划线作为分隔符,包括国家地区代码(小写)
POSIX 风格的语言代码,包含小写的国家地区代码,即使没有必要(例如
cs_cz
)。- BCP 风格,使用连字符作为分隔符
通常用于网络平台,生成像
pt-BR
这样的语言代码。- BCP 风格,使用连字符作为分隔符,包含国家地区代码
BCP 风格的语言代码,包含国家地区代码,即使没有必要(例如
cs-CZ
)。- BCP 风格,使用连字符作为分隔符,旧式语言代码
对中文和 BCP 样式符号使用旧代码。
- BCP 样式,使用连字符作为分隔符,小写
BCP 样式表示法,全部为小写(例如
cs-cz
)。- Apple 应用商店元数据样式
适用于将元数据上传到 Apple 应用商店的样式。
- Google Play 元数据样式
适用于将元数据上传到 Google Play 应用商店的样式。
- Android 风格
只在 Android 应用中使用,生成
pt-rBR
这样的语言代码。- Linux 风格
Linux 使用的语言环境,使用中文和 POSIX 样式符号的遗留代码。
合并方式#
你可以配置如何处理来自上游仓库的更新。实际部署取决于版本控制系统,见 版本控制集成。
- 变基
在更新时,将Weblate的提交重新放在上游仓库之上。这提供了干净的历史,没有额外的合并提交。
在复杂融合的情况下,变基可能使你产生麻烦,因此请仔细考虑是否允许它们。
你可能需要通过选择 :ref:`vcs-git-force-push`作为 :ref:`component-vcs`来启用强制推送,特别是在推送到不同的分支时。
- 合并
上游仓库更改合并到 Weblate 之一。此设置尽可能使用快进。这是最安全的方式,但可能会产生大量合并提交。
- 不快进合并
上游仓库的修改会被合并到Weblate仓库中,每次都要做一次合并提交(即使是在可以快进的时候)。每一个Weblate的修改都会在Weblate仓库中显示为合并提交。
可以通过 DEFAULT_MERGE_STYLE
更改默认值。
提交、添加、删除、合并、附加组件及合并请求说明#
在提交翻译时使用的说明,请参见 模板标记。
可以通过 DEFAULT_ADD_MESSAGE
、DEFAULT_ADDON_MESSAGE
、DEFAULT_COMMIT_MESSAGE
、DEFAULT_DELETE_MESSAGE
、DEFAULT_MERGE_MESSAGE
、DEFAULT_PULL_MESSAGE
更改默认值。
提交时推送#
是否提交更改应该被自动推送到上游仓库。当允许时,一旦 Weblate 将更改提交给基础仓库,推动就被启动(请参见 惰性提交)。为了真正允许推送,还要配置 Repository push URL。
对更改进行提交的延时时间#
设置在后台任务或 commit_pending
管理命令提交更改前,这些更改存在的时长(以小时为单位)。一旦存在至少一个比该时长更旧的更改,便会提交部件中的所有更改。
可以通过 COMMIT_PENDING_HOURS
更改默认值。
提示
还有一些情况下,待定的修改可能会被提交,见 惰性提交。
出错时锁定#
在第一次推送或合并到上游仓库失败后,锁定该部件(及其链接部件,参见 Weblate 内部网址),或从上游仓库拉出。这样可以避免增加必须手动解决的冲突。
一旦仓库没有故障留下来了,部件将会自动解锁。
源语言#
用于源字符串的语言。如果您要翻译的不是英语,请更改此选项。
提示
如果你正在从英语翻译双语文件,但又希望能够在英语翻译中进行修复,选择 English (Developer) 作为一种源语言以避免源语言和现有翻译之间名称上的冲突。
对于单语言翻译,您可以使用这种情况下的中间翻译,请参见 中间语言文件。
语言筛选#
当扫描文件掩码时用于将翻译过滤的正则表达式。它可以用于限制 Weblate 管理的语言列表。
备注
单出现在文件名中时,您需要列出语言代码。
过滤的一些示例:
过滤器的描述 |
正则表达式 |
---|---|
只有选择的语言 |
|
排除语言 |
|
只筛选两个字母的代码 |
|
排除非语言文件 |
|
包括所有文件(默认) |
|
正则表达式变体#
用于确定字符串变体的正则表达式,请见 字符串变体。
备注
多数字段可以由项目所有者或管理员在 Weblate 界面上编辑。
优先级#
高优先级的部件将最先提供给译者。
在 4.15 版本发生变更: 这同样影响匹配的术语表术语的顺序。
受限制的访问#
备注
此功能在 Hosted Weblate 上不可用。
部件默认对访问项目的任何人都可见,即使不能在部件中进行任何更改。这会容易地使翻译在项目内保持一致。
在部件或部件列表级别限制访问,会接管对部件的访问权限,而不考虑项目层面的权限。你必须明确地授予它访问权。这可以通过授予一个新的用户组并将用户放入其中,或者使用默认的 自定义 或 私有 访问控制组来实现。
默认设置可在 DEFAULT_RESTRICTED_COMPONENT
中更改。
提示
这也应用于项目管理员—请确认切换状态后,您不会丢失对部件的访问。
用作术语表#
在 4.5 版本加入.
允许将此部件用作术语表。您可以用 术语表颜色 配置它的列出方式。
术语表将可以在所有由 :ref:`component-links`定义的项目中访问。
建议在术语表上启用 管理字符串,以允许添加新词。
参见
术语表颜色#
显示术语表的颜色,在显示单词匹配时使用。
分类#
分类的作用是赋予项目内部件以结构。你可以嵌套它们来实现更复杂的结构。
模板标记#
Weblate 在几个需要进行文本渲染的地方使用了简单的标记语言。它基于 The Django template language,所以它可以非常强大。
当前它用在:
在部件模板中,有以下变量可用:
{{ language_code }}
语言代码
{{ language_name }}
语言名称
{{ component_name }}
部件名称
{{ component_slug }}
部件标识串
{{ project_name }}
项目名称
{{ project_slug }}
项目标识串
{{ url }}
翻译 URL
{{ filename }}
翻译文件名
{{ stats }}
翻译统计数据,这具有进一步的属性,示例如下。
{{ stats.all }}
字符串总量计数
{{ stats.fuzzy }}
需要复查的字符串计数
{{ stats.fuzzy_percent }}
需要复查的字符串百分比
{{ stats.translated }}
已翻译的字符串计数
{{ stats.translated_percent }}
已翻译的字符串百分比
{{ stats.allchecks }}
带有未通过检查的字符串数量
{{ stats.allchecks_percent }}
带有未通过检查的字符串百分比
{{ author }}
当前提交的作者,只在提交范围可用。
{{ addon_name }}
当前执行的附加组件名称,旨在附加组件提交说明中可用。
后面的变量在仓库浏览器或编辑器模板中可用:
{{branch}}
当前的分支
{{line}}
文件的行数
{{filename}}
文件名,您也可以使用
parentdir
过滤器,例如{{filename|parentdir}}
,来剥除前导部分
提示
某些地方可能有额外的变量可用,见 部件发现。
您可以将它们与过滤器结合:
{{ component|title }}
您可以使用条件:
{% if stats.translated_percent > 80 %}Well translated!{% endif %}
有另外的标签用于替换字符:
{% replace component "-" " " %}
您可以将它与过滤器结合:
{% replace component|capfirst "-" " " %}
还有另外的过滤器来操作文件名:
Directory of a file: {{ filename|dirname }}
File without extension: {{ filename|stripext }}
File in parent dir: {{ filename|parentdir }}
It can be used multiple times: {{ filename|parentdir|parentdir }}
……以及其他 Django 模板特性。
导入速度#
从版本控制系统仓库获取并将翻译导入 Weblate 可能会是漫长的过程,具体取决于您的翻译的大小。以下是一些提示:
优化配置#
默认配置对于测试和调试 Weblate 很有用。而对于生产设置,您应该做一些调整。许多调整对性能有相当大的影响。请查阅 生产设置 了解详情,特别是:
配置 Celery 来执行后台任务(请参见 使用 Celery 的后台任务)
检查资源的限制#
如果导入巨大的翻译或仓库,您会遭到服务器资源限制的打击。
检查空闲内存的量,通过操作系统来缓存翻译,将极大地提高性能。
如果有很多字符串需要处理的话,磁盘操作会是瓶颈——磁盘被 Weblate 和数据库施加压力。
另外的 CPU 核心会帮助提高后台任务的性能(请参见 使用 Celery 的后台任务)。
禁止不必要的检查#
一些质量检查可能相当昂贵,如果不需要,在导入时省略可以节省一些时间。配置的信息请参见 CHECK_LIST
。
自动新建部件#
在您的项目有十多个翻译文件的情况下(例如不同的 gettext 域,或 Android 应用的一部分),您会想要将它们自动导入。可以通过使用 import_project
或 import_json
,或者通过安装 部件发现 附加组件,通过命令行来实现。
要使用附加组件,首先您需要为一个翻译文件(选择未来最不可能改名或删除的那个)创建一个部件,然后在该部件上安装附加组件。
对于管理命令,您需要新建包含所有部件的项目,然后运行 import_project
或 import_json
。