Как установить локаль по умолчанию в ResourceBundleMessageSource? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть два языковых файла в /resources:

mymessage_de.properties
mymessage_en.properties

Я хочу создать пакет сообщений, который по умолчанию должен вернуться к _de, если пакет не может быть разрешен.Но, находясь на английском компьютере, пакет всегда возвращается к системному умолчанию.Что означает _en.

. Я могу отключить это, установив bundle.setFallbackToSystemLocale(false), что приведет к пустому сообщению.

Вопрос: как настроить язык по умолчанию для использования?

    @Bean
    public MessageSource messageBundleBlank() {
        ResourceBundleMessageSource bundle = new ResourceBundleMessageSource();
        bundle.setBasenames("mymessage");
        bundle.setDefaultEncoding(StandardCharsets.UTF_8.name());
        bundle.setFallbackToSystemLocale(false);
        //TODO how can I set a fallback to 'messages_de.properties'?
        return bundle;
    }

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Как насчет переключения локали?

public MessageSource messageBundleBlank() {
        boolean localeSwitched=false;
        if (Locale.getDefault().getLanguage().equalsIgnoreCase("en"))   {
            Locale.setDefault(Locale.GERMAN);
            localeSwitched=true;
        }
        ResourceBundleMessageSource bundle = new ResourceBundleMessageSource();
        bundle.setBasenames("mymessage");
        bundle.setDefaultEncoding(StandardCharsets.UTF_8.name());

        if(localeSwitched)  {
            Locale.setDefault(Locale.ENGLISH);
        }
        return bundle;
    } 
0 голосов
/ 06 сентября 2018

Посмотрите документацию для #setFallbackToSystemLocale:

Укажите, использовать ли языковой стандарт системы, если нет файлов для конкретный язык был найден. По умолчанию "true"; если это повернуто выключен, единственным резервным вариантом будет файл по умолчанию (например, "messages.properties" для базового имени "messages").

Итак, на самом деле вы могли бы изменить здесь значение по умолчанию на _de, изменив имя файла с mymessage_de.properties на mymessage.properties. Вы можете просто сделать пометку в своей документации на этот счет.

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