ResourceBundle出错ListResourceBundle(由Locale提供)

时间:2013-11-14 21:59:18

标签: java bundle

有两个班级:

public class MyListResourceBundle_de extends ListResourceBundle {
    @Override
    protected Object[][] getContents() {
        return new Object[][] {
                { "hello", "Hallo" }, { "world", "Welt" }
        };
    }
}

public class MyListResourceBundle extends ListResourceBundle {
    @Override
    protected Object[][] getContents() {
        return new Object[][] {
                { "hello", "Hello" }, { "world", "World" }
        };
    }
}

当尝试获取语言环境 en 的包时,它总是得到 de 的那个而不是默认的那个(MyListResourceBundle):

public class MyTest {
    private static ResourceBundle bundle;

    @BeforeClass
    public static void setup() {
        bundle = ResourceBundle.getBundle("test.MyListResourceBundle", new Locale("en"));
    }

    @Test
    public void testLocale() {
        for (String key : bundle.keySet()) {
            System.out.println(key + " -> " + bundle.getString(key));
        }

        assertEquals("en", bundle.getLocale().toString());
    }
}

输出如下:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running test.MyTest
hello -> Hallo
world -> Welt
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.067 sec <<< FAILURE!

Results :

Failed tests:   testLocale(test.MyTest): expected:<[en]> but was:<[de]>

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

这是正确的行为还是我误解了什么?

1 个答案:

答案 0 :(得分:0)

您想要En-US或en-GB吗?我认为你的代码中缺少这个......

尝试像这样实现Locale:

new Locale("en", "US");