菜单

语言系统

相关源文件

Ventoy 语言系统在整个 Ventoy 应用程序生态系统中提供多语言支持。本文档介绍了语言配置架构、本地化文件以及用于支持 Ventoy 安装工具和 Ventoy 启动菜单界面的多种语言的机制。有关语言设置以外的启动菜单自定义信息,请参阅 启动菜单自定义

语言系统架构

Ventoy 的语言系统由多个组件组成,它们协同工作,提供全面的本地化解决方案。

来源: Ventoy2Disk/Ventoy2Disk/Language.h144-154 LANGUAGES/languages.json1-67 INSTALL/ventoy_pack.sh92-112

翻译文件结构

1. 主要语言配置文件 (languages.json)

主要的翻译文件是 languages.json,它包含 Ventoy 安装程序界面的语言定义。每种语言条目包括:

  • 语言名称
  • 字体系列和字体大小设置
  • 作者署名
  • 各种 UI 元素的翻译字符串

languages.json 中的示例结构

{
    "name":"English (English)",
    "FontFamily":"Courier New",
    "FontSize":16,
    "Author":"longpanda",
    
    "STR_ERROR":"Error",
    "STR_WARNING":"Warning",
    "STR_INFO":"Info",
    ...
}

该文件包含一个 JSON 数组中的多个语言条目,每个条目遵循此结构。

来源: LANGUAGES/languages.json328-390

2. 启动菜单语言文件

位于 grub/menu/ 目录下的这些 JSON 文件包含了启动菜单界面的翻译。

{
    "VTLANG_LANGUAGE_NAME": "Brazilian Portuguese (Português Brasileiro)",
    "VTLANG_STR_HOTKEY_LIST": "L:Idioma  F1:Ajuda  F2:Explorar...",
    "VTLANG_RETURN_PREVIOUS": "Retornar ao menu anterior [Esc]",
    ...
}

每种语言都有自己的文件名,以语言代码命名(例如,巴西葡萄牙语为 pt_BR.json)。

来源: INSTALL/grub/menu/pt_BR.json1-10

3. 帮助文本文件

位于 grub/help/ 目录下的纯文本文件,包含翻译的帮助内容。

 L - Seleção de Idiomas
F1 - Exibir informações de ajuda
F2 - Explorar e inicializar os arquivos no disco local
...

当用户在启动菜单中按 F1 时会显示这些内容。

来源: INSTALL/grub/help/pt_BR.txt1-20

语言系统实现

语言系统通过几个关键组件实现:

来源: Ventoy2Disk/Ventoy2Disk/Language.h25-100 Ventoy2Disk/Ventoy2Disk/Language.h144-154

语言结构

用于存储语言信息的核心数据结构是 VENTOY_LANGUAGE 结构。

该结构保存:

  • 语言名称
  • 字体信息(字体系列和大小)
  • 字符串 ID 数组及其对应的翻译消息。

来源: Ventoy2Disk/Ventoy2Disk/Language.h144-154

字符串 ID 系统

所有可翻译的字符串都由 STR_ID 枚举中定义的枚举值表示。

这提供了一种在应用程序中一致地引用字符串的方式,而不管当前激活的语言是什么。

来源: Ventoy2Disk/Ventoy2Disk/Language.h25-100

获取本地化字符串

GetString() 函数和 _G() 宏简化了对翻译字符串的访问。

在应用程序代码中,字符串通过 _G(STR_ID) 来访问,该语句会检索当前选定语言的相应翻译。

来源: Ventoy2Disk/Ventoy2Disk/Language.h158-160

启动菜单语言系统

启动菜单有自己的语言系统,在 GRUB 环境中运行。

来源: INSTALL/ventoy_pack.sh86-112

在构建过程中,ventoy_pack.sh 会执行以下关键操作:

  1. 将菜单 JSON 文件压缩为 menu.tar.gz
  2. 将帮助文本文件压缩为 help.tar.gz
  3. 生成 menulang.cfg,其中包含每种可用语言的条目。

menulang.cfg 生成过程。

这会为每种语言创建 GRUB 菜单条目,在选择语言时调用 vt_load_menu_lang GRUB 函数。

来源: INSTALL/ventoy_pack.sh94-108

添加新语言

要向 Ventoy 添加新语言,必须创建以下文件:

  1. 安装程序翻译:在 languages.json 中添加新的语言条目。
  2. 启动菜单翻译:在 grub/menu/ 下创建一个新的 JSON 文件(例如,xx_YY.json)。
  3. 帮助文本翻译:在 grub/help/ 下创建一个新的文本文件(例如,xx_YY.txt)。

languages.json 条目模板

所有字符串条目(所有 STR_* 字段)都必须翻译。

创建一个以您的语言代码命名(例如,xx_YY.json)的文件。

确保所有 VTLANG_* 条目都已翻译。

帮助文本模板

创建一个以您的语言代码命名(例如,xx_YY.txt)的文件,其中包含翻译的帮助信息,格式应与现有帮助文件相同。

字体支持和渲染

Ventoy 使用每个语言条目中定义的字体设置。

"FontFamily":"Courier New",
"FontSize":16,

这些设置控制安装程序应用程序中的文本渲染。不同的语言可能需要不同的字体设置才能正确显示所有字符。

包含非拉丁字符(如阿拉伯语、中文、韩语等)的语言可能需要系统上提供特定的字体。

来源: LANGUAGES/languages.json4-5 LANGUAGES/languages.json134-135 LANGUAGES/languages.json199-200

结论

Ventoy 的语言系统是一个全面的解决方案,可在安装工具和启动环境之间提供多语言支持。通过将语言资源与应用程序代码分离并使用一致的字符串 ID 系统,Ventoy 在本地化方法上实现了灵活性和可维护性。

该系统目前支持包括英语、中文、阿拉伯语、韩语、葡萄牙语等多种语言。通过创建遵循既定格式的相应翻译文件,可以添加新语言。