聽起來高大上的國際化,起始就是在利用瀏覽器語言,或者頁面中的中英文切換,將頁面的文字在其餘語言和中文進行切換,好比:html
咱們想讓這個功能實現,點擊中文,頁面就是中文的,點擊英文就是英文的。java
那麼咱們來看,SpringBoot默認是按照你瀏覽器的語言來切換中英文的,配置文件呢,咱們能夠在resources中這樣寫:web
如圖方式,咱們建立3個文件,分別是無語言配置時候生效的login.properties;中文生效的login_zh_CN.properties;英文生效的login_en_US.properties; spring
也就是如下劃線的組合:文件名_區域_語言.properties;當咱們這樣命名生成文件後,IDEA也會幫咱們識別這是個國際化配置包,自動轉換成以下的模式:chrome
固然變成如上模式的時候,咱們再須要添加配置文件,直接在包右鍵new就能夠了瀏覽器
方便了許多~app
按照如圖的方法,點擊加號,添加一個key,咱們取名叫login.tip就是頁面中用到的提示的意思ide
接下來,按照咱們頁面須要轉換的量,來作配置,以下圖(我把等下登陸頁要用的都配置好了):url
還沒完,不要急,看起來複雜,學會了就簡單了,後邊咱們須要將頁面上引用這些值,來看。spa
記得在咱們的application.properties中添加配置參數,讓咱們的配置生效:
spring.messages.basename=i18n.login
基於以前的文章,咱們瞭解到Thymeleaf中的語法中@和#的做用,看看如何使用,先直接上圖:
前邊表單裏咱們將全部須要的參數用#{xx.yy}的形式,按照配置的國際化參數都設置好,爲了使用模板,咱們須要用到th:text之類的參數來替換原來的參數。(注意看原來頁有一樣的text、placeholder等參數)
而爲了使Thymeleaf模板生效,別忘了在html的參數中加上這句xmlns:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head>
這樣,咱們就能夠在切換瀏覽器語言的狀況下,進行中英文切換了,設置方法以chrome舉例(須要英文就添加英文置頂):
有耐心的同窗,咱們來看一下正題,怎麼使本身的配置生效:
注意,我這裏將訪問的頁面實際上是;localhost:8080/index.html?l=zh_CN,這也是咱們點擊中文按鈕之後生成的連接。在Thymeleaf的模板語法中,參數是不用「?」的,而是使用小括號,而後參數按照key=value的形式設置,注意單引號;
具體方法:(由於咱們的區域是用下劃線「_」來配置的,因此這裏用分隔符來取得區域和語言,放到request中)
package com.iceodin.common.component; import org.springframework.util.StringUtils; import org.springframework.web.servlet.LocaleResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Locale; /** * 在連接上攜帶區域信息 */ public class MyLocaleResolver implements LocaleResolver { @Override public Locale resolveLocale(HttpServletRequest httpServletRequest) { String l = httpServletRequest.getParameter("l"); Locale locale = Locale.getDefault(); if (!StringUtils.isEmpty(l)) { String[] split = l.split("_"); locale = new Locale(split[0], split[1]); } return locale; } @Override public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) { } }
搞定~