Spring i18n - 令人困惑的默认语言环境
Spring i18n - Confusing default locales
使用一个非常简单的 Spring Rest HelloWorld example with intelliJ,我正在尝试添加国际化(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(默认):
good.morning.message=Good morning
messages_es.properties(默认):
good.morning.message=Buenos días
使用 "Accept-Language" header 参数从 Postman 对其进行测试,无论我设置什么值,它总是 returns 带有西班牙语单词的版本("Buenos días").即使设置 "en"、"en_GB" 或 "en_US" 等,也不会返回默认的英文版本。总是 "Buenos días".
但是,如果我只是将西班牙语更改为法语或其他语言,即将 messages_es.properties 重命名为 messages_fr.properties,它会正常工作。它总是 returns "Good Morning" 除非我在 header 参数中发送 "fr" ,在这种情况下它 returns "Bonjour" 或我在其中设置的任何文本法语版。
有什么想法吗?
我已经解决了。这是一个系统语言配置。我的 Mac 配置为西班牙语。 Spring 正在将 ES Locale 作为默认语言环境。
当我更改为英语并重新启动应用程序时,它确实以英语为默认语言。
我想知道是否可以做一些事情来跳过系统配置,所以只有 Spring 配置告诉实际语言是什么。
使用一个非常简单的 Spring Rest HelloWorld example with intelliJ,我正在尝试添加国际化(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(默认):
good.morning.message=Good morning
messages_es.properties(默认):
good.morning.message=Buenos días
使用 "Accept-Language" header 参数从 Postman 对其进行测试,无论我设置什么值,它总是 returns 带有西班牙语单词的版本("Buenos días").即使设置 "en"、"en_GB" 或 "en_US" 等,也不会返回默认的英文版本。总是 "Buenos días".
但是,如果我只是将西班牙语更改为法语或其他语言,即将 messages_es.properties 重命名为 messages_fr.properties,它会正常工作。它总是 returns "Good Morning" 除非我在 header 参数中发送 "fr" ,在这种情况下它 returns "Bonjour" 或我在其中设置的任何文本法语版。
有什么想法吗?
我已经解决了。这是一个系统语言配置。我的 Mac 配置为西班牙语。 Spring 正在将 ES Locale 作为默认语言环境。
当我更改为英语并重新启动应用程序时,它确实以英语为默认语言。
我想知道是否可以做一些事情来跳过系统配置,所以只有 Spring 配置告诉实际语言是什么。