鸿蒙PC应用Hawkpass 多语言支持说明

📖 概述

Hawkpass on HarmonyOS 现已支持多语言界面,提供中文(简体)和英文两种语言选择。应用默认使用中文,用户可以通过菜单轻松切换语言。


🌍 支持的语言

语言 代码 状态
简体中文 zh-CN ✅ 默认语言
English en-US ✅ 支持

🚀 功能特性

1. 默认中文界面

应用启动时自动使用中文界面:

  • ✅ 菜单栏全中文
  • ✅ 窗口标题中文
  • ✅ 对话框中文
  • ✅ 所有提示信息中文

2. 实时语言切换

用户可以通过菜单实时切换语言,无需重启应用:

菜单栏 → 语言 → 选择语言

切换后立即生效:

  • ✅ 菜单立即更新
  • ✅ 窗口标题立即更新
  • ✅ 新打开的对话框使用新语言

3. 智能语言检测

应用会检测系统语言,但始终默认使用中文:

系统语言: zh-CN → 应用语言: zh-CN (中文)
系统语言: en-US → 应用语言: zh-CN (中文,默认)
系统语言: ja-JP → 应用语言: zh-CN (中文,默认)

📋 多语言内容

主菜单

中文界面
Hawkpass
  ├─ 关于 Hawkpass
  └─ 退出

编辑
  ├─ 撤销
  ├─ 重做
  ├─ 剪切
  ├─ 复制
  ├─ 粘贴
  └─ 全选

视图
  ├─ 重新加载
  ├─ 强制重新加载
  ├─ 切换开发者工具
  ├─ 放大/缩小/实际大小
  └─ 切换全屏

窗口
  ├─ 最小化
  ├─ 缩放
  ├─ 最大化
  └─ 关闭窗口

语言 ✨ (新增)
  ├─ 简体中文 (选中)
  └─ English

帮助
  ├─ 项目仓库
  ├─ 原版 Hawkpass
  ├─ 报告问题
  └─ Diceware 密码指南
英文界面
Hawkpass
  ├─ About Hawkpass
  └─ Quit

Edit
  ├─ Undo
  ├─ Redo
  ├─ Cut
  ├─ Copy
  ├─ Paste
  └─ Select All

View
  ├─ Reload
  ├─ Force Reload
  ├─ Toggle Developer Tools
  ├─ Zoom In/Out/Reset
  └─ Toggle Full Screen

Window
  ├─ Minimize
  ├─ Zoom
  ├─ Maximize
  └─ Close Window

Language ✨ (New)
  ├─ 简体中文
  └─ English (Selected)

Help
  ├─ Repository
  ├─ Original Hawkpass
  ├─ Report Issue
  └─ Diceware Guide

窗口标题

语言 标题
中文 Hawkpass - 密码生成器
英文 Hawkpass - Password Generator

关于对话框

中文版本
🔐 Hawkpass
密码生成器 on HarmonyOS
版本 1.2.0
基于 Diceware 的安全密码生成
英文版本
🔐 Hawkpass
Password Generator on HarmonyOS
Version 1.2.0
Secure password generation based on Diceware

🛠️ 使用方法

切换到英文

  1. 点击菜单栏 “语言”
  2. 选择 “English”
  3. 界面立即切换为英文

切换回中文

  1. Click menu “Language”
  2. Select “简体中文”
  3. Interface switches to Chinese immediately

查看当前语言

菜单栏 → 语言,当前语言会有 ✓ 标记


🔧 技术实现

文件结构

app/
├── main.js          # 主进程(集成多语言)
├── i18n.js          # 多语言配置文件 ✨ 新增
├── preload.js
├── package.json
└── dist/

多语言配置文件 (i18n.js)

const i18n = {
  'zh-CN': {
    menu: {
      app: 'Hawkpass',
      about: '关于 Hawkpass',
      quit: '退出',
      // ... 更多翻译
    },
    about: {
      title: '关于 Hawkpass',
      description: '密码生成器 on HarmonyOS',
      version: '版本',
      based: '基于 Diceware 的安全密码生成',
    },
    window: {
      title: 'Hawkpass - 密码生成器',
    },
  },
  'en-US': {
    // English translations
  },
};

API 函数

// 获取翻译
t('menu.about')  // → "关于 Hawkpass" (中文)
t('menu.about')  // → "About Hawkpass" (英文)

// 设置语言
setLocale('zh-CN')  // 切换到中文
setLocale('en-US')  // 切换到英文

// 获取当前语言
getLocale()  // → "zh-CN"

// 获取支持的语言列表
getSupportedLocales()  // → ["zh-CN", "en-US"]

主进程集成

// 导入多语言模块
const { t, setLocale, getLocale } = require('./i18n');

// 初始化语言(默认中文)
function initLanguage() {
  setLocale('zh-CN');  // 默认中文
}

// 创建窗口(使用多语言)
function createWindow() {
  const win = new BrowserWindow({
    title: t('window.title'),  // 多语言窗口标题
    // ...
  });
}

// 创建菜单(使用多语言)
function createMenu() {
  const template = [
    {
      label: t('menu.app'),
      submenu: [
        { label: t('menu.about'), /* ... */ },
        { label: t('menu.quit'), /* ... */ },
      ],
    },
    // ... 更多菜单
  ];
}

语言切换机制

{
  label: t('menu.language'),
  submenu: [
    {
      label: t('menu.chineseSimplified'),
      type: 'radio',
      checked: getLocale() === 'zh-CN',
      click: () => {
        setLocale('zh-CN');
        createMenu();  // 重新创建菜单
        // 更新所有窗口标题
        BrowserWindow.getAllWindows().forEach(win => {
          win.setTitle(t('window.title'));
        });
      },
    },
    {
      label: t('menu.english'),
      type: 'radio',
      checked: getLocale() === 'en-US',
      click: () => {
        setLocale('en-US');
        createMenu();  // 重新创建菜单
        BrowserWindow.getAllWindows().forEach(win => {
          win.setTitle(t('window.title'));
        });
      },
    },
  ],
}

📝 添加新语言

如果需要添加更多语言(如日语、韩语等),按以下步骤操作:

1. 在 i18n.js 中添加语言配置

const i18n = {
  'zh-CN': { /* 中文 */ },
  'en-US': { /* 英文 */ },
  'ja-JP': {  // ✨ 新增日语
    menu: {
      app: 'Hawkpass',
      about: 'Hawkpass について',
      quit: '終了',
      // ... 所有翻译
    },
    about: {
      title: 'Hawkpass について',
      description: 'HarmonyOS のパスワードジェネレーター',
      version: 'バージョン',
      based: 'Diceware による安全なパスワード生成',
    },
    window: {
      title: 'Hawkpass - パスワードジェネレーター',
    },
  },
};

2. 在菜单中添加选项

{
  label: t('menu.language'),
  submenu: [
    { label: t('menu.chineseSimplified'), /* ... */ },
    { label: t('menu.english'), /* ... */ },
    {  // ✨ 新增日语选项
      label: '日本語',
      type: 'radio',
      checked: getLocale() === 'ja-JP',
      click: () => {
        setLocale('ja-JP');
        createMenu();
        BrowserWindow.getAllWindows().forEach(win => {
          win.setTitle(t('window.title'));
        });
      },
    },
  ],
}

3. 翻译内容清单

需要翻译的内容:

  • ✅ 菜单栏(5个主菜单,30+ 菜单项)
  • ✅ 窗口标题
  • ✅ 关于对话框(4个字段)

总计约 35+ 个翻译条目


🌟 最佳实践

1. 保持默认中文

应用始终默认中文,符合中国用户习惯:

function initLanguage() {
  // 无论系统语言是什么,都默认中文
  setLocale('zh-CN');
}

2. 提供明显的语言切换入口

在菜单栏中独立的"语言"菜单,方便用户切换:

菜单栏 → 语言 → 选择

3. 实时生效

语言切换后立即更新所有界面元素,无需重启:

  • ✅ 菜单立即更新
  • ✅ 窗口标题立即更新
  • ✅ 单选按钮显示当前语言

4. 使用语义化的键名

翻译键名清晰易懂:

t('menu.about')        // 好:清晰的语义
t('m.abt')            // 差:不清晰

5. 分组组织翻译

按功能模块组织翻译:

{
  menu: { /* 菜单翻译 */ },
  about: { /* 关于对话框翻译 */ },
  window: { /* 窗口翻译 */ },
}

⚠️ 注意事项

1. Hawkpass 核心界面

Hawkpass 的核心密码生成界面是 React 应用(已编译在 dist/ 中),其内部界面由原版 Hawkpass 控制,暂不支持多语言。

支持多语言:

  • ✅ Electron 窗口标题
  • ✅ 菜单栏
  • ✅ 关于对话框

不支持多语言:

  • ❌ Hawkpass React 应用内部界面(英文)
  • ❌ 密码生成器内部文本

2. 系统语言检测

应用会检测系统语言,但始终默认使用中文

系统语言: en-US → 应用语言: zh-CN ✅
系统语言: ja-JP → 应用语言: zh-CN

如需自动适配系统语言,修改 initLanguage() 函数:

function initLanguage() {
  const systemLocale = app.getLocale();
  
  // 根据系统语言选择
  if (systemLocale.startsWith('zh')) {
    setLocale('zh-CN');
  } else if (systemLocale.startsWith('en')) {
    setLocale('en-US');  // 英文系统用英文
  } else {
    setLocale('zh-CN');  // 其他默认中文
  }
}

3. 新窗口的语言

新打开的窗口会自动使用当前选择的语言。

4. 持久化设置

当前实现中,语言设置不会持久化。每次启动应用都会重置为默认中文。

如需持久化,可以使用 electron-store:

const Store = require('electron-store');
const store = new Store();

// 保存语言设置
function saveLanguage(locale) {
  store.set('language', locale);
}

// 加载语言设置
function initLanguage() {
  const savedLocale = store.get('language', 'zh-CN');
  setLocale(savedLocale);
}

🔍 调试和测试

查看当前语言

在开发者工具控制台中:

// 应用启动时会输出
系统语言: en-US, 应用语言: zh-CN

测试语言切换

  1. 启动应用(默认中文)
  2. 菜单栏 → 语言 → English
  3. 检查菜单是否切换为英文
  4. 检查窗口标题是否更新
  5. 打开"关于"对话框,检查内容
  6. 切换回中文,重复验证

测试新窗口

  1. 切换语言(如英文)
  2. 菜单栏 → 帮助 → 关于 Hawkpass
  3. 新窗口应该使用当前语言

📚 相关文档


🎯 未来改进

短期计划

  • 添加语言设置持久化
  • 添加自动检测系统语言选项
  • 添加更多语言(日语、韩语、法语等)

长期计划

  • 为 Hawkpass React 应用添加多语言支持
  • 为错误提示添加多语言
  • 为快捷键说明添加多语言
  • 为帮助文档添加多语言

💡 示例场景

场景 1: 中文用户(默认)

1. 启动应用
2. 界面显示中文 ✅
3. 菜单栏:Hawkpass | 编辑 | 视图 | 窗口 | 语言 | 帮助
4. 窗口标题:Hawkpass - 密码生成器

场景 2: 切换到英文

1. 点击 "语言" → "English"
2. 菜单栏立即更新:Hawkpass | Edit | View | Window | Language | Help ✅
3. 窗口标题更新:Hawkpass - Password Generator ✅
4. 打开"关于":English content ✅

场景 3: 重启应用

1. 切换到英文
2. 关闭应用
3. 重新启动
4. 界面恢复为默认中文 ✅

更新日期: 2025年11月
作者: @jianguoxu
项目: Hawkpass on HarmonyOS


🌍 Hawkpass 现已支持多语言,默认中文界面,让中国用户使用更便捷!

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐