java - 如何在java中本地化基于xml的文件?

标签 java xml localization internationalization

假设我的 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/

相关文章:

Java 相当于 OpenSSL s_client 命令

android - 以编程方式更改 Spinner 背景

java - 写在一个xml的末尾

c# - 如何在 XAML 中显示本地化文本

iphone - 默认启动画面无法获取区域格式

java - 模拟库调用

java - 在 Java 中克隆一个对象需要什么

java - ElastichSearchRestTemplate 忽略可分页

c# - 如何在xml注释<code>标签中指定语言

android - 如何为从右到左的语言创建多语言 android 应用程序?