管理命令

备注

在与运行 web 服务器的用户不同的用户下运行管理命令,可能会导致文件获得错误的权限,请查阅 文件系统权限 了解详情。

您会找到基本的管理命令(作为 Django 源中的 ./manage.py 来获得它,或者作为可安装在Weblate 顶层的脚本调用 weblate 中的扩展组来获得它 )。

调用管理命令

如上面所提到的,如何调用取决于您如何安装 Weblate。

如果使用 Virtualenv 来运行 Weblate,那么您可以指定 weblate 的完整路径,或者在调用前激活 virtualenv :

# Direct invocation
~/weblate-env/bin/weblate

# Activating virtualenv adds it to search path
. ~/weblate-env/bin/activate
weblate

如果您直接使用源代码(来源于 tarball 或 Git checkout ),管理脚本可以在 Weblate 源文件的 ./manage.py 中获得。要运行它:

python ./manage.py list_versions

如果您使用 pip 安装程序,或使用 ./setup.py 脚本来安装 Weblate,那么 weblate 安装到您的路径下(或者 virtualenv 路径下),您可以从那里用它控制 Weblate :

weblate list_versions

对于 Docker 镜像,脚本向上面一样安装,您可以使用 docker exec 来运行:

docker exec --user weblate <container> weblate list_versions

对于 docker-compose-plugin,过程是相似的,您只是必须使用 docker compose exec

docker compose exec --user weblate weblate weblate list_versions

在您需要向它传递文件的情况下,您可以临时添加卷:

docker compose exec --user weblate /tmp:/tmp weblate weblate importusers /tmp/users.json

add_suggestions

weblate add_suggestions <project> <component> <language> <file>

从文件导入翻译,用作给定翻译的建议。它会跳过重复的翻译;只会添加不同的内容。

--author USER@EXAMPLE.COM

建议的作者电子邮箱地址。这个用户必须在导入前存在(您可以根据需要在管理界面建立一个)。

示例:

weblate --author michal@cihar.com add_suggestions weblate application cs /tmp/suggestions-cs.po

auto_translate

weblate auto_translate <project> <component> <language>

在 4.6 版本发生变更: 添加了翻译模式参数。

根据其他部件翻译进行自动翻译。

--source PROJECT/COMPONENT

指定可用作翻译的来源的部件。如果不指定,将使用项目中的所有部件。

--user USERNAME

指定列出的用户名,作为翻译的作者。如果不指定那么使用“匿名用户”。

--overwrite

是否去覆盖现有的翻译。

--inconsistent

是否去覆盖现有的不一致的翻译(请参见 不一致的 )。

--add

如果给定的翻译不存在,自动添加语言。

--mt MT

实用机器翻译而不是其他部件作为机器翻译。

--threshold THRESHOLD

机器翻译的相似度阈值,默认为 80。

--mode MODE

指定翻译模式,默认为 translate 也可以使用 fuzzysuggest

示例:

weblate auto_translate --user nijel --inconsistent --source weblate/application weblate website cs

参见

自动翻译

celery_queues

weblate celery_queues

显示 Celery 任务队列的长度。

checkgit

weblate checkgit <project|project/component>

打印后端 Git 仓库的当前状态。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件。

commitgit

weblate commitgit <project|project/component>

将任何可能的待处理更改提交到后端 Git 仓库。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件,或使用 --file-format 基于文件格式进行过滤。

commit_pending

weblate commit_pending <project|project/component>

提交超过给定期限的待处理更改。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件。

--age HOURS

时间段以小时为单位。如果不指定,则使用在 部件配置 中配置的值。

备注

这由 Weblate 在后台自动执行,所以实际不需要手动调用,除了要强制早于 部件配置 指定的执行。

cleanuptrans

weblate cleanuptrans

清理无主的检查和翻译建议。这通常不需要手动运行,因为清理在后台自动启动。

cleanup_ssh_keys

weblate cleanup_ssh_keys

Added in version 4.9.1.

对存储的 SSH 主机密钥进行清理:

  • 移除已废弃的 GitHub 的 RSA 密钥,这可能会导致连接到 GitHub 的问题。

  • 删除主机密钥中的重复条目。

参见

SSH 仓库

createadmin

weblate createadmin

除非指定,否则用随机密码建立 admin 账户。

--password PASSWORD

在命令行提供密码,而不要生成随机的。

--no-password

不要设置密码,这对`–update`可能有用。

--username USERNAME

使用给定的姓名而不是 admin

--email USER@EXAMPLE.COM

指定 admin 的电子邮箱地址。

--name

指定 admin 的姓名(可见的)。

--update

更新现有的用户(您可以用这个来更改密码)。

dump_memory

weblate dump_memory

将包含 Weblate 翻译记忆库内容的 JSON 文件导出。

dumpuserdata

weblate dumpuserdata <file.json>

通过 importuserdata 将 userdata 转储到文件供以后使用。

提示

这在迁移或合并 Weblate 实例时会很方便。

import_demo

weblate import_demo

Added in version 4.1.

基于 <https://github.com/WeblateOrg/demo> 创建包含部件的演示项目。运行此命令之前,请确保 celery 任务正在运行。

这在开发 Weblate 时会有用。

--delete

删除现有的演示项目。

import_json

weblate import_json <json-file>

根据 JSON 数据批量导入部件。

导入的 JSON 文件结构非常符合部件对象(请参见 GET /api/components/(string:project)/(string:component)/ )。您必须包括 namefilemask 字段。

--project PROJECT

指定从哪里导入部件。

--main-component COMPONENT

对所有的使用来自这个部件的给定版本控制系统仓库。

--ignore

跳过(已经)导入的部件。

--update

更新(已经)导入的部件。

JSON 文件的示例:

[
  {
    "slug": "po",
    "name": "Gettext PO",
    "file_format": "po",
    "filemask": "po/*.po",
    "new_lang": "none"
  },
  {
    "name": "Android",
    "filemask": "android/values-*/strings.xml",
    "template": "android/values/strings.xml",
    "repo": "weblate://test/test",
    "file_format": "aresource"
  }
]

参见

import_memory

import_memory

weblate import_memory <file>

将 TMX 或 JSON 文件导入 Weblate 翻译记忆库。

--language-map LANGMAP

允许将 TMX 的语言映射到 Weblate 翻译记忆库。语言代码通常在 Weblate 进行规范化之后映射。

例如 --language-map en_US:en 将所有 en_US 字符串作为 en 字符串来导入。

如果您的 TMX 文件的地区恰好与您在 Weblate 中使用的地区不匹配,这会很有用。

import_project

weblate import_project <project> <gitrepo> <branch> <filemask>

基于文件掩码批量导入部件到项目中。它基于 部件发现 附加组件,你或许想使用该附加组件。

<project> 将已存在的项目命名,部件将导入其中。

<gitrepo> 确定了要使用的 Git 仓库的 URL,而 <branch> 说明了 Git 分支。为了从现有的 Weblate 部件导入另外的翻译部件,使用 <gitrepo>weblate://<project>/<component> URL。

<filemask> 为仓库定义了文件发现。或者可以使用通配符来使它简单,或者可以使用正则表达式的全部功能。

简单的匹配对部件名称使用 **,对语言使用 *,例如: **/*.po

正则表达式必须包含组命名的 componentlanguage。例如: (?P<language>[^/]*)/(?P<component>[^-/]*)\.po

根据文件,导入与现有的部件匹配,并且添加不存在的那些。它不更改已经存在的那些。

--name-template TEMPLATE

使用 Django 模板语法来定制部件的名称。

例如: Documentation: {{ component }}

--base-file-template TEMPLATE

为单语言翻译定制翻译模板文件。

例如: {{ component }}/res/values/string.xml

--new-base-template TEMPLATE

为另外新的翻译定制翻译模板文件。

例如: {{ component }}/ts/en.ts

--file-format FORMAT

您还可以使用的文件格式(请参见: 支持的文件格式 ),默认为自动检测。

--language-regex REGEX

您可以使用这个参数指定语言过滤器(请参见: 部件配置 )。它必须是合法的正则表达式。

--main-component

你可以指定哪个部件作为主部件——即真正包含版本控制系统仓库的部件。

--license NAME

指定整体、项目或部件翻译的许可。

--license-url URL

指定翻译许可所在的 URL。

--vcs NAME

在需要指定使用哪个版本的轻质系统的情况下,您可以在这里进行。默认版本控制是 Git。

为了给出一些示例,让我们导入两个项目。

第一个是 Debian 手册翻译,那里的每种语言都有各自的文件夹,里面有 每个章节的翻译:

weblate import_project \
    debian-handbook \
    git://anonscm.debian.org/debian-handbook/debian-handbook.git \
    squeeze/master \
    '*/**.po'

然后 Tangaguru 工具,那里需要指定文件格式和翻译模板文件,并且指定所有部件和翻译如何位于单一一个文件夹中:

weblate import_project \
    --file-format=properties \
    --base-file-template=web-app/tgol-web-app/src/main/resources/i18n/%s-I18N.properties \
    tanaguru \
    https://github.com/Tanaguru/Tanaguru \
    master \
    web-app/tgol-web-app/src/main/resources/i18n/**-I18N_*.properties

更复杂的示例是关于解析文件名而从文件名中得到正确的部件和语言,像 src/security/Numerous_security_holes_in_0.10.1.de.po

weblate import_project \
    tails \
    git://git.tails.boum.org/tails master \
    'wiki/src/security/(?P<component>.*)\.(?P<language>[^.]*)\.po$'

筛选出指定的语言的翻译:

./manage import_project \
    --language-regex '^(cs|sk)$' \
    weblate \
    https://github.com/WeblateOrg/weblate.git \
    'weblate/locale/*/LC_MESSAGES/**.po'

导入 Sphinx 文档,分成多个文件:

$ weblate import_project --name-template 'Documentation: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/**.po'

导入 Sphinx 文档,分成多个文件和文件夹:

$ weblate import_project --name-template 'Directory 1: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/dir1/**.po'
$ weblate import_project --name-template 'Directory 2: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/dir2/**.po'

参见

更多具体的示例可以在 从国际化开始 章节找到,另外您会想要使用 import_json

importuserdata

weblate importuserdata <file.json>

dumpuserdata 建立的文件中导入用户数据。

importusers

weblate importusers --check <file.json>

从 Django auth_users 数据库的 JSON 转储中导入用户。

--check

使用这个选项可以检查给定文件是否可以被导入,并且报告用户名或电子地址可能导致的冲突。

可以从现有的 Django 安装中导出用户,这需要使用:

weblate dumpdata auth.User > users.json

install_addon

weblate install_addon --addon ADDON <project|project/component>

将一个附加组件安装到一组部件中。

--addon ADDON

要安装的附加组件名称。例如 weblate.gettext.customize

--configuration CONFIG

以 JSON 编码的附加组件配置。

--update

更新现有的附加组件配置。

可以定义将附加组件安装到哪个项目或部件中(例如 weblate/application),或者使用 --all 来包含所有现有的部件。

为所有部件安装 自定义 gettext 输出

weblate install_addon --addon weblate.gettext.customize --configuration '{"width": -1}' --update --all

参见

附加组件

install_machinery

Added in version 4.18.

weblate install_machinery --service SERVICE

安装全站点的自动建议服务。

--service SERVICE

要安装的服务名称。例如 deepl.

--configuration CONFIG

以 JSON 编码的服务配置。

--update

更新现有的服务配置。

安装 DeepL:

weblate install_service --service deepl --configuration '{"key": "x", "url": "https://api.deepl.com/v2/"}' --update

参见

自动建议

list_languages

weblate list_languages <locale>

列出 MediaWiki 标记中支持的语言——语言代码、英语名称和本地化名称。

这用来生成 <https://wiki.l10n.cz/Slovn%C3%ADk_s_n%C3%A1zvy_jazyk%C5%AF>.

list_translators

weblate list_translators <project|project/component>

按给定项目的语言列出为对应语言作贡献的译者:

[French]
Jean Dupont <jean.dupont@example.com>
[English]
John Doe <jd@example.com>
--language-code

用语言代码而不是语言来列出名称。

可以或者定义使用哪个项目或部件(例如 weblate/application),或者使用 --all 从所有现存的部件中列出译者。

list_versions

weblate list_versions

列出所有 Weblate 依赖项及其版本。

loadpo

weblate loadpo <project|project/component>

从磁盘重新加载翻译(例如,您在版本控制系统仓库中进行了一些更新)。

--force

强制更新,即使文件应该是更新的。

--lang LANGUAGE

将处理限制为单一语言。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件。

备注

你很少需要调用这个命令,Weblate 会在每次版本控制系统更新时自动加载更改的文件。如果您手动更改了 Weblate 的底层版本控制系统仓库,或者在升级后的某些特殊情况下,则需要调用这个命令。

lock_translation

weblate lock_translation <project|project/component>

防止部件的进一步翻译。

提示

在您想要对下层仓库进行一些维护时有用。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件。

migrate

weblate migrate

迁移数据库到当前 Weblate 方案。命令行选项描述见 Django migrate

提示

在想要非交互式地运行安装的情况下,可以使用 weblate migrate --noinput,然后使用 createadmin 命令来建立管理用户。

move_language

weblate move_language source target

允许您合并语言内容。当更新到新版本,这个新版本对使用 (generated) 前缀建立的之前未知的语言包含别名时,这会有用。它将所有内容从 source 语言移动到 target 语言。

示例:

weblate move_language cze cs

移动内容后,您应该检查是否有什么落下了(这是因为有人在同时更新仓库而导致的竞争情况),并且要删除 (generated) 语言。

pushgit

weblate pushgit <project|project/component>

将提交的更改推送到上游的版本控制系统仓库。

--force-commit

强制提交任何待处理的更改,然后再推送。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件。

备注

如果开启了 部件配置 中的 提交时推送,Weblate 会自动推送更改,这是默认的。

unlock_translation

weblate unlock_translation <project|project/component>

将给定的部件解锁,使它能够被翻译。

提示

在您想要对下层仓库进行一些维护时有用。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件。

setupgroups

weblate setupgroups

配置默认群组,并可选择将所有用户分配到该默认群组。

--no-privs-update

关闭对现有组的自动更新(只添加新的)。

--no-projects-update

防止对现有项目的组的自动更新。这允许将新添加的组加入到现有项目中,请参见 项目访问控制

参见

特权列表

setuplang

weblate setuplang

将 Weblate 中的确定语言的列表更新。

--no-update

关闭现有语言的自动更新(只添加新的)。

updatechecks

weblate updatechecks <project|project/component>

更新对所有字符串的所有检查。

提示

对检查进行主要更改的更新是有用的。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件。

备注

检查由 Weblate 定期在后台重新计算,可以使用 BACKGROUND_TASKS 配置频率。

updategit

weblate updategit <project|project/component>

取回远程版本控制系统仓库并更新内部缓存。

您可以确定或者哪个项目或部件要更新(例如 weblate/application ),或者使用 --all 来更新所有现有部件。

备注

通常最好在仓库中配置钩子,来触发 通知钩子,而不是定期通过 updategit 来触发更新。