ResourceBundle получает неправильный ListResourceBundle (по локали)

Есть 2 класса:

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

Это правильное поведение или я что-то не так понял?


person dtrunk    schedule 14.11.2013    source источник


Ответы (1)


Вам нужен En-US или en-GB? Я думаю, что это отсутствует в вашем коде.

попробуйте создать экземпляр Locale следующим образом:

new Locale("en", "US");
person tviana    schedule 15.11.2013
comment
Нет, тот же результат. Если нет MyListResourceBundle_en, вместо него следует использовать MyListResourceBundle. Но он всегда использует MyListResourceBundle_de, даже если я указываю en в качестве локали. - person dtrunk; 15.11.2013