聽起來高大上的國際化,起始就是在利用瀏覽器語言,或者頁面中的中英文切換,將頁面的文字在其他語言和中文進行切換,比如:

我們想讓這個功能實現,點擊中文,頁面就是中文的,點擊英文就是英文的。
國際化配置
那么我們來看,SpringBoot默認是按照你瀏覽器的語言來切換中英文的,配置文件呢,我們可以在resources中這樣寫:
1. 新建一個名叫“i18n”的包,我們用來存放國際化配置,然后在這個包下,我們再創建幾個properties的配置文件,用來配置語言:

如圖方式,我們創建3個文件,分別是無語言配置時候生效的login.properties;中文生效的login_zh_CN.properties;英文生效的login_en_US.properties;
也就是以下划線的組合:文件名_區域_語言.properties;當我們這樣命名生成文件后,IDEA也會幫我們識別這是個國際化配置包,自動轉換成如下的模式:

當然變成如上模式的時候,我們再需要添加配置文件,直接在包右鍵new就可以了


方便了許多~
2. 我們要在這些配置文件里做些改動,先來點擊login_en_US的配置文件,然后點擊下邊如圖所示的Resource Bundle的按鈕,切換編輯模式:

按照如圖的方法,點擊加號,添加一個key,我們取名叫login.tip就是頁面中用到的提示的意思

接下來,按照我們頁面需要轉換的量,來做配置,如下圖(我把等下登錄頁要用的都配置好了):

還沒完,不要急,看起來復雜,學會了就簡單了,后邊我們需要將頁面上引用這些值,來看。
記得在我們的application.properties中添加配置參數,讓我們的配置生效:
spring.messages.basename=i18n.login
HTML頁-配置
基於之前的文章,我們了解到Thymeleaf中的語法中@和#的作用,看看如何使用,先直接上圖:

前邊表單里我們將所有需要的參數用#{xx.yy}的形式,按照配置的國際化參數都設置好,為了使用模板,我們需要用到th:text之類的參數來替換原來的參數。(注意看原來頁有同樣的text、placeholder等參數)
而為了使Thymeleaf模板生效,別忘了在html的參數中加上這句xmlns:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head>
這樣,我們就可以在切換瀏覽器語言的情況下,進行中英文切換了,設置方法以chrome舉例(需要英文就添加英文置頂):

自定義配置,使我們頁面中的中英文切換生效
有耐心的同學,我們來看一下正題,怎么使自己的配置生效:
1. 文章頂部的截圖,我們看到的中英文按鈕的HTML,我們來看,如何配置:

注意,我這里將訪問的頁面其實是;localhost:8080/index.html?l=zh_CN,這也是我們點擊中文按鈕以后生成的鏈接。在Thymeleaf的模板語法中,參數是不用“?”的,而是使用小括號,然后參數按照key=value的形式設置,注意單引號;
2. 為了讓自定義的配置生效,我們要做的就是覆蓋或改變默認的配置,那么我們新建一個文件 MyLocaleResolver,用來實現 LocaleResolver 接口的作用;

具體方法:(因為我們的區域是用下划線“_”來配置的,所以這里用分隔符來取得區域和語言,放到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) { } }
3. 讓我們的配置生效,當然就要把配置加入到SpringBoot的容器中,所以,在之前的配置文件中,加入Bean:

4. 最好我們來看成果嘍:
默認的語言展示,由於瀏覽器默認中文,所以:

然后點擊下方English,看url和頁面的變化:

我們再點擊中文:

搞定~
