我正在创建一个游戏,并且在开始时我要求用户输入1/2/3数字来确认语言选择(荷兰语为1,法语为2,英语为3)。我已经有3个属性文件作为resourcebundles但现在我不知道如何将它们加载到我的游戏中。因此,当用户在我的JOptionPane中输入1时,应该有一个方法(或者什么?)将“语言”设置为荷兰语(插入cuz nr 1),或者如果插入2则为法语,或者为英语设置为3。
并且必须在几个app-class,startPlayerApp,startWorldMap等上工作...例如,在startPlayerApp中,我要求用户输入他的名字,在选择语言之后,如果他选择了荷兰语,那么应该问“Wat是不是纳姆?“,如果他选择英语”你叫什么名字?“等...
现在一切正常,但是我在普通荷兰语的字符串中“硬编码”了它,所以它现在只与unilanguage兼容,而不是多语言:(
如果有人能够尽快帮助我(最好是在本周末之前:p)这将是一个惊人的姿态!这是一个学校项目:(!!
答案 0 :(得分:0)
将资源文件命名为反映语言:
myresource.properties
myresource_fr.properties
...
然后使用ResourceBundle让它检测语言并加载相应的文件:
ResourceBundle.getBundle("myresource", Locale.getDefault());
最后,要获得所需的信息,请使用:
Messages.resources.getString(identifier);
请注意,我没有将_fr
传递给它,如果是这种情况,它将自动添加。如果请求的语言不可用,则默认为myresource.strings
,因此您应该在那里放一个英文翻译。
答案 1 :(得分:0)
根据用户的语言选择创建一个Locale
对象,例如英语Locale("en")
。
switch (selection) {
case 1:
locale = new Locale("nl");
break;
case 2:
locale = new Locale("fr");
break;
case 3:
locale = new Locale("en");
break;
default:
locale = Locale.getDefault();
}
然后使用locale
从.properties
加载相应的classpath
文件。
ResourceBundle localizedMessages = ResourceBundle.getBundle("messages", locale);
上面传递的第一个参数叫做 basename 。对于给定的区域设置xx
,资源包将加载basename_xx.properties
文件。因此,请创建.properties文件并将其放在classpath
。
messages_en.properties
askForName=What is your name?
messages_nl.properties
askForName=Wat is uw naam?
将其中一个文件复制为messages.properties,以便从那里提供默认语言环境。 (您可以删除_xx
文件作为默认值,但我建议保留它;有助于轻松切换默认值。)
通过所有这些设置,用她的语言向用户询问她的名字就像
一样简单localizedMessages.getString("askForName");
注意:我们稍微简化了区域设置。我们也可以指定国家/地区代码,例如Locale("en", "UK")
,以满足不同国家/地区语言使用方式的差异。
查看Javadocs了解详情。