本地化语言
Logto 支持多种预定义语言,并提供 113 个额外的语言标签。这一强大的工具让你可以通过创建和管理自己的语言选项与翻译,自定义登录体验。
在 Logto 控制台中的自定义步骤
你可以在 Logto 控制台中轻松自定义语言设置,无需编写代码。
- 导航到:控制台 > 登录体验 > 内容 > 语言。
- 管理语言:点击“管理语言”按钮,进入你的语言库。
- 编辑现有语言:自定义 Logto 提供的语言的翻译。这些语言无法删除,但你的更改会覆盖默认值。
- 添加新语言:点击“添加语言”按钮,选择一个语言标签,填写你的翻译,然后保存更改以添加新语言。
- 启用自动检测:启用后,会根据用户设备设置自动以其首选语言显示登录页面。
- 设置默认语言:你可以从语言库中选择一个默认语言。当检测到的用户语言不在当前语言库中时,将使用默认语言。
以下是管理语言时需要了解的一些关键术语:
| 定义 | 描述 |
|---|---|
| 语言标签 | 语言标签用于标识内容的语言。一个语言标签由语言代码(如 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 控制 语言检测策略。
运行时语言解析
在运行时,登录体验的语言解析优先级如下:
- 当前认证请求中的
ui_localesOIDC 参数(使用第一个支持的标签)。参见 ui_locales。 - 否则,如果启用了“自动检测”,则使用检测到的用户客户端语言(例如来自 HTTP
Accept-Language头)。 - 否则,使用登录体验中的租户默认语言。
此解析方式同样影响由交互触发的邮件本地化。了解更多:邮件模板本地化。
使用场景
添加的语言会如何呈现给终端客户?
假设你的网站默认语言为英文,并且已开启自动检测。一位来自日本的用户访问你的网站并决定创建账户。如果他 / 她的应用语言为日语,但 Logto 尚未支持该语言,则登录界面会以英文显示。
Logto 登录体验 i18n 让自定义语言成为可能。
点击 ja 语言标签,添加你自己的日语翻译。
这样,来自日本的用户访问你的网站时,就能看到你刚刚从英文翻译过来的日文内容。
常见问题
如果我添加的语言后来成为 Logto 提供的语言怎么办?
在左侧语言标签旁会出现 Logto 提供的标记,你添加的语言将无法再被移除。你修改过的值会继续生效并替换原有的 Logto 值。若想使用 Logto 默认配置提供的值,只需清除用户自定义的值即可。
如果我只添加了部分自定义值怎么办?
最终用户看到的是两列内容合并的结果。 假如你只想调整 Logto 提供的原始内容副本中的一部分,那么你的注册界面与 Logto 默认界面的唯一区别就是你编辑过的键。其余内容保持不变。
如何为登录体验设置默认手机号国家代码?
登录体验中的手机号国家代码默认取自用户浏览器的本地语言。例如,如果用户浏览器语言设置为 fr,则国家代码会默认选择法国(+33)。
如需以编程方式为特定用户或地区控制默认国家代码,可以使用 ui_locales 认证参数。例如,设置 ui_locales=ja 时,国家代码将默认选择日本(+81)。
相关资源
在你的应用中支持阿拉伯语和 RTL(从右到左)语言布局