6.1.1:针对 Edgeless 插件的多语言自适应实现方式
注意:此部分仅针对进阶开发者,一般用户无需理会此部分。
Hikari PE V8.0 是一个多语言的项目。
为了能够让 Edgeless 插件同时适应多种语言的 PE(例如 Hikari PE V8.0 TC 繁体中文版),我们建议 Edgeless 插件的开发者针对这一点新增多语言自适应特性。新增此特性不会影响其它兼容 Edgeless 插件的仅有简体中文版的 PE(含 Edgeless 自身)。
以下内容也适用于 PE 内其它涉及到多语言自适应配置的部分。 同样的,如果您对加以修改定制不感兴趣,请勿继续阅读这一章节。
我们假设您的插件的内容放置在了 X:\Program Files\Edgeless\your_plugin_dir 中。如要实现多语言自适应,除了要在您的插件目录中新建 Localization 目录之外,您还需要在 Edgeless 插件的加载脚本(cmd 或 wcs)开头新增以下内容。
针对 CMD 格式的加载脚本开头(注释部分无需复制):
1
:: 以下命令会将语言代码存入变量 %langcode% 中
2
for /f "tokens=2* delims= " %%A in ('Reg Query HKLM\System\CurrentControlSet\Control\Nls\Language /v InstallLanguage') do set langcode=%%B
3
:: 以下命令会读取相关本地化后的代码,以及 fallback
4
if exist "%ProgramFiles%\Edgeless\your_plugin_dir\Localization\AppName_%langcode%.cmd" (
5
call "%ProgramFiles%\Edgeless\your_plugin_dir\Localization\AppName_%langcode%.cmd"
6
) else (
7
call "%ProgramFiles%\Edgeless\your_plugin_dir\Localization\AppName_0409.cmd"
8
)
Copied!
针对 WCS 格式的加载脚本开头(注释部分无需复制):
1
// 以下命令会将语言代码存入变量 %langcode% 中
2
REGI $HKLM\SYSTEM\ControlSet001\Control\Nls\Language\InstallLanguage,langcode
3
// 以下命令会读取相关本地化后的代码,以及 fallback
4
IFEX %ProgramFiles%\Edgeless\your_plugin_dir\Localization\AppName_%langcode%.ini,LOAD %ProgramFiles%\Edgeless\MacType\Localization\AppName_%langcode%.ini!LOAD %ProgramFiles%\Edgeless\your_plugin_dir\Localization\AppName_0409.ini
Copied!
位于 Localization 目录中的 AppName_[语言代码].cmdAppName_[语言代码].ini 中,建议填写在特定语言下会如何操作的内容,即将对应语言显示的内容存入变量。以简体中文为例,它的语言代码为 0804,因此您需要在 Localization 中新建 AppName_0804.cmd
AppName_0804.cmd 内容示例(必须保存为对应语言的本地编码,例如 AppName_0804.cmd 必须保存为 GBK 编码,AppName_0404.cmd 必须保存为 Big5 编码,AppName_0411.cmd 必须保存为 Shift-JIS 编码):
1
set programset001=示例程序组
2
set my_plugin_name=示例插件名
Copied!
AppName_0804.ini 内容示例(可保存为 UTF-8 编码):
1
ENVI programset001=示例程序集
2
ENVI my_plugin_name=示例插件名
Copied!
如果不希望照顾太多语言,我们建议 Edgeless 开发者开发插件时,至少指定一种 fallback 语言。Hikari Calyx Tech 建议使用美国英语,编码 0409,因此您必须要新建 AppName_0409.cmdAppName_0409.ini。这两个文件可以以 DOS 437 标准编码形式保存。
如需调用以上变量,CMD 或 WCS 各有调用方式。以下调用示例包含创建对应本地化语言名称的快捷方式、将适用于对应语言的程序配置文件改名、以及导入适用于对应语言的注册表的操作。
针对 CMD 格式的加载脚本调用示例:
1
PECMD LINK %Programs%\%programset001%\%my_plugin_name%,%ProgramFiles%\Edgeless\my_plugin_dir\my_plugin.exe
2
PECMD LINK %Desktop%\%my_plugin_name%,%ProgramFiles%\Edgeless\my_plugin_dir\my_plugin.exe
3
if exist "%ProgramFiles%\Edgeless\my_plugin_dir\plugincfg_%langcode%.ini" (
4
MOVE "%ProgramFiles%\Edgeless\my_plugin_dir\plugincfg_%langcode%.ini" "%ProgramFiles%\Edgeless\my_plugin_dir\plugincfg.ini"
5
) else (
6
MOVE "%ProgramFiles%\Edgeless\my_plugin_dir\plugincfg_%langcode%.ini" "%ProgramFiles%\Edgeless\my_plugin_dir\plugincfg.ini"
7
)
8
if exist "%ProgramFiles%\Edgeless\my_plugin_dir\pluginreg_%langcode%.reg" (
9
REG IMPORT "%ProgramFiles%\Edgeless\my_plugin_dir\pluginreg_%langcode%.reg"
10
) else (
11
REG IMPORT "%ProgramFiles%\Edgeless\my_plugin_dir\pluginreg_0409.reg"
12
)
Copied!
注意,如果调用命令中涉及到管道符号“|”的使用,必须要在参数前后添加英文半角双引号,即"
示例: PECMD "TEAM TIPS %my_tips_title%,%my_tips_name%,15000,1,#1|WAIT 15000"
针对 WCS 格式的加载脚本调用示例:
1
LINK %Programs%\%programset001%\%my_plugin_name%,%ProgramFiles%\Edgeless\my_plugin_dir\my_plugin.exe
2
LINK %Desktop%\%my_plugin_name%,%ProgramFiles%\Edgeless\my_plugin_dir\my_plugin.exe
3
IFEX %ProgramFiles%\Edgeless\my_plugin_dir\plugincfg_%langcode%.ini,FILE %ProgramFiles%\Edgeless\my_plugin_dir\plugincfg_%langcode%.ini->%ProgramFiles%\Edgeless\my_plugin_dir\plugincfg.ini!FILE %ProgramFiles%\Edgeless\my_plugin_dir\plugincfg_0409.ini->%ProgramFiles%\Edgeless\my_plugin_dir\plugincfg.ini
4
IFEX %ProgramFiles%\Edgeless\my_plugin_dir\pluginreg_%langcode%.reg,EXEC %SystemRoot%\System32\REG.exe IMPORT "%ProgramFiles%\Edgeless\my_plugin_dir\pluginreg_%langcode%.reg"!EXEC %SystemRoot%\System32\REG.exe IMPORT "%ProgramFiles%\Edgeless\my_plugin_dir\pluginreg_0409.reg"
Copied!
通过读取语言代码,我们就可以实现同一个插件能够同时适应多种语言的 PE。当您具有一定基础时,您在利用语言代码特性制作自适应插件时可以做的更加灵活。
附:常见语言代码
语言
系统代码
语言代码
简体中文 Simplified Chinese
zh-CN
0804
繁体中文 Traditional Chinese
zh-TW
0404
英文 English
en-US
0409
日文 Japanese
ja-JP
0411
韩文 Korean
ko-KR
0412
更多语言的对应关系,可在这里找到列表
最近更新 1yr ago
复制链接