Android自身提供了多语言解决方案,但是使用Libgdx开发游戏的时候应该尽量避免使用平台特殊的代码。
如果使用Android提供的方案那么在桌面的调试就有困难,使用Libgdx自身提供的是最方便的。
Libgdx目前已经Locale来解决这个问题。
简介
从技术上将多语言国际化是指在开发设计上能够实现增加对语言的支持而不需要大规模修改代码。国际化主要解决游戏和应用在不同语言区域的适应性问题。
Libgdx提供了一套解决方案,以I18NBundle类为中心。
宏观来看它的操作和Android原生解决方案类似,也是后缀语言代码来处理的。
结构
语言文件时一个个独立的配置文件,其名称是由基本名称加上语言代码组成。比如游戏superjump它的语言文件如下:
- superjump
- superjump_de
- superjump_en_GB
- superjump_fr_CA_VAR1
一定确保拥有一个默认配置,即superjump.properties,而其他的语言文件根据自身的需要增加吧。
语言文件的格式很随意,使用键值方式组合,比如:
gameName=SuperJump
newMission={0}, you have a new mission. Reach level {1}.
highScoreTime=High score achievedon {0,date}at {0,time}
语言文件本身支持按序号赋值和按名称赋值。
而中文化的语言文件可以写做:
gameName=超级跳跳人
newMission={0},,你有一个新任务,完成管卡{1}。
highScoreTime=最高分为{0,time},获得时间{0,date} 。
替换规则使用的是java.text.MessageFormat…