什么是国际化i18n
i18n,简而言之就是将一个软件,发布到全球市场,在每个地方打开,显示不同的语言的功能。
目前能根据你的系统,进行判断,加载不同的语言文件,默认支持中文和英文,也希望有更多的人加入翻译,提交到官方。
字符串国际化
1. __(key,{...})
在全局有一个名为"__"的function方法,第一个参数key是要显示的文本在环境json中的key,key是;英文字母数字的组合。
环境json中的value是要显示的文本,文本中可以使用变量占位符,每个变量用"${"和"}"阔起来。例如:`hello ${world}`
第二个参数是一个hash table,他用来映射到第一个参数的变量占位符部分,k是变量名,v是变量要显示的文本。
若变量占位符在第二个参数hash table里没有找到值的时候,会在当前语言json环境内寻找同样key的值进行替换。
最后根据当前语言环境json,"__"会返回对应的字符串结果。
而环境json,啧是key=value的json文本数据,位于resources/langs/目录里。
一般你的模块的语言文件在(resources/langs/module/<你的模块名>/<language Code>.json)里。例如: resources/langs/module/card/zh.json
音频国际化
- 音频国际化的功能是采用的fmod studio的计划功能。
每当加载你的模块的dat音频库的时候,他会同时加载”模块明__语言代号.dat”的音频dat。
这个dat是通过创建音频keys.txt列表产生的音频dat.
详细怎么产生,请参考: [FMOD - Dialogue and Localization](https://www.fmod.com/docs/2.01/studio/dialogue-and-localization.html)
- 当你创建好各语言的库的时候,若都加载失败,啧会加载默认的en的音频库,因此先创建英文的对白是首先的。
- 当用api播放时,请参考客户端api的音频播放的30(playProgram),只有通过playProgram播放的音频才支持国际化,又称为本地化。
注意事项
1. (Language code)语言代码,一般有头部2个字符和减号后的编码组成。若完整的编码无法找到相应的语言文件,软件啧会尝试加载父级的语言文件。例如: zh-CN编码下,若没有zh-CN.json,他会尝试加载zh.json
2. 若都没找到语言文件啧表明当前软件无法加载你平台的语言,你可以给官方提供支持,加入翻译工作。
在这个情况下,软件会加载默认语言(en)
3. 尽量做到国际化支持,如果你希望你的模块能被更多的人使用的话。