feat: 添加语言管理功能,更新系统设置页面,优化用户体验

This commit is contained in:
2025-12-20 02:23:55 +07:00
parent 2703e6d007
commit 916cbe9d24
10 changed files with 210 additions and 16 deletions

View File

@@ -0,0 +1,60 @@
import type { Locale } from "vue-i18n";
export interface Language {
code: Locale;
name: string;
nativeName: string;
}
/**
* 语言管理组合式函数
*/
export function useLanguage() {
const { locale, availableLocales } = useI18n();
// 可用的语言列表
const languages: Language[] = [
{
code: "zh-CN",
name: "Chinese (Simplified)",
nativeName: "简体中文",
},
{
code: "en-US",
name: "English (US)",
nativeName: "English",
},
];
// 当前语言
const currentLanguage = computed(() => {
return languages.find(lang => lang.code === locale.value) || languages[0];
});
/**
* 切换语言
*/
function setLanguage(langCode: Locale) {
locale.value = langCode;
// 持久化到 localStorage
localStorage.setItem("app-language", langCode);
}
/**
* 从 localStorage 加载保存的语言
*/
function loadSavedLanguage() {
const saved = localStorage.getItem("app-language") as Locale;
if (saved && availableLocales.includes(saved)) {
locale.value = saved;
}
}
return {
languages,
currentLanguage,
locale,
setLanguage,
loadSavedLanguage,
};
}