Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 如何在春季获取当前区域设置?_Java_Spring - Fatal编程技术网

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 locale

RequestContextUtils

这将允许您获取请求的当前区域设置:

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();
您可以在此处查看文档:

  • 请求上下文:

  • LocaleResolver:

  • LocaleContextHolder:


  • 有几种方法可以创建区域设置对象。获取当前本地对象

    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;
            }