跳到主要内容

本地化语言

Logto 支持广泛的预定义语言,并提供 113 个额外的语言标签。这一强大的工具让你可以通过创建和管理自己的语言选项与翻译,定制登录体验。

在 Logto 控制台中的自定义步骤

你可以在 Logto 控制台中轻松自定义语言设置,无需编写代码。

  1. 导航到控制台 > 登录体验 > 内容 > 语言
  2. 管理语言:点击“管理语言”按钮,进入你的语言库。
    • 编辑现有语言:自定义 Logto 提供的语言的翻译。这些语言无法删除,但你的更改会覆盖默认值。
    • 添加新语言:点击“添加语言”按钮,选择一个语言标签,填写你的翻译,然后保存更改以添加新语言。
  3. 启用自动检测:启用后,会根据用户设备设置自动以其偏好语言显示登录页面。
  4. 设置默认语言:你可以从语言库中选择一个默认语言。当检测到的用户语言不在当前语言库中时,将使用该默认语言。

以下是管理语言时需要了解的一些关键术语:

定义描述
语言标签语言标签用于标识内容的语言。一个语言标签由语言代码(如 en、fr、zh)和国家 / 地区代码(如 US、UK、KR)用连字符分隔组成。一个语言标签的格式如:en-US。
Logto 提供的语言Logto 提供的语言是 Logto 官方语言,存储在 Logto 的原始代码库中。
添加的语言添加的语言是用户自行添加的语言。
Logto 源值Logto 源值是尚未被用户自定义的 Logto 提供的值。
自定义值自定义值是已经被用户自定义过的值。Logto 源值会被覆盖。

使用 Management API 进行自定义

你可以使用 Management API PUT /api/custom-phrases/{languageTag} 来自定义语言翻译。API 请求体是一个部分 locale 对象,例如:

{
"input": { "username": "Username", "password": "Password" },
"secondary": {
"social_bind_with": "Already had an account? Sign in to link {{methods, list(type: disjunction;)}} with your social identity."
},
"action": { "sign_in": "Sign in" },
"error": {
"general_required": "{{types, list(type: disjunction;)}} is required"
},
"list": { "or": "or" },
"user_scopes": {
"descriptions": { "custom_data": "Your custom data" }
}
}

你可以参考 源代码 查看所有可自定义内容。

你还可以使用 PATCH /api/sign-in-exp API 控制 语言检测策略

运行时语言解析

在运行时,登录体验的语言解析优先级如下:

  1. 当前认证请求中的 ui_locales OIDC 参数(使用第一个支持的标签)。参见 ui_locales
  2. 否则,如果启用了“自动检测”,则使用检测到的用户客户端语言(例如来自 HTTP Accept-Language 头)。
  3. 否则,使用登录体验中的租户默认语言。

这种解析方式同样影响由交互触发的邮件本地化。了解更多:邮件模板本地化

使用场景

添加的语言会如何呈现给终端客户?

假设你的网站默认语言为英文,并且开启了自动检测。一位来自日本的用户访问你的网站并决定创建账户。如果他 / 她的应用语言为日语,但 Logto 尚未支持该语言,则登录界面会显示为英文。

Logto 登录体验的 i18n 让自定义语言成为可能。

点击 ja 语言标签,添加你自己的日语翻译。

这样,来自日本的用户访问你的网站时,就能看到你刚刚从英文翻译过来的日文内容。

常见问题

如果我添加的语言后来成为 Logto 提供的语言怎么办?

在左侧语言标签旁会出现 Logto 提供的标记,你添加的语言将无法再被移除。你修改过的值会继续生效并替换原有的 Logto 值。若要使用 Logto 默认配置提供的值,只需清除用户自定义的值即可。

如果我只添加了部分自定义值怎么办?

最终用户看到的是两列合并的结果。 假设你只想调整 Logto 提供的原始内容副本中的一部分。你的注册界面与 Logto 提供的界面唯一的区别就是你编辑过的键。其余内容保持不变。

在你的应用中支持阿拉伯语和 RTL(从右到左)语言布局