JavaFX locale bundle: не удается найти пакет для базового имени - PullRequest
0 голосов
/ 03 июня 2018

У меня есть приложение JavaFX с локализацией.Однако я не могу заставить его работать, так как FXML Loader не может найти пакет локализации

Caused by: java.util.MissingResourceException: Can't find bundle for base name bundles.lcars, locale en_US
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:845)
    at cz.muni.fi.pv168.view.GUI.start(GUI.java:24)

Структура :

Project structure

Основной класс графического интерфейса:

public void start(Stage primaryStage) throws Exception {
    Locale locale = Locale.getDefault();
    FXMLLoader fxmlLoader = new FXMLLoader();
    fxmlLoader.setResources(ResourceBundle.getBundle("bundles.lcars", locale));
    Parent root = FXMLLoader.load(getClass().getResource("lcars.fxml"),ResourceBundle.getBundle("bundles" +
            ".lcars", locale));
    Scene scene = new Scene(root, 1920 , 1080);   // 19:10
    // set scene to stage and other irrelevant stuff

}

Я также попытался переместить папку комплектов в корневой пакет, но безуспешно.Кроме того, я пытался ответить на все вопросы, на которые уже дан ответ, «не могу найти пакет для базового имени».

РЕДАКТИРОВАТЬ для @ Slaw Я изменил код на этот, но безуспешно

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("lcars.fxml"));
fxmlLoader.setResources(ResourceBundle.getBundle("bundles.lcars", locale));
Parent root = fxmlLoader.load();

Спасибо за помощь.

1 Ответ

0 голосов
/ 04 июня 2018

Попробуйте использовать класс ResourceBundle:

private static ResourceBundle language = ResourceBundle.getBundle(
        "cz.muni.fi.pv168.gui.GUI", Locale.getDefault());

Моя файловая структура выглядит следующим образом:

enter image description here

Из этого следуетполучить представление о том, как он настроен.

Вы ссылаетесь на локализованные строки следующим образом:

language.getString("agentsEmptyBirthDateMessage")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...