Skip to content

i18n 国际化系统

模块概述

版本: v1.0.0 状态: ✅ 已实现 IPC处理器: 0个 (纯前端实现) 最后更新: 2026-03-05

基于 vue-i18n 9.x Composition API 的双层国际化系统。支持 7 种语言、主进程与渲染进程独立翻译、localStorage 持久化和动态语言切换。

核心特性

  • 7 种语言: zh-CN, en-US, zh-TW, ja-JP, ko-KR, fr-FR, es-ES
  • 双层架构: 主进程 4 语言 + 渲染进程 7 语言
  • Composition API: vue-i18n 9.x useI18n() 组合式 API
  • 持久化: localStorage 自动保存语言偏好
  • 26+ 翻译分区: 按功能模块组织翻译键
  • 多媒体国际化: 独立的多媒体模块翻译

1. 架构设计

1.1 整体架构图

┌──────────────────────────────────────────────────────────────────┐
│                        前端 (Vue3)                                │
├──────────────────────────────────────────────────────────────────┤
│              渲染进程 i18n (7种语言, 26+分区)                      │
│  ┌────────────┐ ┌────────────┐ ┌──────────────────────────────┐  │
│  │ vue-i18n   │ │ 语言切换器  │ │ localStorage 持久化          │  │
│  │ 9.x        │ │ 2个组件    │ │ app-locale / skill-tool-locale│  │
│  └────────────┘ └────────────┘ └──────────────────────────────┘  │
│  ┌──────────────────────────────────────────────────────────────┐ │
│  │  locales/: zh-CN, en-US, zh-TW, ja-JP, ko-KR, fr-FR, es-ES │ │
│  │  每语言 ~435行, 26+翻译分区                                   │ │
│  └──────────────────────────────────────────────────────────────┘ │
│  ┌──────────────────────────────────────────────────────────────┐ │
│  │  multimedia/: en-US.ts, zh-CN.ts (各~307行)                   │ │
│  └──────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
                              (无IPC, 纯前端)
┌──────────────────────────────────────────────────────────────────┐
│                        主进程 (Electron)                          │
├──────────────────────────────────────────────────────────────────┤
│              主进程 i18n (4种语言)                                 │
│  ┌──────────────────────────────────────────────────────────────┐ │
│  │  main/i18n/index.js (120行)                                   │ │
│  │  支持: zh-CN, en-US, ja-JP, ko-KR                            │ │
│  │  用途: 系统通知、错误消息、日志                                │ │
│  └──────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘

1.2 语言切换流程

用户选择语言 → LanguageSwitcher 组件

i18n.global.locale.value = newLocale

localStorage.setItem('app-locale', newLocale)

Vue 响应式更新所有 {{ $t('key') }} 模板

页面刷新后从 localStorage 恢复语言偏好

1.3 核心组件

组件文件行数说明
主进程 i18nmain/i18n/index.js120主进程翻译 (4语言)
渲染进程 i18nrenderer/i18n/index.ts425vue-i18n 配置
类型定义renderer/locales/types.ts471TypeScript 翻译键类型
语言文件 (×7)renderer/locales/*.ts各~4357种语言翻译
多媒体翻译renderer/locales/multimedia/*.ts各~307多媒体模块翻译
语言切换器LanguageSwitcher.vue82+482个切换组件

2. 核心模块

2.1 主进程 i18n

javascript
// main/i18n/index.js
const messages = {
  'zh-CN': { /* 中文简体 */ },
  'en-US': { /* English */ },
  'ja-JP': { /* 日本語 */ },
  'ko-KR': { /* 한국어 */ },
}

function t(key, locale?)     // 翻译函数
function setLocale(locale)   // 设置语言
function getLocale()         // 获取当前语言

2.2 渲染进程 i18n

typescript
// renderer/i18n/index.ts
import { createI18n } from 'vue-i18n'

const i18n = createI18n({
  legacy: false,             // Composition API 模式
  locale: savedLocale,       // 从 localStorage 恢复
  fallbackLocale: 'zh-CN',   // 回退语言
  messages: { ... },         // 7种语言
})

2.3 支持语言

语言代码语言主进程渲染进程
zh-CN简体中文
en-USEnglish
zh-TW繁體中文
ja-JP日本語
ko-KR한국어
fr-FRFrançais
es-ESEspañol

2.4 翻译分区 (26+)

common          # 通用 (确认/取消/保存等)
nav             # 导航菜单
knowledge       # 知识库
social          # 社交
trading         # 交易
project         # 项目管理
ai              # AI助手
settings        # 设置
security        # 安全
auth            # 认证
browser         # 浏览器自动化
mcp             # MCP协议
hooks           # 钩子系统
skills          # 技能系统
agents          # 多代理
plan            # 计划模式
remote          # 远程控制
audit           # 审计
marketplace     # 插件市场
sso             # SSO认证
enterprise      # 企业管理
collab          # 实时协作
ipfs            # IPFS存储
analytics       # 分析面板
performance     # 性能监控
quantization    # 量化

2.5 持久化机制

localStorage 键:
  app-locale          → 主应用语言偏好
  skill-tool-locale   → 技能工具语言偏好

恢复优先级:
  1. localStorage 已保存的偏好
  2. navigator.language (浏览器语言)
  3. 'zh-CN' (默认回退)

3. 数据模型

本模块无数据库表,所有语言偏好通过 localStorage 持久化。


4. IPC接口

本模块无 IPC 接口,国际化完全在前端实现。主进程的 i18n 模块独立运行,不通过 IPC 通信。


5. 前端页面

5.1 LanguageSwitcher 组件

vue
<!-- 主语言切换器 (82行) -->
<template>
  <a-select v-model:value="currentLocale" @change="changeLocale">
    <a-select-option v-for="lang in languages" :key="lang.value">
      {{ lang.label }}
    </a-select-option>
  </a-select>
</template>

<!-- 紧凑版切换器 (48行) -->
<template>
  <a-dropdown>
    <GlobalOutlined />
    <template #overlay>
      <a-menu @click="changeLocale">...</a-menu>
    </template>
  </a-dropdown>
</template>

5.2 使用方式

vue
<script setup>
import { useI18n } from "vue-i18n";
const { t } = useI18n();
</script>

<template>
  <h1>{{ t("knowledge.title") }}</h1>
  <p>{{ t("common.save") }}</p>
</template>

6. 文件结构

desktop-app-vue/src/main/i18n/
└── index.js                        # 主进程翻译 (120行)

desktop-app-vue/src/renderer/
├── i18n/
│   └── index.ts                    # vue-i18n 配置 (425行)
├── locales/
│   ├── types.ts                    # 翻译键类型定义 (471行)
│   ├── zh-CN.ts                    # 简体中文 (~435行)
│   ├── en-US.ts                    # English (~435行)
│   ├── zh-TW.ts                    # 繁體中文 (~435行)
│   ├── ja-JP.ts                    # 日本語 (~435行)
│   ├── ko-KR.ts                    # 한국어 (~435行)
│   ├── fr-FR.ts                    # Français (~435行)
│   ├── es-ES.ts                    # Español (~435行)
│   └── multimedia/
│       ├── en-US.ts                # 多媒体英文 (~307行)
│       └── zh-CN.ts                # 多媒体中文 (~307行)
└── components/
    └── LanguageSwitcher.vue        # 语言切换组件 (82+48行)

7. 相关文档


文档版本: 1.0 最后更新: 2026-03-05

基于 MIT 许可发布