翻译项目

翻译组织

项目/组件的可翻译的版本控制系统(VCS )内容,由 Weblate 组织成树状结构。

  • 底层对象是 项目配置,该项目配置应将所有翻译归在一起(例如,多个版本的应用程序翻译和/或随附的文档)。

  • 在上面的级别上,:ref:`component`(实际上是要翻译的组件),您定义要使用的版本控制系统(VCS )仓库以及要翻译的文件的掩码。

  • 组件配置 上方,有单独的翻译,当版本控制系统(VCS )仓库中出现翻译文件(与 组件配置 中定义的 :ref:`component-filemask`匹配)时,Weblate 会自动处理这些翻译。

Weblate 支持 Translate Toolkit 支持的多种翻译格式(双语和单语),请参阅 支持的文件格式

注解

您可以使用 Weblate internal URLs 共享克隆的版本控制系统(VCS )仓库。当您有许多共享同一版本控制系统(VCS )的组件时,强烈推荐使用此功能。它提高了性能并减少了所需的磁盘空间。

添加翻译项目和组件

在 3.2 版更改: 已包含用于添加项目和组件的界面,您不再需要使用 Django 管理界面

在 3.4 版更改: 现在,添加组件的过程是多阶段的,可以自动发现大多数参数。

根据你的权限,新的翻译项目和组件可以被创建。具备 :guilabel:`Add new projects`权限的用户总是可以这么做。如果使用付费托管,你还可以从管理账单的用户账户基于套餐限额创建它们。

您可以在单独的页面上查看当前的结算方案:

../_images/user-billing.png

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

../_images/user-add-project.png

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

../_images/user-add-project-done.png

只需单击一次即可启动创建新翻译组件的操作。创建组件的过程是多阶段的,并自动检测大多数翻译参数。有几种创建组件的方法:

从版本控制

从远程版本控制仓库创建组件。

从现有组件

通过选择不同的文件为现有组件创建其他组件。

其他分支

仅针对不同分支,为现有组件创建其他组件。

上传翻译文件

如果您没有版本控制或不想将其与 Weblate 集成,则将翻译文件上传到 Weblate。您以后可以使用网络界面或 Weblate 的 REST API 更新内容。

翻译文档

上传单个文档或翻译文件并进行翻译。

从头开始

创建空白翻译项目并手动添加字符串。

一旦有了现有的翻译组件,就可以使用同一仓库轻松地为其他文件或分支添加新的组件。

首先,您需要填写名称和仓库位置:

../_images/user-add-component-init.png

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

../_images/user-add-component-discovery.png

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

../_images/user-add-component.png

项目配置

创建一个翻译项目,然后在其中添加一个新的翻译组件。这个项目就像一个架子,里面堆放着真正的翻译。同一项目中的所有组件共享建议及其字典;翻译也将自动传播到单个项目中的所有组件(除非在组件配置中关闭),请参见 翻译记忆库

这些基本属性被新建并通知翻译人员项目:

项目名称

详细的项目名称,用于显示项目名称。

URL slug

适用于 URL 的项目名称。

项目网站

译者可以在其中找到有关该项目的更多信息的 URL。

This is a required parameter unless turned off by WEBSITE_REQUIRED.

翻译说明

Text describing localization process in the project, and any other information useful for translators. Markdown can be used for text formatting or inserting links.

设置 “Language-Team” 文件头

Weblate 是否应管理 Language-Team 头(目前这是仅 GNU gettext 功能)。

使用共享的翻译记忆库

是否使用共享翻译记忆库,有关更多详细信息,请参见 共享翻译记忆库

默认值取决于 DEFAULT_SHARED_TM

贡献到共享的翻译记忆库

是否贡献到共享翻译记忆库,请参阅 共享翻译记忆库 以获取更多详细信息。

默认值取决于 DEFAULT_SHARED_TM

访问控制

配置每个项目的访问控制,请参阅 项目访问控制 以获取更多详细信息。

可以通过 DEFAULT_ACCESS_CONTROL 更改默认值。

启用复查

允许复核翻译的工作流程,请参见 专门的审核者

启用来源评论

允许复核源字符串的工作流程,请参见 源字符串复查

启用钩子

是否将未经身份验证的 通知钩子 用于此仓库。

语言别名

将翻译导入到Weblate时定义语言代码映射。当您的存储库中的语言代码不一致,并且您希望在Weblate中获得一致的视图,或者如果您想使用翻译文件的非标准命名时,可以使用此方法。

典型的使用情况会是将 美国英语映射到英语:en_US:en

由逗号分隔的多个映射:en_GB:en,en_US:en

使用非标准编码:ia_FOO:ia

提示

当匹配翻译文件时映射语言代码,并且映射是大小写敏感的,所以您确保使用与文件名中使用的形式相同的源语言代码。

组件配置

组件是用于翻译的内容的分组。您输入版本控制系统(VCS)仓库位置和想要翻译那个文件的掩码,Weblate 会自动地从 这个版本控制系统(VCS)中取回,并找到所有匹配的翻译文件。

您可以在 支持的文件格式 中找到一些典型配置的例子。

注解

推荐将翻译文件保持在合理的大小——在您的案例中使用任何合理的工具(独立的 app 或插件、书籍的章节或网站)来分割翻译文件。

Weblate 能够轻松处理 10000 个字符串,但大的翻译组件的分割工作和翻译者之间的协调更困难。

如果翻译的语言定义丢失,会新建一个空的定义,并且命名为 “cs_CZ (generated)”。您应该调整定义,并将其反馈给 Weblate 的作者,从而丢失的语言可以包括在下一次的发布版本中。

使用版本控制系统(VCS)工作的所有重要参数都包含在组件中,并且从中取出翻译:

组件名称

冗长组件名称,用于显示组件的名称。

组件标识串

适用于 URLs 的组件名称。

组件项目

组件所属的 项目配置

版本控制系统

使用的版本控制系统(VCS),细节请参见: 版本控制集成

源代码库

版本控制系统(VCS)仓库,用于拉取更改。

参见

指定 URLs 的更多细节请参见 Accessing repositories

提示

这可以或者是真实的版本控制系统(VCS)的 URL, 或者是 weblate://project/component,指示了仓库应该与其它组件分享。更多细节请参见 Weblate internal URLs

代码库推送 URL

用于推送的仓库 URL。这个设置用于 GitMercurial,并且当这个空白时推送支持为这些关闭。

参见

关于如何指定仓库 URL 的更多细节请见 Accessing repositories,并且关于从 Weblate 推送更改的更多细节,请参见 推送 Weblate 的更改

代码库浏览器

用于显示源文件(已使用消息的位置)仓库浏览器的的 URL。当空白时将不生成这样的连接。您可以使用 模板标记

例如在 GitHub 上,使用像:``https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename}}#L{{line}}``那样的一些东西

假如你的路径路径相对于不同文件夹 (路径包含 ..),您会想使用 parentdir filter (see 模板标记): https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename|parentdir}}#L{{line}},来剥除前导文件夹

已导出代码库 URL

由 Weblate 进行的更改被导出的 URL。当不使用 持续本地化集成 时,或者当需要手动合并更改时,这是重要的。您可以为 Git 仓库使用 Git 导出器,来将其自动化。

仓库分支

从版本控制系统(VCS)核实哪个分支,以及从哪里寻找翻译。

推送分支

用于推送更改的分支,留为空白来使用 仓库分支

注解

此功能目前只支持Git、GitLab和GitHub,无法在其他VCS集成中工作。

文件掩码

要翻译的文件的掩码,包括路径。它应包含一个“*”替换语言代码(有关处理方式的信息,请参阅 语言定义)。如果您的仓库包含多个翻译文件(例如,多个 gettext 域),则您需要为每个文件创建一个组件。

例如``po/.po`` 或 ``locale//LC_MESSAGES/django.po``。

如果文件名包含特殊字符(例如``[]``),则需要将这些特殊字符转义为 [[][]]

单语言译文模版语言文件

包含字符串定义的译文模板文件,用于 单语言组件

编辑译文模版文件

对于 单语言组件 是否允许编辑译文模板文件。

中间语言文件

对于 单语言组件 的单一语言文件。在多数情况下,这是开发者提供的翻译文件,并且在新建真正的源字符串时使用。

设置时,源字符串基于此文件,但所有其他语言都基于 单语言译文模版语言文件。如果字符串没有被翻译成源语言,则禁止翻译成其他语言。这提供了 Quality gateway for the source strings

新翻译的译文模版

用于生成新翻译的译文模板文件,例如 gettext 的 .pot 文件。

提示

在很多单语言格式中,Weblate 默认以空白文件开始。新建新的翻译时,在您想要所有的字符串都以空值出现的情况下来使用。

文件格式

翻译文件格式,还请参见 支持的文件格式

源字符串缺陷报告地址

用于汇报上游缺陷的电子邮箱地址。Weblate 中做出的任何字符串注释的通知,也由这个地址接收。

允许同步翻译

您可以关闭项目内从其它组件到这个组件的翻译的传播。这真正依赖于您在翻译的是什么,有时最好多次使用同一个翻译。

对于单语言翻译,除非您跨越整个项目中使用相同的 ID,通常关闭它是个好主意。

默认值可以通过 DEFAULT_TRANSLATION_PROPAGATION 来更改。

启用建议

对于这个组件,建议的翻译是否被接受。

建议投票

为建议打开投票,请参见 建议投票

自动接受建议

自动接收被投票的建议,请参见 建议投票

翻译标记

质量检查和其他 Weblate 行为的定制,请参见 使用标志定制行为

强制检查

检查哪个不能被忽视的列表,请参见 强制检查

注解

Enforcing the check does not automatically enable it, you still should enabled it using 使用标志定制行为 in 翻译标记 or 源字符串另外的信息.

翻译许可证

翻译的许可(不需要与源代码的许可相同)。

贡献者协议

翻译此内容前需同意的协议。

添加新翻译

如何处理创建新语言的请求。可用选项:

联系维护者

用户可以选择所需的语言,项目维护者将收到有关该语言的通知。由他们决定是否向仓库添加(或不添加)语言。

显示翻译介绍

向用户显示的页面链接描述了开始新翻译的过程。如果需要更正式的流程(例如,在开始实际翻译之前组成人员团队),请使用此选项。

创建新语言文件

用户可以选择语言,然后 Weblate 会自动为其新建文件并开始翻译。

禁用添加新翻译

用户将无法选择开始新的翻译。

提示

The project admins can add new translations even if it is disabled here when it is possible (either 新翻译的译文模版 or the file format supports starting from an empty file).

管理字符串

4.5 新版功能.

Configures whether users in Weblate will be allowed to add new strings and remove existing ones. Adjust this to match your localization workflow - how the new strings are supposed to be introduced.

For bilingual formats, the strings are typically extracted from the source code (for example by using xgettext) and adding new strings in Weblate should be disabled (they would be discarded next time you update the translation files). In Weblate you can manage strings for every translation and it does not enforce the strings in all translations to be consistent.

For monolingual formats, the strings are managed only on source language and are automatically added or removed in the translations. The strings appear in the translation files once they are translated.

语言代码风格

自定义 Weblate 创建的用于生成翻译文件名的语言代码。

合并方式

您可以配置如何处理上游仓库的升级。对于一些版本控制系统(VCS),这会不需要支持。更多细节请参见 结合或变基

默认值可以由 :setting:`DEFAULT_MERGE_STYLE`更改。

提交、添加、删除、合并以及插件消息

当提交翻译时使用的消息,请参见 模板标记

默认值可由 DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE, :setting:`DEFAULT_MERGE_MESSAGE`来更改。

提交时推送

是否提交更改应该被自动推送到上游仓库。当允许时,一旦 Weblate 将更改提交给基础仓库,推动就被启动(请参见 惰性提交)。为了真正允许推送,还要配置 Repository push URL

对变更进行提交的延时时间

设置在后台任务或 :djadmin:`commit_pending`管理命令提交更改前,这些更改存在的时长 (以小时为单位)。一旦存在至少一个比该时长更旧的更改,便会提交组件中的所有更改。

默认值可以由 COMMIT_PENDING_HOURS 更改。

提示

There are other situations where pending changes might be committed, see 惰性提交.

出错时锁定

锁定组件 (及关联的组件,见:ref:internal-urls ),触发条件是第一个失败的推送,合并到其上游存储库,或从中拉出。这样可以避免添加其他冲突,这些冲突必须手动解决。

一旦仓库没有故障留下来了,组件将会自动解锁。

源语言

用于源字符串的语言。如果您要翻译的不是英语,请更改此选项。

提示

如果你正在从英语翻译双语文件,但又希望能够在英语翻译中进行修复,选择 English (Developer) 作为一种源语言以避免源语言和现有翻译之间名称上的冲突。

对于单语言翻译,您可以使用这种情况下的中间翻译,请参见 中间语言文件

语言筛选

当扫描文件掩码时用于将翻译过滤的正则表达式。它可以用于限制 Weblate 管理的语言列表。

注解

单出现在文件名中时,您需要列出语言代码。

过滤的一些例子:

过滤器的描述

正则表达式

只有选择的语言

^(cs|de|es)$

排除的语言

^(?!(it|fr)$).+$

只筛选两个字母的代码

^..$

排除非语言文件

^(?!(blank)$).+$

包括所有文件(默认)

^[^.]+$

正则表达式变体

用于确定字符串变体的正则表达式,请见 字符串变量

注解

多数字段可以由项目所有者或管理者在 Weblate 界面上编辑。

优先权

高优先级的组件将最先提供给翻译者。

受限制的访问

组件默认对访问项目的任何人都可见,即使不能在组件中进行任何更改。这会容易地使翻译在项目内保持一致。

Restricting access at a component, or component-list level takes over access permission to a component, regardless of project-level permissions. You will have to grant access to it explicitly. This can be done through granting access to a new user group and putting users in it, or using the default custom or private access control groups.

默认设置可在 DEFAULT_RESTRICTED_COMPONENT 中更改。

提示

这也应用于项目管理员—请确认切换状态后,您不会丢失对组件的访问。

在项目中分享

可以选择组件可见的附加项目。这在分享不同项目间使用的库时是有用的。

注解

分享组件不更改其访问控制。这样做只是让它在浏览其它项目时可见。用户仍然需要访问实际组件的权限来浏览或翻译它。

用作一个术语

4.5 新版功能.

允许使用该组件作为术语表。您可以配置其列出方式,借助 术语颜色

The glossary will be accessible in all projects defined by 在项目中分享.

It is recommended to enable 管理字符串 on glossaries in order to allow adding new words to them.

参见

术语表

术语颜色

Display color for a glossary used when showing word matches.

模板标记

Weblate 在需要提供文本的几个地方使用简单的标记语言。它基于 Django 模板语言,因此能够非常强大。

当前它用在:

可以在组件模板中得到后面的变量:

{{ 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 模板特性。

导入速度

取回版本控制系统(VCS)仓库,并将翻译导入 Weblate,依赖于您的翻译的大小,这会是漫长的过程。这里是一些提示:

优化配置

对于测试并调试 Weblate,默认的配置是有用的,当用于生产设置时,您应该进行一些调整。它们中的很多都对形成具有巨大的冲击。特别是,更多细节请查看 生产设置

检查资源的限制

如果导入巨大的翻译或仓库,您会遭到服务器资源限制的打击。

  • 检查空闲内存的量,通过操作系统来缓存翻译,将极大地提高性能。

  • 如果有很多字符串需要处理的话,磁盘操作会是瓶颈——磁盘被 Weblate 和数据库施加压力。

  • 另外的 CPU 核心会帮助提高后台任务的性能(请参见 使用 Celery 的后台任务)。

禁止不必要的检查

一些质量检查可以使非常昂贵的,而如果不需要,在导入时省略可以节省一些时间。配置的信息请参见 CHECK_LIST

自动新建组件

在您的项目有十多个翻译文件的情况下(例如不同的 gettext 域,或安卓 App的几),您会想要将它们自动导入。可以通过使用 import_projectimport_json,或者通过安装 组件发现 插件,通过命令行来实现。

为了使用插件,首先您需要为一个翻译文件(选择未来最不可能改名或删除的那个)新建组件,并且在这个组件上安装插件。

对于管理命令,您需要新建包含所有组件的项目,然后运行 import_projectimport_json