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

时间:2014-08-01 22:28:07

标签: java localization libgdx

我创建了一个包含字符串的I18NBundle和一些.properties文件。为了创建捆绑,我写了这个:

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 个答案:

答案 0 :(得分:4)

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

  

设置捆绑区域设置。此方法是私有的,因为bundle在其生命周期内无法更改语言环境。

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