Ventoy 语言系统在整个 Ventoy 应用程序生态系统中提供多语言支持。本文档介绍了语言配置架构、本地化文件以及用于支持 Ventoy 安装工具和 Ventoy 启动菜单界面的多种语言的机制。有关语言设置以外的启动菜单自定义信息,请参阅 启动菜单自定义。
Ventoy 的语言系统由多个组件组成,它们协同工作,提供全面的本地化解决方案。
来源: Ventoy2Disk/Ventoy2Disk/Language.h144-154 LANGUAGES/languages.json1-67 INSTALL/ventoy_pack.sh92-112
主要的翻译文件是 languages.json,它包含 Ventoy 安装程序界面的语言定义。每种语言条目包括:
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
位于 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
位于 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 结构。
该结构保存:
来源: Ventoy2Disk/Ventoy2Disk/Language.h144-154
所有可翻译的字符串都由 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 会执行以下关键操作:
menu.tar.gzhelp.tar.gzmenulang.cfg,其中包含每种可用语言的条目。menulang.cfg 生成过程。
这会为每种语言创建 GRUB 菜单条目,在选择语言时调用 vt_load_menu_lang GRUB 函数。
来源: INSTALL/ventoy_pack.sh94-108
要向 Ventoy 添加新语言,必须创建以下文件:
languages.json 中添加新的语言条目。grub/menu/ 下创建一个新的 JSON 文件(例如,xx_YY.json)。grub/help/ 下创建一个新的文本文件(例如,xx_YY.txt)。所有字符串条目(所有 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 在本地化方法上实现了灵活性和可维护性。
该系统目前支持包括英语、中文、阿拉伯语、韩语、葡萄牙语等多种语言。通过创建遵循既定格式的相应翻译文件,可以添加新语言。