//AppConfig页面 @Bean LocaleResolver createLocaleResolver(){ CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver(); //廖大将setDefaultLocale设置为了Locale.ENGLISH,这里取default相当于服务器上的 cookieLocaleResolver.setDefaultLocale(Locale.getDefault()); cookieLocaleResolver.setDefaultTimeZone(TimeZone.getDefault()); return cookieLocaleResolver; } //Intecptor拦截器页面 //廖大将setDefaultLocale设置为了Locale.ENGLISH,这样处理后在拦截器页面 Locale locale = localeResolver.resolveLocale(request); System.out.println(locale); //locale为en,所以你要有对应的messages_en.properties文件,messageSource才能找到它,自己建一个(注意项目编码格式) //Controller页面 @GetMapping("/locale/{local}") public String local(@PathVariable("local") String local, HttpServletRequest servletRequest, HttpServletResponse servletResponse){ //在这里把一个locale对象设置为路由传过来的参数并传递给localeResolver Locale locale=new Locale(local); localeResolver.setLocale(servletRequest,servletResponse,locale); return "redirect:/"; }
到这整个效果就已经实现了。
关于其他:
createExtension那直接没看懂。老大不给点注释好难理解啊,用这种方式已经跑通了, <a href="/signin">{{ __messageSource__.getMessage('signin', null, __locale__) }}</a>
还有就是在controller页面
@GetMapping("/locale/{lo}") public String setLocale(@PathVariable("lo") String lo, HttpServletRequest request, HttpServletResponse response) { // 根据传入的lo创建Locale实例: Locale locale = null; int pos = lo.indexOf('_'); if (pos > 0) { String lang = lo.substring(0, pos); String country = lo.substring(pos + 1); locale = new Locale(lang, country); } else { locale = new Locale(lo); } // 设定此Locale: localeResolver.setLocale(request, response, locale);
廖大感觉这个判断没必要啊,lo是我在页面写死的,根本不可能会有下划线啊。我直接就这么设置的
//在这里把一个locale对象设置为路由传过来的参数并传递给localeResolver Locale locale=new Locale(local); localeResolver.setLocale(servletRequest,servletResponse,locale); return "redirect:/";
然后总结一下:
流程就是根据请求头中
Accept-Language: zh-CN,zh;q=0.8,en;q=0.2
找到对应本地化properties文件,并渲染数据到modelView中。
回复的时候好好这个文本格式好难调啊,又乱了,,,
Sign in to make a reply
Loading...
到这整个效果就已经实现了。
关于其他:
还有就是在controller页面
廖大感觉这个判断没必要啊,lo是我在页面写死的,根本不可能会有下划线啊。我直接就这么设置的
然后总结一下:
流程就是根据请求头中
Accept-Language: zh-CN,zh;q=0.8,en;q=0.2
找到对应本地化properties文件,并渲染数据到modelView中。