附加组件¶
2.19 新版功能.
附加组件提供了自定义和自动化翻译工作流程的方法。管理员可以从每个相应翻译组件的 Manage ↓ :guilabel:`Addons`菜单添加和管理附加组件。
提示
您也可以使用:ref: ‘ API <addons-api> ‘、setting: ‘ DEFAULT_ADDONS ‘ 或 djadmin: ‘ install_addon ‘ 来配置插件。
内置附加组件¶
自动化翻译¶
3.9 新版功能.
- 附加组件 ID
weblate.autotranslate.autotranslate
- 配置
mode
自动翻译模式
filter_type
搜索筛选器
auto_source
自动翻译来源
component
组件
为项目打开对共享翻译记忆库的贡献,以访问其他组件。
engines
机器翻译引擎
threshold
匹配分数阈值
- 触发附加组件的事件
组件更新,每天
使用机器翻译或其他组件自动翻译字符串。
触发条件:
当组件中出现新字符串时。
每个组件每个月一次,可以使用:setting: ‘ BACKGROUND_TASKS ‘ 进行配置。
JavaScript本地化CDN¶
4.2 新版功能.
- 附加组件 ID
weblate.cdn.cdnjs
- 配置
threshold
翻译阈值
包含的翻译的阈值。
css_selector
CSS选择器
检测可本地化元素的CSS选择器。
cookie_name
语言cookie名称
存储语言选项的cookie的名称。
files
从HTML文件里提取字符串
用于解析可翻译字符串的当前存储库中的文件名或远程URLs的列表。
- 触发附加组件的事件
daily, repository post-commit, repository post-update
将译文发布到内容交付网络,以便在 JavaScript或 HTML 本地化中使用。
可以用于本地化静态 HTML 网页,或者在 JavaScript 代码中加载本地化文件。
为你的组件生成一个唯一的 URL,你可以将其包含在 HTML 页面中以本地化它们。详情见 使用 Weblate CDN 翻译 HTML 和 JavaScript。
移除空白字符串¶
4.4 新版功能.
- 附加组件 ID
weblate.cleanup.blank
- 配置
此附加组件无配置.
- 触发附加组件的事件
repository post-commit, repository post-update
从翻译文件中删除没有翻译的字符串.
使用此方法可以使翻译文件中不存在任何空字符串(例如,如果你的本地化库将它们显示为缺失,而不是退回到源字符串)。
清理翻译文件¶
- 附加组件 ID
weblate.cleanup.generic
- 配置
此附加组件无配置.
- 触发附加组件的事件
repository pre-commit, repository post-update
更新所有翻译文件以匹配单语言译文模版文件。对于大多数文件格式来说,这意味着移除译文模版文件中不再出现的旧翻译条目。
添加缺少的语言¶
- 附加组件 ID
weblate.consistency.languages
- 配置
此附加组件无配置.
- 触发附加组件的事件
每天,添加代码库后
确保对一个项目内所有组件使用一致的一组语言。
每隔24小时,和在 Weblate 中加入新语言时,会检查一次缺失的语言。
不像其他多数附加组件,这个附加组件影响整个项目。
提示
用 自动化翻译 自动翻译新添加的字符串。
组件发现¶
- 附加组件 ID
weblate.discovery.discovery
- 配置
match
用于匹配翻译文件的正则表达式
file_format
文件格式
name_template
自定义组件名称
base_file_template
指定单语种译文模版文件名
保持双语翻译文件空白。
new_base_template
为新的翻译条目指定译文模版文件
用于创建新翻译的文件名。对于 gettext 格式,请选择 .pot 文件。
language_regex
语言筛选
扫描文件掩码时用于筛选翻译文件的正则表达式。
copy_addons
把来自主组件的附加组件克隆到新创建的组件
remove
删除不存在文件的组件
confirm
我确认上述匹配是正确的
- 触发附加组件的事件
代码库更新后
根据版本控制系统中文件更改的情况来自动添加或删除项目的组件.
每次更新 VCS 时触发,在其他方面类似 :djadmin:`import_project`管理命令。通过这种方式,你可以在一个 VCS 中跟踪多个翻译组件。
该匹配是使用允许复杂配置的正则表达式完成的,但这样做需要一些知识。一些常见用例的例子可以在附加组件帮助部分找到。
一旦点击了 Save ,将显示匹配组件的预览,可以检查配置是否匹配于自己的需要:
提示
Component discovery add-on uses Weblate internal URLs. It’s a convenient way to share
VCS setup between multiple components. Linked components use the local repository of
the main component set up by filling weblate://project/main-component
into the 源代码库 field (in Manage ↓ Settings ↓
Version control system) of each respective component.
This saves time with configuration and system resources too.
参见
批量编辑¶
3.11 新版功能.
- 附加组件 ID
weblate.flags.bulk
- 配置
q
查询
state
要设置的状态
add_flags
要添加的翻译标记
remove_flags
要删除的翻译标记
add_labels
要添加的标签
remove_labels
要删除的标签
- 触发附加组件的事件
组件更新
批量编辑标记、标签或字符串状态。
要自动化标签操作,从搜索字符串 ``NOT has:label``入手,并添加标签直到所有字符串都有所需的标签为止。也可以完成 Weblate 元数据的其他自动化操作。
例子:
搜索条目 |
|
---|---|
要添加的标签 |
近期 |
搜索条目 |
|
---|---|
要添加的翻译标记 |
|
将未更改的译文标记为“需要编辑”¶
3.1 新版功能.
- 附加组件 ID
weblate.flags.same_edit
- 配置
此附加组件无配置.
- 触发附加组件的事件
unit post-create
每当从 VCS 导入新的可翻译字符串并与源字符串匹配时,就会在 Weblate 中标记为需要编辑。对于包含未翻译字符串的源字符串的文件格式尤其有用。
提示
您可能还想通过在:ref: ‘ component-check_flags ‘ 中添加“strict-same ” 标志来加强:ref: ‘ check-same ‘检查。
参见
将新的源字符串标记为“需要编辑”¶
- 附加组件 ID
weblate.flags.source_edit
- 配置
此附加组件无配置.
- 触发附加组件的事件
unit post-create
每当一个新的源字符串从版本控制系统( VCS )中导入时,它将在 Weblate 中被标记为需要编辑。这样就可以简单地筛选并编辑开发者编写的源字符串。
参见
将导入的新译文标记为“需要编辑”¶
- 附加组件 ID
weblate.flags.target_edit
- 配置
此附加组件无配置.
- 触发附加组件的事件
unit post-create
每当一个新的可翻译字符串从版本控制系统( VCS )中导入时,它将在 Weblate 中被标记为需要编辑。这样就可以简单地筛选并编辑开发者创建的翻译。
参见
统计数据生成器¶
- 附加组件 ID
weblate.generate.generate
- 配置
filename
所生成文件的名称
template
所生成文件的内容
- 触发附加组件的事件
代码库预提交
生成一个包含关于翻译状态详细信息的文件。
你可在文件名和内容中均使用一个 Django 模板,详细的标记描述见 模板标记。
例如为每个翻译产生一个摘要文件:
- 所生成文件的名称
locale/{{ language_code }}.json
- 内容
{ "language": "{{ language_code }}", "strings": "{{ stats.all }}", "translated": "{{ stats.translated }}", "last_changed": "{{ stats.last_changed }}", "last_author": "{{ stats.last_author }}", }
参见
假语言环境 (Pseudolocale)生成¶
- 附加组件 ID
weblate.generate.pseudolocale
- 配置
source
源字符串
target
目标翻译
prefix
字符串前缀
suffix
字符串后缀
- 触发附加组件的事件
组件更新,每天
通过向源字符串添加前缀和后缀自动生成翻译。
伪 locale 对于查找未准备好进行本地化的字符串很有用。这是通过修改所有可翻译的源字符串来实现的,使得在用伪 locale 语言运行应用程序时很容易发现未修改的字符串。
也可以查找其本地化对应项可能不适合布局的字符串。
提示
可以使用真正的语言进行检测,但在 Weblate 中有专用的假语言环境——en_XA 和 ar_XB。
提示
You can use this add-on to start translation to a new locale of an existing language or similar language. Once you add the translation to the component, follow to the add-on. Example: If you have fr and want to start fr_CA translation, simply set fr as the source, fr_CA as the target, and leave the prefix and suffix blank.
一旦您有新的翻译填重,请卸载插件,以防止 Weblate 更改复制后的翻译。
在注释中添加贡献信息¶
- 附加组件 ID
weblate.gettext.authors
- 配置
此附加组件无配置.
- 触发附加组件的事件
代码库预提交
更新 PO 文件头的注释部分,以包含贡献者姓名和贡献年份。
PO 文件头看上去是这样的:
# Michal Čihař <michal@cihar.com>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.
更新“配置文件”中的 ALL_LINGUAS 变量¶
- 附加组件 ID
weblate.gettext.configure
- 配置
此附加组件无配置.
- 触发附加组件的事件
添加代码库后,每天
当新的翻译添加时,更新 configure
、 configure.in
或任何 configure.ac
文件中的 ALL_LINGUAS 变量。
自定义 gettext 输出¶
- 附加组件 ID
weblate.gettext.customize
- 配置
width
自动换行
默认情况下 gettext 会在每行第 77 个字符处与换行符处换行。添加 –no-wrap 参数后,换行只在换行符处发生。
- 触发附加组件的事件
store post-load
允许自定义 gettext 的输出行为,例如是否启用自动换行。
提供了后面的选项:
在 77 个字符处和新一行时来换行
仅在换行符处折行
不换行
注解
默认情况下 gettext 会在每行第 77 个字符处与换行符处换行。添加 --no-wrap
参数后,换行只会在换行符处发生。
更新 LINGUAS 文件¶
- 附加组件 ID
weblate.gettext.linguas
- 配置
此附加组件无配置.
- 触发附加组件的事件
添加代码库后,每天
添加新的翻译时更新 LINGUAS 文件。
生成 MO 文件¶
- 附加组件 ID
weblate.gettext.mo
- 配置
path
生成的 MO 文件的路径
如未指定,将使用 PO 文件对应的位置。
- 触发附加组件的事件
代码库预提交
为每个变更的 PO 文件自动生成 MO 文件。
生成的 MO 文件的位置可以定制化,并且其字段使用 模板标记。
更新 PO 文件以匹配 POT 文件 (msgmerge)¶
- 附加组件 ID
weblate.gettext.msgmerge
- 配置
previous
保持已翻译字符串先前的 msgids
no_location
删除翻译字符串的位置
fuzzy
使用模糊匹配
- 触发附加组件的事件
代码库更新后
使用 msgmerge 来更新所有的 PO 文件(如 文件掩码 所配置),而与 POT 文件(如 新翻译的译文模版 所配置)匹配。
每当从上游存储库中提取新的更改时都会被触发。多数 msgmerge 命令行选项可通过附加组件配置进行设置。
压缩(Squash) Git 提交¶
- 附加组件 ID
weblate.git.squash
- 配置
squash
提交汇并
append_trailers
为压缩提交增加额外信息
额外信息是看起来类似于 RFC 822 电子邮件标头,位于提交消息的其他自由格式部分的末尾,例如 “Co-authored-by…’.。
commit_message
提交信息
将使用此提交消息代替来自压缩提交的组合提交消息。
- 触发附加组件的事件
代码库提交后
推送变更之前压缩(Squash) Git 提交。
以下模式之一中,Git提交可以在推送更改之前被压缩:
3.4 新版功能.
所有提交成一个
每种语言
每个文件
3.5 新版功能.
每位作者
原始提交信息保留,但其作者信息丢失,除非选择 Per author ,或者定制提交信息来包括它。
4.1 新版功能.
原始提交信息可选地由定制的提交信息覆盖。
预告(提交行像 Co-authored-by: …
)可选地从原始提交信息中去掉,并且添加在去掉的提交信息后面。这还可以为每一位翻译者产生适当的 Co-authored-by:
信誉。
自定义 JSON 输出¶
- 附加组件 ID
weblate.json.customize
- 配置
sort_keys
对 JSON 键值排序
indent
JSON 缩进
- 触发附加组件的事件
store post-load
允许调整 JSON 的输出行为,例如缩进或排序。
陈旧注释删除¶
3.7 新版功能.
- 附加组件 ID
weblate.removal.comments
- 配置
age
要保持的天数
- 触发附加组件的事件
每天
设置删除注释的时间。
这可以用于删除可能变得过时的陈旧注释。小心使用,因为陈旧的注释不意味着失去了重要性。
陈旧建议删除¶
3.7 新版功能.
- 附加组件 ID
weblate.removal.suggestions
- 配置
age
要保持的天数
votes
投票阈值
移除阈值。当投票被禁用时该项无效果。
- 触发附加组件的事件
每天
设置删除建议的时间。
此附加组件在与建议投票一道用来删除在给定的时间内没有得到足够的正面投票的建议方面非常有用。
更新 RESX 文件¶
3.9 新版功能.
- 附加组件 ID
weblate.resx.update
- 配置
此附加组件无配置.
- 触发附加组件的事件
代码库更新后
更新所有翻译文件以匹配上游单语言译文模版文件。未使用的字符串将被删除,新字符串将复制源字符串添加。
提示
如果只想删除陈旧的翻译键,那么使用 清理翻译文件。
自定义 YAML 输出¶
3.10.2 新版功能.
- 附加组件 ID
weblate.yaml.customize
- 配置
indent
YAML 缩进
width
自动换行
line_break
换行符
- 触发附加组件的事件
store post-load
允许调整 YAML 的输出,例如自定义缩进或自定义换行。
定制附加组件列表¶
附加组件列表由 WEBLATE_ADDONS
配置。要添加其他附加组件,只需在这个设置中包含绝对类名称即可。
从附加组件执行脚本¶
附加逐渐还可以用于执行外部脚本。这曾经集成在 Weblate 中,但现在必须写一些代码,将脚本包裹在附加组件中。
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
"""Example pre commit script."""
from django.utils.translation import gettext_lazy as _
from weblate.addons.events import EVENT_PRE_COMMIT
from weblate.addons.scripts import BaseScriptAddon
class ExamplePreAddon(BaseScriptAddon):
# Event used to trigger the script
events = (EVENT_PRE_COMMIT,)
# Name of the addon, has to be unique
name = "weblate.example.pre"
# Verbose name and long descrption
verbose = _("Execute script before commit")
description = _("This addon executes a script.")
# Script to execute
script = "/bin/true"
# File to add in commit (for pre commit event)
# does not have to be set
add_file = "po/{{ language_code }}.po"
安装方法请参见 定制的质量检查、插件和自动修复 。
对于任何给定的组件,当前路径设置为版本控制系统( VCS )仓库的根目录时,执行脚本。
此外,可以访问后面的环境参数:
- WL_VCS¶
使用的版本控制系统。
- WL_REPO¶
上游仓库 URL 。
- WL_PATH¶
版本控制系统( VCS )仓库的绝对路径。
- WL_BRANCH¶
2.11 新版功能.
当前组件配置的仓库分支。
- WL_FILEMASK¶
当前组件的Filemask。
- WL_TEMPLATE¶
单语言翻译模板的文件名(可以为空)。
- WL_NEW_BASE¶
2.14 新版功能.
建立新的翻译所使用文件的文件名(可以为空)。
- WL_FILE_FORMAT¶
用于当前组件的文件格式。
- WL_LANGUAGE¶
当前处理的翻译的语言(对于组件级别的钩子不可用)。
- WL_PREVIOUS_HEAD¶
更新后的上个 HEAD (仅在运行更新后钩子后可用)。
- WL_COMPONENT_SLUG¶
3.9 新版功能.
组件标识串用于构建 URL 。
- WL_PROJECT_SLUG¶
3.9 新版功能.
项目标识串用于构建 URL 。
- WL_COMPONENT_NAME¶
3.9 新版功能.
组件名称。
- WL_PROJECT_NAME¶
3.9 新版功能.
项目名称。
- WL_COMPONENT_URL¶
3.9 新版功能.
组件 URL 。
- WL_ENGAGE_URL¶
3.9 新版功能.
项目参与 URL 。
参见
更新后存储库处理¶
当 VCS 的上游源发生变化时,可用于更新翻译文件。为了实现这个功能,请记住 Weblate 只看到提交给版本控制系统( VCS )的文件,所以需要同意更改作为脚本的一部分。
例如 Gulp ,可以使用后面的代码来执行:
#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json