管理命令#

备注

在与运行 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

对于 docker-compose,过程是相似的,您只是必须使用 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#

在 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#

在 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#

在 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 来触发更新。