feat: enhance theme management and image caching functionality
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user