feat: enhance theme management and image caching functionality

This commit is contained in:
DEV_DSW
2026-04-16 15:43:35 +08:00
parent 411f4f3421
commit b1f589a674
13 changed files with 74 additions and 183 deletions

View File

@@ -1,6 +1,6 @@
import { createI18n, type I18n, type I18nOptions } from 'vue-i18n';
import { SUPPORTED_LANGUAGE_CODES, SUPPORTED_LANGUAGES, NAMESPACES, type LanguageCode } from './constants';
import { resolveSupportedLanguage, detectSystemLanguage } from './resolver';
import { resolveSupportedLanguage } from './resolver';
// 使用 import.meta.glob 动态加载所有语言文件
// 文件路径模式:./locales/{语言}/{命名空间}.json
@@ -34,32 +34,12 @@ function buildResources() {
return resources;
}
// 获取持久化的语言设置(稍后由 Pinia store 提供)
function getPersistedLanguage(): LanguageCode | null {
try {
const saved = localStorage.getItem('zn-language');
return saved && SUPPORTED_LANGUAGE_CODES.includes(saved as LanguageCode) ? saved as LanguageCode : null;
} catch {
return null;
}
}
// 确定初始语言:持久化设置 > 系统语言 > 默认中文
function determineInitialLocale(): LanguageCode {
const persisted = getPersistedLanguage();
if (persisted) return persisted;
const systemLang = detectSystemLanguage();
return systemLang;
}
async function createI18nInstance() {
const resources = buildResources();
const initialLocale = determineInitialLocale();
const options: I18nOptions = {
legacy: false,
locale: initialLocale,
locale: 'zh',
fallbackLocale: 'zh',
messages: resources, // 使用构建的资源对象
availableLocales: SUPPORTED_LANGUAGE_CODES,
@@ -85,11 +65,6 @@ export async function setLanguage(lang: LanguageCode, _i18n?: I18n) {
}
(__i18n.global.locale as unknown as { value: LanguageCode }).value = lang;
// 持久化到 localStorage稍后由 Pinia store 处理)
try {
localStorage.setItem('zn-language', lang);
} catch {}
}
export function getLanguage() {