Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring i18n-混淆默认区域设置_Java_Spring_Internationalization_Locale - Fatal编程技术网

Java Spring i18n-混淆默认区域设置

Java Spring i18n-混淆默认区域设置,java,spring,internationalization,locale,Java,Spring,Internationalization,Locale,使用intelliJ的一个非常简单的Spring Rest HelloWorld示例,我试图添加国际化(Locale.US作为默认值,只是一个可选的messages_es.properties以获得西班牙语版本) 这是我的Java配置文件: @Bean public LocaleResolver localeResolver(){ SessionLocaleResolver localeResolver = new SessionLocaleResolver(); localeR

使用intelliJ的一个非常简单的Spring Rest HelloWorld示例,我试图添加国际化(Locale.US作为默认值,只是一个可选的messages_es.properties以获得西班牙语版本)

这是我的Java配置文件:

@Bean
public LocaleResolver localeResolver(){
    SessionLocaleResolver localeResolver = new SessionLocaleResolver();
    localeResolver.setDefaultLocale(Locale.US);
    return localeResolver;
}

@Bean
public ResourceBundleMessageSource messageSource(){
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}
然后我有两个资源,每个资源只有一个条目:

messages.properties(默认值):

消息属性(默认值):

使用“Accept Language”头参数从Postman测试它,无论我对它设置了什么值,它总是返回带有西班牙语单词的版本(“Buenos días”)。即使设置了“en”、“en_GB”或“en_US”,也不会返回默认的英文版本。总是“布宜诺斯艾利斯”

但是,如果我只是将西班牙语更改为法语或其他语言,例如,我将messages_es.properties重命名为messages_fr.properties,它将正常工作。它总是返回“早上好”,除非我在header参数中发送“fr”,在这种情况下,它返回“Bonjour”或我在法语版本中设置的任何文本


有什么想法吗?

我已经解决了。这是一种系统语言配置。我的Mac电脑是用西班牙语配置的。Spring将ES语言环境作为默认语言环境

当我改为英语并重新启动应用程序时,它确实将英语作为默认语言


我想知道是否有什么可以跳过系统配置的事情,所以Spring配置就可以告诉实际语言是什么语言。

您实现了LocaleChangeInterceptor并将其添加到注册表吗?不。。。我已经解决了。检查我自己的答案。。。(接下来)可能是JVM选项
java-Duser.country=ES-Duser.language=ES…
OMG-MAN!!!我哭了!非常感谢。我的A*今天烧得很厉害。。。好吧,告诉你我今天吃了什么。我刚买了一双带有Thymeleaf的春季靴子,有一个和你一样的bug。我按照本教程创建了EN作为默认的lang和RU,FR作为附加值。当我转到/I获得RU lang时,我感到困惑,因为我将EN设置为默认语言。当转到/?lang=FR all OK时,站点显示我FR lang。但当我转到/?lang=EN时,我获得RU!***所以伙计们添加了
-Duser.country=EN-Duser.language=EN
来运行配置,因为我的fu**MacOS使用了RU lang,破坏了我的GJ Mate
good.morning.message=Good morning
good.morning.message=Buenos días