附加组件¶
2.19 新版功能.
附加组件提供了自定义翻译工作流的方法。它们可以被安装在翻译组件视图中,并在幕后工作。管理员可从各翻译组件的:图形用户界面标签: ‘ 管理 ‘↓’附加组件’菜单中管理它们。
内置插件¶
JavaScript本地化CDN¶
4.2 新版功能.
将译文发布到内容交付网络,以便在 JavaScript或 HTML 本地化中使用。
它可以用于将静态 HTML 网页本地化,或者用于在 JavaScript 代码中加载本地化文件。
在安装时,插件为你的组件产生唯一的 URL ,可以将其包括在 HTML 文件中,使它们本地化。细节请参见 weblate-cdn 。
语言一致性¶
确保一个项目中的所有组件都为每种要添加的语言进行翻译。
它对未添加到组件中的语言建立空的翻译。
每24小时,和在新的语言加入 Weblate 时,检查一次丢失的语言。
不像其他多数附加组件,这个附加组件影响整个项目。
提示
用 自动化翻译 自动翻译新添加的字符串。
组件发现¶
根据版本控制系统中文件更改的情况来自动添加或删除项目的组件.
每次版本控制系统( VCS )升级时触发,否则与 import_project
管理命令相似。这种方式可以在一个版本控制系统( VCS )中跟踪多个翻译组件。
建立一个至少未来不大可能会消失的主要组件,其他会采用其 Weblate internal URLs 作为版本控制系统( VCS )的配置,并且配置它来找到其中的所有组件。
匹配是使用正则表达式完成的,在正则表达式中,强大的功能是配置复杂性的一种折衷。一些常见用例的例子可以在附加组件帮助部分找到。
一旦点击了 Save ,将显示匹配组件的预览,可以检查配置是否匹配于自己的需要:
参见
批量编辑¶
3.11 新版功能.
批量编辑字符串标记、标签或状态。
新字符串自动贴标签会有用(通过搜索查询 NOT has:label
开始,并且添加所需要的标签,直到所有的字符串都适当地被贴上标签)。还以对 Weblate 元数据执行其他任何自动化操作。
例子:
搜索条目 |
|
---|---|
要添加的标签 |
近期 |
搜索条目 |
|
---|---|
要添加的翻译标记 |
|
参见
将未更改的译文标记为“需要编辑”¶
3.1 新版功能.
每当新的翻译字符串从版本控制系统( VCS )中导入时,它将在 Weblate 中被标记为需要编辑。这对于包含全部字符串的文件格式十分有用,即使它们没有被翻译。
将新的源字符串标记为“需要编辑”¶
每当一个新的源字符串从版本控制系统( VCS )中导入时,它将在 Weblate 中被标记为需要编辑。这样就可以简单地筛选并编辑开发者编写的源字符串。
将导入的新译文标记为“需要编辑”¶
每当一个新的可翻译字符串从版本控制系统( VCS )中导入时,它将在 Weblate 中被标记为需要编辑。这样就可以简单地筛选并编辑开发者创建的翻译。
统计数据生成器¶
生成一个包含关于翻译状态详细信息的文件。
可以在文件名和内容中使用 Django 模板,参见 模板标记 的具体标记表述。
例如对每个翻译产生摘要文件:
- 所生成文件的名称
locale/{{ language_code }}.json
- 内容
{ "language": "{{ language_code }}", "strings": "{{ stats.all }}", "translated": "{{ stats.translated }}", "last_changed": "{{ stats.last_changed }}", "last_author": "{{ stats.last_author }}", }
参见
在注释中添加贡献信息¶
在 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 变量¶
当新的翻译添加时,更新 configure
、 configure.in
或任何 configure.ac
文件中的 ALL_LINGUAS 变量。
自定义 gettext 输出¶
允许自定义 gettext 的输出行为,例如是否启用自动换行。
提供了后面的选项:
在 77 个字符处和新一行时来换行
仅在换行符处折行
不换行
注解
默认 gettext 在 77 个字符处和新一行时换行。使用 --no-wrap
参数时只在新一行时换行。
更新 LINGUAS 文件¶
添加新的翻译时更新 LINGUAS 文件。
更新 PO 文件以匹配 POT 文件 (msgmerge)¶
使用 msgmerge 来更新所有的 PO 文件(如 文件掩码 所配置),而与 POT 文件(如 新翻译的译文模版 所配置)匹配。
每当从上游存储库拉取新更改时,这个插件被触发。您可以通过附加配置设定大多数msgmerge命令行选项。
压缩 Git 提交¶
推送变更之前压缩 Git 提交。
可以选择后面的模式之一:
3.4 新版功能.
所有提交成一个
每种语言
每个文件
3.5 新版功能.
每位作者
原始提交信息保留,但其作者信息丢失,除非选择 Per author ,或者定制提交信息来包括它。
4.1 新版功能.
原始提交信息可选地由定制的提交信息覆盖。
预告(提交行像 Co-authored-by: ...
)可选地从原始提交信息中去掉,并且添加在去掉的提交信息后面。这还可以为每一位翻译者产生适当的 Co-authored-by:
信誉。
自定义 JSON 输出¶
允许调整 JSON 的输出行为,例如缩进或排序。
格式化 Java 属性文件¶
排序 Java 属性文件。
定制附加组件列表¶
附加组件列表由 WEBLATE_ADDONS
配置。要添加其他附加组件,只需在这个设置中包含类绝对名称即可。
编写附加组件¶
你也可以编写自己的附加组件,所需要做的是把:class:`weblate.addons.base.BaseAddon`归入子类,定义附加组件的元数据,并实现一个会执行处理的回调函数。
参见
从附加组件执行脚本¶
附加逐渐还可以用于执行外部脚本。这曾经集成在 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