与 Weblate 集成¶
Weblate 基础知识¶
项目和部件架构¶
在 Weblate 中,翻译被组织成项目和部件。每个项目可以包含多个部件,这些部件又包含各个语言的翻译。部件对应的是一个可翻译的文件(例如 GNU gettext PO (Portable Object) 或 Android 字符串资源)。项目可以帮助您将部件组织成逻辑集合(例如,将一个应用中用到的所有翻译集合在一起)。
另外,可使用分类来组织项目内部件。部件可贵属于一个分类,且多个分类可被嵌套。
默认情况下,每个项目内都有对跨部件传播的公共字符串的翻译。这减轻了重复和多版本翻译的负担。但假如翻译应当有所不同,可以使用 允许同步翻译 通过 部件配置 禁用翻译传播。
仓库集成¶
Weblate 被构建为和上游版本控制仓库集成,持续本地化 描述了构建块以及更改如何在两者间流动。
参见
架构概览 描述了 Weblate 内部运行方式。
用户归因¶
Weblate 使用名字和电子邮箱在版本控制仓库中保留由译者恰当翻译的译文。将真实电子邮箱附加到提交遵循分布式版本控制精神并允许类似 GitHub 这样的服务将你在 Weblate 中的贡献关联到你的 GitHub 账户。
不过,此功能也会带来风险,公布在版本控制提交中的电子邮箱可能会被滥用。此外,一旦这样的提交公布在公开的代码托管平台(比如 GitHub),那么事实上便没有办法把它去掉。为了避免这种情况,Weblate 允许在 :ref:`profile-account`中选择一个私密的提交邮箱。
因此,管理员在配置 Weblate 时应当考虑到这一点:
应在服务条款中对电子邮箱的这种使用进行清晰描述,如果这样的文档是必需的。法律声明 可以提供帮助。
PRIVATE_COMMIT_EMAIL_OPT_IN
可以让电子邮箱默认处于私密状态。
Importing a localization project into Weblate¶
Weblate has been developed with VCS integration in mind as it’s core feature, so the easiest way is to grant Weblate the access to your repository. The import process will guide you through configuring your translations into Weblate components.
Alternatively, you can let Weblate set up a local-only repository containing all the translations without integration.
从 Weblate 获取更新的翻译¶
Weblate stores updated strings in a database and commits them to a local version-control repository. You can add a Weblate repository (when Git 导出器 is turned on) as an additional remote repository and fetch translation updates from it.
Prior to this, you might want to commit any pending local changes made in Weblate (see 惰性提交). This can be done from the user interface (in the Repository maintenance), or from the command-line using Weblate 客户端.
如果你向 Weblate 授予了仓库的推送权限,并配置了 部件配置 中的 仓库推送 URL,此操作可以自动进行。见 推送 Weblate 的更改。
Alternatively, use Weblate 的 REST API to update translations so that they match the latest version from the upstream in your remote VCS repository.
参见
将远程更改获取到 Weblate¶
To fetch any strings recently updated in your remote VCS repository into Weblate, allow Weblate to pull from the upstream repository. This can be achieved in the user interface (in the Repository maintenance), or from the command-line using Weblate 客户端.
This can be automated by setting a webhook in your repository to trigger Weblate whenever there is a new commit. See 更新仓库 for more details.
If not using VCS integration, you can use the UI or Weblate 的 REST API to update the translations so that they match your codebase.
添加新字符串¶
如您的翻译文件与代码一起存储在一个远程版本控制系统中,您很可能有一个现有的工作流供开发人员引入新的字符串。任何添加字符串的方法都将被采用,但请考虑使用 源字符串质量把关 以避免引入错误。
当翻译文件与代码分离时,可以通过以下方法将新字符串引入 Weblate。
Manually, using Add new translation string from Tools menu in the source language. You can choose between the radio buttons Singular and Plural inside the form. Select the appropriate form of the new translation string to be added.
通过编程,使用 API
POST /api/translations/(string:project)/(string:component)/(string:language)/units/
.通过上传源文件 替换现有翻译文件 (这将覆盖现有的字符串,所以请确保文件包括新旧字符串)或 添加新字符串,请参见 导入方式。
备注
在 Weblate 中添加字符串需要 管理字符串。
Updating target-language files¶
For monolingual files (see 支持的文件格式), Weblate might add new translation strings present in the 单语言译文模版语言文件, and not in actual translations. It does not however perform any automatic cleanup of stale strings, as that might have unexpected results. If you still want to do this, please install the 清理翻译文件 add-on, which handles cleanup according to your requirements.
Weblate will also not try to update bilingual files when the source changes,
so if you need po
files to be updated from pot
, do it yourself by
using Update source strings 导入方式, or by using
the 更新 PO 文件以匹配 POT 文件 (msgmerge) add-on.
提示
Source string extraction tools, such as xgettext or lupdate, need to be executed outside of Weblate.
引入新字符串¶
你可以在 管理字符串 开启时在 Weblate 中添加新字符串,但通常来说更好的做法是引入新字符串的同时,一并引入相应的代码更改。
Monolingual formats need to be configured so that new strings are added to 单语言译文模版语言文件. This is typically done by developers, as they write the code. You might want to use a review process of those strings using 源字符串质量把关.
双语言格式通常使用某些工具(比如 xgettext 或 intltool-update)从源代码中提取字符串。具体操作方法请参考你的本地化框架文档。一旦字符串被提取,可能需要额外步骤来更新现有的翻译,见 Updating target-language files。
提示
自动提取字符串功能目前不在 Weblate 考虑范围内。它通常涉及到执行不受信任的代码,这一点使该功能相对本地化平台而言,更适合通用的持续化代码集成服务。
你可能想把这个整合到你的持续化集成管道中让新的待翻译字符串自动出现。这样的管道也应覆盖 避免合并冲突。
Managing the local VCS repository¶
Weblate stores all translations in its underlying version control repository. It is suggested to be connected to a remote one, but internal-only setup is also possible. The Repository maintenance allows controlling this repository.
提示
With 持续本地化, any changes are automatically pushed from the repository, so there is usually no need to manually manage it manually.