♻️ Refactor code

This commit is contained in:
2025-06-02 13:34:54 +08:00
parent 44f7baad10
commit a516b8973e
53 changed files with 1513 additions and 1094 deletions

View File

@@ -1,81 +1,17 @@
import {createI18n} from 'vue-i18n';
import messages from './locales';
import { ConfigService } from '@/../bindings/voidraft/internal/services';
import { LanguageType } from '@/../bindings/voidraft/internal/models';
import { ConfigUtils } from '@/utils/configUtils';
// 定义支持的语言类型
export type SupportedLocaleType = 'zh-CN' | 'en-US';
// 支持的语言列表
export const SUPPORTED_LOCALES = [
{
code: 'zh-CN' as SupportedLocaleType,
name: '简体中文'
},
{
code: 'en-US' as SupportedLocaleType,
name: 'English'
}
];
// 获取浏览器的默认语言
const getBrowserLanguage = (): SupportedLocaleType => {
const browserLang = navigator.language;
const langCode = browserLang.split('-')[0];
// 检查是否支持此语言
const supportedLang = SUPPORTED_LOCALES.find(locale =>
locale.code.startsWith(langCode) || locale.code.split('-')[0] === langCode
);
return supportedLang?.code || 'zh-CN';
};
// 创建i18n实例
const i18n = createI18n({
compositionOnly: false,
globalInjection: true,
silentTranslationWarn: true,
locale: 'zh-CN',
fallbackLocale: 'zh-CN' as SupportedLocaleType,
fallbackLocale: 'zh-CN',
silentFallbackWarn: true,
missingWarn: true,
fallbackWarn: false,
messages
});
// 从后端获取语言设置
const initializeLanguage = async () => {
try {
// 使用新的配置服务方法获取语言设置
const language = await ConfigService.Get('editor.language') as LanguageType;
if (language) {
const frontendLocale = ConfigUtils.backendLanguageToFrontend(language);
i18n.global.locale = frontendLocale as any;
}
} catch (error) {
console.error('Failed to get language from backend:', error);
// 如果获取失败,使用浏览器语言作为后备
const browserLang = getBrowserLanguage();
i18n.global.locale = browserLang as any;
}
};
// 立即初始化语言
initializeLanguage();
// 切换语言的方法
export const setLocale = async (locale: SupportedLocaleType) => {
if (SUPPORTED_LOCALES.some(l => l.code === locale)) {
try {
// 转换为后端语言类型
const backendLanguage = ConfigUtils.frontendLanguageToBackend(locale);
// 使用新的配置服务方法设置语言
await ConfigService.Set('editor.language', backendLanguage);
// 更新前端语言
i18n.global.locale = locale;
} catch (error) {
console.error('Failed to set language:', error);
}
}
};
export default i18n;

View File

@@ -48,6 +48,8 @@ export default {
},
settings: {
title: 'Settings',
backToEditor: 'Back to Editor',
systemInfo: 'System Info',
general: 'General',
editing: 'Editor',
appearance: 'Appearance',
@@ -56,6 +58,10 @@ export default {
comingSoon: 'Coming Soon...',
save: 'Save',
reset: 'Reset',
dangerZone: 'Danger Zone',
resetAllSettings: 'Reset All Settings',
resetDescription: 'This will restore all settings to their default values. This action cannot be undone.',
confirmReset: 'Are you sure you want to reset all settings? This action cannot be undone.',
globalHotkey: 'Global Keyboard Shortcuts',
enableGlobalHotkey: 'Enable Global Hotkeys',
window: 'Window/Application',
@@ -67,8 +73,8 @@ export default {
fontSize: 'Font Size',
fontSizeDescription: 'Editor font size',
fontSettings: 'Font Settings',
fontPreset: 'Font Preset',
fontPresetDescription: 'Choose a predefined font combination',
fontFamily: 'Font Family',
fontFamilyDescription: 'Choose editor font family',
fontWeight: 'Font Weight',
fontWeightDescription: 'Set the thickness of the font',
lineHeight: 'Line Height',

View File

@@ -48,6 +48,8 @@ export default {
},
settings: {
title: '设置',
backToEditor: '返回编辑器',
systemInfo: '系统信息',
general: '常规',
editing: '编辑器',
appearance: '外观',
@@ -56,6 +58,10 @@ export default {
comingSoon: '即将推出...',
save: '保存',
reset: '重置',
dangerZone: '危险操作',
resetAllSettings: '重置所有设置',
resetDescription: '这将恢复所有设置为默认值,此操作无法撤销',
confirmReset: '确定要重置所有设置吗?此操作无法撤销。',
globalHotkey: '全局键盘快捷键',
enableGlobalHotkey: '启用全局热键',
window: '窗口/应用程序',
@@ -67,8 +73,8 @@ export default {
fontSize: '字体大小',
fontSizeDescription: '编辑器字体大小',
fontSettings: '字体设置',
fontPreset: '字体预设',
fontPresetDescription: '选择预设的字体组合',
fontFamily: '字体',
fontFamilyDescription: '选择编辑器字体',
fontWeight: '字体粗细',
fontWeightDescription: '设置字体的粗细程度',
lineHeight: '行高',