访问控制

Weblate 带有细粒度的权限系统,可以为整个实例或在有限范围内分配用户权限。

在 3.0 版更改: 在 Weblate 3.0 之前,权限系统只基于 Django 权限系统,但现在是专门为 Weblate 构建的。如果使用的是更旧的版本,那么请查阅所使用的特定版本的文档。

简单的访问控制

如果你不是掌控完整的 Weblate 安装,而仅仅是需要访问管理当前项目(如在 Hosted Weblate),你的访问控制管理选项将被设置所限制。如果你不需要任何复杂的步骤,这些就足够了。

项目访问控制

备注

此功能对于在 Hosted Weblate 上运行自由套餐的项目不可用。

您可以通过选择不同的 访问控制 设置来限制用户对单个项目的访问。可用的选项有:

公开的

公开可见,所有登录用户均可进行翻译。

受保护的

公开可见,但仅选定的用户可进行翻译。

私有的

仅选定的用户可见和可进行翻译。

自定义

用户管理 功能将被禁用;默认情况下,禁止所有用户对项目执行任何操作。您必须使用 自定义访问控制 来设置所有权限。

可以在每个项目的配置( 管理设置)的 Access 选项卡中更改 访问控制

../_images/project-access.png

可以通过 DEFAULT_ACCESS_CONTROL 更改默认值。

备注

即使是 私有 项目,也会暴露有关项目的一些信息:尽管进行了访问控制设置,但整个实例的统计信息和语言概况仍将包括所有项目的计数。你的项目名称和其他信息不会因此暴露。

备注

Weblate 实例管理员可通过 自定义设置 重新定义 公开受保护私有 项目中默认提供的用户权限组合。

警告

通过打开 自定义 访问控制, Weblate 会删除所有为一个选定项目建立的 special groups。如果你在没有整个 Weblate 实例的管理员权限的情况下这样做,你会立即丢失管理项目的权限。

参见

访问控制

管理每个项目的访问控制

Manage project access 特权的用户可以通过将用户添加到团队中来管理他们。最初的一组团队由 Weblate 提供,但可以定义其他团队,以提供更细粒度的访问控制。你可以限制团队到特定语言,并为他们分配指定的访问角色(参见 权限和内置角色列表)。

Weblate 会自动为每个项目创建以下团队:

适用于 公开受保护私有 项目:

管理

包括项目可用的所有权限。

审校(仅当开启 审校流程 时)

可以在审校时核准翻译。

只适用于 受保护私有 项目:

翻译

可以翻译项目,并将离线的翻译上传。

原文

可以编辑源字符串(如果 project settings 中允许的话)及源字符串信息。

语言

可以管理翻译语言(添加或删除翻译)。

术语表

可以管理术语表(添加或删除条目,也可以上传)。

记忆存储

可以管理翻译记忆库。

截图

可以管理截屏(添加或删除截屏,并将其与源字符串关联)。

自动化翻译

可以使用自动翻译。

版本控制系统(VCS)

可以管理版本控制系统(VCS)并访问导出的仓库。

账单

可以访问账单信息和设置(请参见 账单 )。

../_images/manage-users.png

这些功能可在 Access control 页面上找到,可以从项目的菜单 ManageUsers 进入。

邀请新用户

此外,除了将现有用户添加到项目之外,还可以邀请新用户。将立即创建任何新用户,但是该帐户将保持不活动状态,直到使用通过电子邮件发送的邀请中的链接登录为止。不需要具有任何站点范围的权限,就可以这么做,项目级别的访问管理权限(如 Administration 团队成员资格)就足够了。

提示

如果被邀请的用户错过了邀请的有效性,则可以在密码重置表单中使用被邀请的电子邮件地址设置密码,因为已经创建了帐户。

3.11 新版功能: 可以重新发送用户邀请电子邮件(将使之前发送的所有邀请失效)。

通过 用户 选项卡下的 管理界面 获取可在站点范围内使用的同样的邀请。

阻止用户

4.7 新版功能.

如果有些用户在您的项目中行为不佳,您可以选择阻止他们进行贡献。 如果被阻止的用户有权限,那他仍然可以看到项目,但他将不能贡献。

每个项目的权限管理

你可以将你的项目设置为 受保护私有 ,并在 Weblate 的界面上进行每个项目的 用户管理

默认情况下,这可防止 Weblate 因 用户查看者 默认群组 本身的配置而授予其提供的访问权限。但这并不妨碍您向这些项目授予站点范围的权限,可用的方法有改变默认群组、创建一个新的组,或如下方 自定义访问控制 中所述为单个部件创建额外的自定义设置。

通过 Weblate 用户界面管理权限的一个主要好处是,您可以将其委托给其他用户,而无需授予他们超级用户权限。为此,请将 TA 们添加到项目的 Administration 团队中。

自定义访问控制

备注

此功能对于在 Hosted Weblate 上运行自由套餐的项目不可用。

权限系统基于组和角色,其中角色定义了一组权限,组将它们链接到用户和翻译,请参阅 用户、角色、群组和权限 获取更多详细信息。

Weblate 访问控制系统最强大的功能目前只能通过 Django 管理界面 来实现。 您可以使用它来管理任何项目的权限。你不一定要切换到 自定义 访问控制 来使用它。 但是你必须有超级用户权限才能使用它。

如果您对实现的细节不感兴趣,只是想创建一个基于默认值的足够简单的配置,或者不能访问整个 Weblate 安装(如 Hosted Weblate),请参见 简单的访问控制 部分。

通用设置

本节包含一些您可能感兴趣的常见配置的概述。

站点范围内的权限管理

要一次性管理整个实例的权限,请将用户添加到适当的 默认群组

  • 用户 (默认情况下,这是由 自动群组分配 完成的)。

  • 审校员 (如果您有专门的审校员,正在使用 审校流程)。

  • 管理者 (如果您想把大部分的管理操作委托给别人)。

您应该将所有项目配置为 公开的(参见 项目访问控制),否则 用户审校员 群组成员资格提供的站点范围权限将不起任何作用。

您还可以向默认群组授予一些您选择的额外权限。例如,你可能想给所有 用户 管理截图的权限。

您还可以定义一些新的自定义组。如果希望继续在站点范围内管理这些组的权限,请为 Project selection 选择一个合适的值(如 All projectsAll public projects)。

语言、部件或项目的自定义权限

您可以创建自己的专用组来管理不同对象(如语言、部件和项目)的权限。虽然这些组只能授予额外的权限,但您不能通过添加另一个自定义组来撤销全站或每个项目组授予的任意权限。

示例:

如果您希望(不管出于什么原因)只允许一组封闭的可靠翻译者来进行特定语言(比如 捷克语)的翻译,同时将其他语言的翻译保持公开,你必须:

  1. 移除所有用户翻译 捷克语 的权限。在默认配置中,这可以通过修改 用户 默认群组 来实现。

    用户 群组

    语言选择

    定义

    语言

    除了 捷克语

  1. 捷克语 翻译者添加一个专门的小组。

    捷克语翻译者 小组

    角色

    高级用户

    项目选择

    所有公共项目

    语言选择

    定义

    语言

    捷克语

  1. 将您希望授予此权限的用户添加到此组中。

如您所见,这种方式的权限管理功能强大,但可能是一项相当乏味的工作。 您不能将其委托给其他用户,除非授予超级用户权限。

用户、角色、群组和权限

身份验证模型由几个对象组成:

权限

Weblate 定义的个人权限。权限不能分配给用户。这只能通过分配角色来完成。

角色

角色定义了一组权限。 这允许在多个地方重用这些集,使管理更加容易。

用户

用户可以属于多个组。

群组

分组连接角色、用户和身份验证对象(项目、语言和部件列表)。

graph auth { "User" -- "Group"; "Group" -- "Role"; "Role" -- "Permission"; "Group" -- "Project"; "Group" -- "Language"; "Group" -- "Components"; "Group" -- "Component list"; }

备注

一个组可以不分配任何角色,但在这种情况下任何人都可以浏览它的项目(见下文)。

浏览到项目的访问权限

用户必须是链接到项目的组或项目中的任何部件的成员。拥有成员身份就足够了,浏览项目不需要特定的权限 (这被用于默认的 查看者 小组,见 群组列表 )。

浏览部件的权限

用户一旦能够访问部件的项目,就可以访问不受限制的部件(并将拥有该项目授予用户的所有权限)。在开启 受限制的访问 的情况下,访问部件需要对该部件(或该部件所在的部件列表)具有显式权限。

群组范围

组内角色分配的权限范围适用如下规则:

  • 如果群组指定了任何 部件列表,则授予该组成员的所有权限都适用于附加到该组的部件列表中的所有部件,并为这些部件所在的所有项目授予没有额外权限的访问权限。部件项目 将被忽略。

  • 如果该群组指定了任何 部件,则授予该组成员的所有权限都适用于附加到该组的所有部件,并为这些部件所在的所有项目授予没有额外权限的访问权限。项目 将被忽略。

  • 否则,如果群组指定了任何 项目,通过直接列出它们或通过将 Projects selection 设置为类似 All public projects 的值,所有这些权限将应用于所有项目,它有效地授予访问所有项目的相同权限 不受限制的部件

  • 当验证用户是否有权限执行某些操作时,由群组的 语言 施加的限制将单独应用。也就是说,它仅适用于与翻译过程本身直接相关的操作,例如审校、保存翻译、添加建议等。

提示

使用 Language selectionProject selection 来自动包括所有语言或项目。

示例:

假设有一个项目 foo 包含以下部件: foo/barfoo/baz,以及以下群组:

西班牙语管理审校员 群组

角色

审校字符串管理代码库

部件

foo/bar

语言

西班牙语

该组的成员将具有以下权限(假设是默认的角色设置):

  • 对整个项目 foo 的一般(浏览)访问,包括其中的两个部件:foo/barfoo/baz

  • 复查 foo/bar 西班牙语翻译(不是在其他地方)中的字符串。

  • 管理整个 foo/bar 仓库的 VCS,例如提交所有语言的翻译者所做的待处理更改。

自动群组分配

Django 管理界面群组 编辑页面的底部,可以指定 自动群组分配,这是一个正则表达式列表,用于根据他们的电子邮件地址自动将新创建的用户分配到群组。 此分配仅在创建帐户时发生。

该功能最常见的用例是将所有新用户分配到某个默认群组。为此,您可能希望在正则表达式字段中保留默认值(^.*$)。此选项的另一个用例可能是默认为您公司的员工提供一些额外的权限。假设他们都使用您域中的公司电子邮件地址,这可以通过像 ^.*@mycompany.com 这样的表达式来完成。

备注

从一个 Weblate 版本升级到另一个版本时,总是会重新创建对 用户查看者 的自动群组分配。如果你想关闭它,将正则表达式设置为 ^$ (不匹配任何内容)。

备注

就目前而言,还没有办法通过用户界面将现有用户批量添加到某个组。 为此,您可以通过 REST API 来实现。

默认群组和角色

安装完成后,将创建一组默认群组(参见 群组列表)。

这些角色和群组是在安装时创建的。升级时,内置角色始终通过数据库迁移保持最新状态。实际上你无法更改它们,如果要定义自己的权限组合,请定义一个新角色。

权限和内置角色列表

范围

权限

角色

账单(请参见 账单

查看账单信息

管理账单

变更

下载改动

管理

评论

发表评论

管理编辑原文高级用户审校字符串翻译

删除评论

管理

部件

编辑部件设置

管理

锁定部件,阻止翻译

管理

术语表

添加术语表条目

管理管理术语表高级用户

编辑术语表条目

管理管理术语表高级用户

删除术语表条目

管理管理术语表高级用户

上传术语表条目

管理管理术语表高级用户

自动建议

使用自动建议

管理编辑原文高级用户审校字符串翻译

翻译记忆库

编辑翻译记忆

管理管理翻译记忆库

删除翻译记忆

管理管理翻译记忆库

项目

编辑项目设置

管理

管理项目访问权

管理

报告

下载报告

管理

截图

添加截图

管理管理截图

编辑截图

管理管理截图

删除截图

管理管理截图

源字符串

编辑字符串额外信息

管理编辑原文

字符串

添加新字符串

管理

移除一个字符串

管理

忽略未通过的检查

管理编辑原文高级用户审校字符串翻译

编辑字符串

管理编辑原文高级用户审校字符串翻译

审校字符串

管理审校字符串

当建议被强制执行时需要编辑字符串

管理审校字符串

编辑源字符串

管理编辑原文高级用户

建议

接受建议

管理编辑原文高级用户审校字符串翻译

添加建议

管理编辑原文添加建议高级用户审校字符串翻译

删除建议

管理高级用户

为建议投票

管理编辑原文高级用户审校字符串翻译

翻译

添加翻译语言

管理高级用户管理语言

执行自动翻译

管理语言自动化翻译

删除现有翻译

管理管理语言

下载翻译文件

管理编辑原文访问代码库高级用户审校字符串翻译管理语言

添加多种翻译语言

管理管理语言

上传

定义上传翻译的作者

管理

上传时覆盖已有字符串

管理编辑原文高级用户审校字符串翻译

上传翻译

管理编辑原文高级用户审校字符串翻译

版本控制系统(VCS)

访问内部代码库

管理访问代码库高级用户管理代码库

将更改提交到内部代码库

管理管理代码库

从内部代码库推送更改

管理管理代码库

重置内部代码库的更改

管理管理代码库

查看上游代码库位置

管理访问代码库高级用户管理代码库

更新内部代码库

管理管理代码库

全网站范围的特权

使用管理界面

添加新项目

添加语言定义

管理语言定义

管理群组

管理用户

管理角色

管理公告

管理翻译记忆库

管理部件列表

备注

站点范围的特权不会被授予任何默认角色。它们功能强大,非常接近超级用户的地位。它们中的大多数都会影响到你的 Weblate 安装中的所有项目。

群组列表

下面的群组在安装时建立(或在执行 setupgroups 后), 您可以自由修改它们。但是,如果它们被删除或重命名,迁移后将重新创建这些名称。

访客

定义非授权用户的权限。

这个群组只包括匿名用户(请参见 ANONYMOUS_USER_NAME )。

你可以从群组中去掉角色,来限制非授权用户的权限。

默认角色:添加建议访问代码库

查看者

这一角色确保公开项目对所有用户可见。默认情况下,所有用户都是该组的成员。

默认情况下,自动群组分配 将会使所有新帐户在加入时成为该组的成员。

默认角色:无

用户

所有用户的默认群组。

默认情况下,自动群组分配 将会使所有新帐户在加入时成为该组的成员。

默认角色:高级用户

审校员

审校员的群组(参见 翻译工作流)。

默认角色:审校字符串

管理者

管理员的群组。

默认角色:管理

警告

切勿移除预先定义的 Weblate 群组和用户,因为这可能会导致意想不到的问题!如果你用不到它们,你可以移除它们的全部权限。

额外访问限制

如果您想以不那么公开的方式使用您的 Weblate 安装,即只允许新用户在受邀的基础上,可以通过配置 Weblate 以这样一种方式来实现,即只有已知用户才能访问它。 为此,您可以将 REGISTRATION_OPEN 设置为 False 以防止任何新用户注册,并将 REQUIRE_LOGIN 设置为 /.* 以要求登录 访问所有网站页面。 这基本上是锁定您的 Weblate 安装的方法。

提示

您可以使用内置的 invitations 来添加新用户。