Java 如何在春季获取当前区域设置?
我用这个方法Java 如何在春季获取当前区域设置?,java,spring,Java,Spring,我用这个方法 LocaleContextHolder.getLocale() 获取切换的语言环境(日语),但它返回英语(默认)。如何检索jp_jp语言环境 //Return the Locale associated with the current thread, // if any, or the system default Locale else(English) LocaleContextHolder.getLocale(); 因此,首先检查当前线程。要在当前线程中设置区域
LocaleContextHolder.getLocale()
获取切换的语言环境(日语),但它返回英语(默认)。如何检索jp_jp语言环境
//Return the Locale associated with the current thread,
// if any, or the system default Locale else(English)
LocaleContextHolder.getLocale();
因此,首先检查当前线程。要在当前线程中设置区域设置,请使用:
setLocale(Locale locale);
方法,然后LocaleContextHolder.getLocale()将返回jp_jp localeRequestContextUtils 这将允许您获取请求的当前区域设置:
RequestContextUtils.getLocaleResolver(request).resolveLocale(request);
返回已由DispatcherServlet绑定到请求的LocalResolver
@参数
request
当前HTTP请求@返回当前
LocaleResolver
,或{@code null}
如果未找到:
public static LocaleResolver getLocaleResolver(HttpServletRequest request) {
return (LocaleResolver) request.getAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE);
}
这将返回一个LocaleResolver,从中可以加载区域设置
LocaleContextHolder
或如穆罕默德·坦维鲁尔·伊斯兰教所述:
LocaleContextHolder.getLocale();
您可以在此处查看文档:
有几种方法可以创建区域设置对象。获取当前本地对象
Locale locale = LocaleContextHolder.getLocale();
或
获取当前语言
Locale locale;
locale.getLanguage()
Locale locales = LocaleContextHolder.getLocale();
locales.getLanguage();
举一个简单的例子,假设你有资源:选择任意一个代码
@Autowired
private MessageSource messageSource;
@GetMapping(path = "/hello-world-I18N")
public String helloWorldInternationalize() {
return messageSource.getMessage("good.morning.message", null,
LocaleContextHolder.getLocale());
}
@GetMapping(path = "/hello-world-I18N")
public String helloWorldInternationalize(@RequestHeader(name = "Accept-Header", required = false) Locale locale) {
return messageSource.getMessage("good.morning.message", null, locale);
}
现在在请求中,邮递员发送的邮件头为:
接受语言:US/FN等任何您想要的语言
为相同的配置一个LocalResolver:
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(Locale.US); // set default to US
return localeResolver;
}
现在在application.properties文件中添加
spring.messages.basename=message//message是属性文件的基本名称
在资源文件夹中添加更多文件,名称为:message\u fr.properties,message.properties
并在此处添加内容。比如(早上好,message=Bonjour)
代码将很好地工作
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(Locale.US); // set default to US
return localeResolver;
}