假设我的 java 应用程序中有一个下拉菜单。我使用下面的 XML 代码来调用菜单列表:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<menutypes>
<Menutype>
<name>Menu A</name>
<type>2</type>
<param>0</param>
<diameter>0</diameter>
<autocollimatable>false</autocollimatable>
<autotrackable>false</autotrackable>
</Menutype>
<Menutype>
<name>Menu B</name>
<type>1</type>
<param>0</param>
<diameter>30</diameter>
<autocollimatable>true</autocollimatable>
<autotrackable>false</autotrackable>
</Menutype>
<Menutype>
<name>Menu C</name>
<type>0</type>
<param>-17</param>
<diameter>23</diameter>
<autocollimatable>true</autocollimatable>
<autotrackable>false</autotrackable>
</Menutype>
</menutypes>
现在我在我的一个 java 类中调用上面的菜单,如下所示; instance = JAXB.unmarshal(new FileInputStream("src/resource/menutypes.xml"), Menutypes.class);
。现在,我想根据用户的区域设置为每个相应的菜单实现本地化,例如一个用于日语,一个用于中文等等,以便当他们打开应用程序时,它将根据其区域设置显示语言。 Java中有没有有效的方法来实现这一点?
最佳答案
一种可能是使用一个 ResourceBundle
来指定用于每个语言环境的 XML 文件的名称,然后从中获取文件名。然后,每个区域设置都会有一个 XML 文件。
MenuBundle_en_US.properties
filename=menutypes_en_US.xml
MenuBundle_jp_JP.properties
filename=menutypes_jp_JP.xml
MenuBundle_zh_CN.properties
filename=menutypes_zh_CN.xml
菜单.java
public Menutypes loadMenus(Locale locale) {
ResourceBundle bundle = ResourceBundle.getBundle("MenuBundle", locale);
String filename = bundle.getString("filename");
Menutypes instance = JAXB.unmarshal
new FileInputStream("src/resource/" + filename), Menutypes.class);
return instance;
}
类似的东西,模错误处理。我不知道是否有更好的方法用XML来做到这一点。
关于java - 如何在java中本地化基于xml的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566863/