国际化系统支持多语言切换,使用 JSON 文件存储翻译文本。
language/
├── index.ts # i18n 核心模块
├── zh-CN.json # 简体中文
├── zh-TW.json # 繁体中文
├── en-US.json # 英语
├── ja-JP.json # 日语
├── ko-KR.json # 韩语
├── de-DE.json # 德语
├── es-ES.json # 西班牙语
├── fr-FA.json # 波斯语
├── ru-RU.json # 俄语
├── vi-VN.json # 越南语
├── README.md # 本文档
└── README-en.md # 本文档的英文版
import { i18n } from "@language";
// 获取翻译文本
const text = i18n.t("common.home");
// 带变量的翻译
const message = i18n.t("home.delete_confirm_message", { server: "MyServer" });
// 切换语言
i18n.setLocale("en-US");
// 获取当前语言
const locale = i18n.getLocale();import { i18n } from "@language";
// 响应式获取当前语言
const currentLocale = i18n.getLocaleRef();
// 翻译函数
const t = (key: string) => i18n.t(key);在 language/ 目录下创建 语言代码.json 文件:
{
"languageName": "English",
"common": {
"app_name": "Sea Lantern",
"home": "Home",
"settings": "Settings"
},
"home": {
"title": "Server Management",
"start": "Start",
"stop": "Stop"
}
}语言系统使用 Vite 的 import.meta.glob 自动扫描并加载所有 .json 文件,无需手动注册。
遵循 ISO 639-1 标准,格式为 语言-地区:
| 代码 | 语言 |
|---|---|
| zh-CN | 简体中文 |
| zh-TW | 繁体中文 |
| en-US | 英语 |
| ja-JP | 日语 |
| ko-KR | 韩语 |
| de-DE | 德语 |
| es-ES | 西班牙语 |
| ru-RU | 俄语 |
语言文件采用嵌套对象结构:
type TranslationNode = {
[key: string]: string | TranslationNode;
};
type LanguageFile = TranslationNode & {
languageName?: string; // 语言显示名称
};| 模块 | 说明 |
|---|---|
common |
通用文本(按钮、状态等) |
sidebar |
侧边栏 |
home |
首页 |
create |
创建服务器 |
console |
控制台 |
config |
配置编辑 |
players |
玩家管理 |
settings |
设置 |
about |
关于页面 |
tray |
系统托盘 |
| 方法 | 说明 |
|---|---|
t(key, options?) |
获取翻译文本,支持变量插值 |
setLocale(locale) |
设置当前语言 |
getLocale() |
获取当前语言代码 |
getLocaleRef() |
获取响应式语言引用 |
getAvailableLocales() |
获取所有支持的语言列表 |
isSupportedLocale(locale) |
检查语言是否支持 |
支持两种占位符格式:
{
"welcome": "欢迎, {{name}}!",
"count": "共 {count} 个服务器"
}i18n.t("welcome", { name: "Player" }); // "欢迎, Player!"
i18n.t("count", { count: 5 }); // "共 5 个服务器"- 保持一致性 - 相同概念使用相同术语
- 简洁明了 - 避免过长的翻译文本
- 保留占位符 -
{{variable}}和{variable}不要翻译 - 测试覆盖 - 添加语言后测试所有页面
- 复制
zh-CN.json或en-US.json作为模板 - 翻译所有文本内容
- 提交 PR 到 GitHub 仓库
感谢你的贡献!