本文档解释了 Uptime Kuma 如何实现国际化 (i18n),以支持应用程序中的多种语言。它涵盖了翻译系统的技术架构、语言检测、区域设置管理以及如何在代码库中使用翻译功能。
Uptime Kuma 使用 Vue-i18n 提供多语言支持,让全球用户能够以他们各自的母语使用该应用程序。该系统目前支持 50 多种语言,翻译内容存储在 JSON 文件中。
核心功能包括:
来源: src/i18n.js1-99
所有翻译都存储在 src/lang 目录下的 JSON 文件中。每种语言都有自己的文件,文件名使用相应的区域设置代码(例如,英语为 en.json,西班牙语为 es-ES.json 等)。
英语文件(en.json)是事实上的依据,所有其他语言文件都遵循相同的键值对结构。
Uptime Kuma 目前支持 50 多种语言,包括:
| 语言代码 | 语言名称 |
|---|---|
| ar-SY | 阿拉伯语 |
| cs-CZ | 捷克语 |
| zh-HK | 繁体中文 (香港) |
| de-DE | 德语 (德国) |
| es-ES | 西班牙语 |
| pt-PT | 葡萄牙语 (葡萄牙) |
| pt-BR | 葡萄牙语 (巴西) |
| fr-FR | 法语 (法国) |
| ja | 日语 |
| ru-RU | 俄语 |
| zh-CN | 简体中文 |
| ur | 乌尔都语 |
| 还有更多... |
支持的语言的完整列表在 i18n.js 文件中的 languageList 对象中定义。
来源: src/i18n.js4-50
i18n 系统在 src/i18n.js 中初始化。该过程包括:
i18n 实例是使用以下设置创建的:
locale:根据浏览器偏好和存储的设置检测到的区域设置fallbackLocale:“en”(英语),在缺少翻译时使用silentFallbackWarn:true,用于在回退时抑制警告silentTranslationWarn:true,用于抑制缺少翻译的警告来源: src/i18n.js92-98
使用 currentLocale() 函数来确定最匹配用户的区域设置
localStorage.locale 中用户选择的偏好设置navigator.language 中的浏览器主要语言navigator.languages 中的其他浏览器语言偏好来源: src/i18n.js69-86
Uptime Kuma 支持从右到左 (RTL) 的语言,例如阿拉伯语、希伯来语、波斯语和乌尔都语。 localeDirection() 函数用于确定当前区域设置是否应使用 RTL 文本方向。
rtlLangs 数组定义了哪些语言应使用 RTL 文本方向。
此函数在 UI 中使用,以应用适当的文本方向。
来源: src/i18n.js62 src/i18n.js88-90
要在 Vue 组件中翻译文本,请使用 $t 函数和翻译键。
这将以用户选择的语言显示“删除”一词。
对于包含变量的翻译,将值数组作为第二个参数传递。
在语言文件中,相应的翻译使用占位符。
{0} 占位符将被 interval 的值替换。
对于需要特殊格式或 HTML 标签的更复杂翻译,请使用 i18n-t 组件。
来源: src/components/settings/Security.vue96-100 src/components/Login.vue1-114
用户可以通过“设置”页面更改他们的语言偏好。当用户选择一种语言时,偏好设置会保存在 localStorage.locale 中,UI 会立即更新。
添加需要翻译的新文本
src/lang/en.json$t 函数来使用该键。支持新语言
src/lang/ 中创建一个新的 JSON 文件,文件名使用区域设置代码。src/i18n.js 中将该语言添加到 languageList 对象。rtlLangs 数组中。一些最常用的翻译键包括:
| 键 | 目的 |
|---|---|
| “设置” | 设置页面标题 |
| “仪表板” | 仪表板页面标题 |
| “保存” | 保存按钮文本 |
| “取消” | 取消按钮文本 |
| “删除” | 删除按钮文本 |
| “是” | 确认对话框确认 |
| “否” | 确认对话框拒绝 |
| “登录” | 登录按钮文本 |
| “登出” | 登出按钮文本 |
来源: src/lang/es-ES.json1-680 src/lang/hu.json1-587 src/lang/pt-BR.json1-470
每个语言文件都遵循与英语文件(en.json)相同的结构。顶层键 languageName 定义了语言在其原生脚本中的显示名称。
文件的其余部分包含应用程序中所有可翻译文本的键值对。
来源: src/lang/es-ES.json1-4 src/lang/hu.json1-4 src/lang/pt-BR.json1-4
Uptime Kuma 的国际化系统为在整个应用程序中支持多种语言提供了一个强大的框架。Vue-i18n、结构化的语言文件和自动语言检测的结合,为世界各地的用户创造了无缝的体验。
有关其他 UI 组件和系统的更多信息,请参阅 前端组件文档。