如何使用libGDX中的I18NBundle更改游戏中的语言?

7

我已经创建了一个I18NBundle和一些包含字符串的.properties文件。为了创建bundle,我编写了以下代码:

baseFileHandle = Gdx.files.internal("Language/Lang");

da_DK = new Locale("da", "DK");
en_GB = new Locale("en", "GB");

Lang = I18NBundle.createBundle(baseFileHandle, en_GB);

这个功能很完美,我可以从bundle中提取值来获取我的字符串,当我初始化bundle时使用da_DK而不是en_GB也可以正常工作。

我的问题是,我想通过按一个按钮来在游戏中更改语言,但我不知道如何做到这一点。

我已经在谷歌上搜索了这个问题,但似乎找不到答案。

希望你能理解我的问题并能帮助我 :)

1个回答

7
如果你查看代码 (I18NBundle.setLocale(...),这是一个私有方法),你会看到这个JavaDoc:

设置包的语言环境。这个方法是私有的,因为包在其生命周期内不能更改语言环境。

这意味着,你想要做的事情是不可能的。当然,你可以创建一个新的I18NBundle,向构造函数提供另一个Locale,并且基本上只需要替换当前的I18NBundle。如果你正在使用AssetManager来加载它,这也是可能的,你只需要卸载它,然后再用不同的参数重新加载它即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接