Я пытаюсь сделать свою программу интернационализацией и нашел простой пример ее использования:


package tests;

import java.util.*;

public class I18NSample {

    static public void main(String[] args) {

        String language;
        String country;

        if (args.length != 2) {
            language = new String("en");
            country = new String("US");
        } else {
            language = new String(args[0]);
            country = new String(args[1]);
        }

        Locale currentLocale;
        ResourceBundle messages;

        currentLocale = new Locale(language, country);

        messages = ResourceBundle.getBundle("MessagesBundle", currentLocale);
        System.out.println(messages.getString("greetings"));
        System.out.println(messages.getString("inquiry"));
        System.out.println(messages.getString("farewell"));
    }
}

Но каждый раз, когда я компилирую код, я получаю исключение:

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name messages, locale en_US

Мои файлы называются MessagesBundle_en_US.properties и MessagesBundle_es_ES.properties и помещены в тот же пакет, что и класс I18NSample, так что я думаю, он должен работать.

1
cover 20 Май 2021 в 20:40

1 ответ

Лучший ответ

Он должен быть в корне пути к классам, потому что по умолчанию он не использует package.

В противном случае измените:

messages = ResourceBundle.getBundle("MessagesBundle", currentLocale);

К

messages = ResourceBundle.getBundle("tests.MessagesBundle", currentLocale);

Чтобы он работал с пакетом внутри каталога / пакета вашего класса.

2
Jasper Huzen 20 Май 2021 в 17:48