问题描述
我用这个方法
LocaleContextHolder.getLocale()
切换语言环境(日语),但它返回英语(默认)。 如何检索 jp_JP 语言环境?
1楼
//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 语言环境
2楼
请求上下文实用程序
这应该允许您获取请求的当前语言环境:
RequestContextUtils.getLocaleResolver(request).resolveLocale(request);
返回已由DispatcherServlet
绑定到请求的LocaleResolver
。
@param request
当前的 HTTP 请求
@return 当前的LocaleResolver
,或者{@code null}
如果没有找到:
public static LocaleResolver getLocaleResolver(HttpServletRequest request) {
return (LocaleResolver) request.getAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE);
}
这将返回一个 LocaleResolver,您可以从中加载语言环境。
LocaleContextHolder
或正如所提到的:Mohammad tanvirul islam:
LocaleContextHolder.getLocale();
您可以在此处查看文档:
RequestContextUtils : :
LocaleResolver : : //docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/LocaleResolver.html
LocaleContextHolder :
3楼
有多种方法可以创建 Locale 对象。获取当前的 Locale 对象。
Locale locale = LocaleContextHolder.getLocale();
或者
Locale locale;
获取当前语言
Locale locale;
locale.getLanguage()
Locale locales = LocaleContextHolder.getLocale();
locales.getLanguage();
4楼
举一个简单的例子。假设你有资源:选择任何一个代码
@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);
}
现在请求 POSTMAN 发送标题为:Accept-Language:US/FN 等任何你想要的。
为其配置一个 LocaleResolver:
@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_fr.properties, message.properties 并在此处添加内容。 喜欢 (good.morning.message = Bonjour)
代码将正常工作。