學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

SpringBoot實現(xiàn)國際化開發(fā)

來源:北大青鳥總部 2023年03月21日 17:20

摘要: 在 SpringBoot中要實現(xiàn)國際化是比較簡單的,但如果要是在整個項目中實現(xiàn)國際化,還需要看前端使用的什么技術(shù),但是作為優(yōu)秀的后端工程師,當(dāng)然要先搞定后端為主,所以咱么今兒個就先把SpringBoot后端這部分搞定~

不知道大家在平常訪問一些網(wǎng)站的時候有沒有注意到,很多網(wǎng)站都是有中英兩個版面的,比如京東,我們就可以選擇很多不同國家的語言,這其實都是為了滿足不同國家和語言的人使用的需求。

通常情況下,一些比較復(fù)雜而且內(nèi)容個性化的網(wǎng)站都會針對不同的國家,在內(nèi)容上做一些調(diào)整,甚至是在不同的國家有獨(dú)立站點;淘寶、京東、亞馬遜都是這樣在不同的國家有不同的站點。而一些內(nèi)容比較標(biāo)準(zhǔn)化(網(wǎng)站內(nèi)容一般不變化)的公司,如果切換成英語,也只是網(wǎng)站的語言從中文變成英文而已(下面Bing網(wǎng)頁可以看到)

這樣我們就可以根據(jù)我們自己的情況,來訪問不同語言的網(wǎng)站,這個其實應(yīng)用程序國際化的體現(xiàn)。



什么是國際化?

國際化,簡單說就是應(yīng)用程序的能夠根據(jù)訪問者所在的地區(qū),展示相應(yīng)語言的網(wǎng)頁。

比如猿小二在中國訪問外國的網(wǎng)站,這個時候,猿小二看到網(wǎng)站就應(yīng)該是中文的,因為猿小二在中國,需要的是中文的內(nèi)容;包括時間也是東八區(qū)的;相反如果是在國外某個國家,那看到的就應(yīng)該是當(dāng)?shù)氐恼Z言文字和時間,這樣就可以一個網(wǎng)站根據(jù)不同的國家的用戶來展示相應(yīng)的內(nèi)容。

而那些沒有國際化的網(wǎng)站,就不能提供這么友好的體驗。

國際化 ,英文叫 internationalization由于單詞太長,而程序猿又是一個比較講究效率的群體(比較懶)有給他起了個簡稱叫i18n(在i 和 n 之間有18 個字母)這樣一張嘴就能說完!類似的還有Kubernetes(k8s);可見程序猿的創(chuàng)造力還是很豐富的,了解的什么是國際化了,接下來就要開始干了。



咱么先拿瀏覽器測試一下,看看效果!

其實大家也可以通過設(shè)置自己的瀏覽器語言來訪問一些網(wǎng)站試試效果,比如我們把瀏覽器的語言改成英文之后(火狐瀏覽器)



讓后我們在重新打開瀏覽器看下,網(wǎng)頁的文字都變成了英文:



相反如果設(shè)置成中文,對應(yīng)的網(wǎng)頁內(nèi)容就變成了中文,是不是很神奇呢?




這就說明這些網(wǎng)站其實都做了對應(yīng)的國際化處理,接下來咱么就要自己來實現(xiàn)一下了,搓搓小手......

同學(xué)們上手操練一把!


Spring Boot之國際化篇

在 SpringBoot中要實現(xiàn)國際化是比較簡單的,但如果要是在整個項目中實現(xiàn)國際化,還需要看前端使用的什么技術(shù),比如是JSP、還是Vue等;但是作為優(yōu)秀的后端工程師,當(dāng)然要先搞定后端為主,所以咱么今兒個就先把SpringBoot后端這部分搞定~



創(chuàng)建項目工程

首先,使用SpringInitializr創(chuàng)建Spring Boot基礎(chǔ)工程,直接在pom文件中加入web的依賴就可以。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>


創(chuàng)建國際化文件

由于SpringBoot默認(rèn)就支持國際化的,所以我們只需要在resources文件夾下創(chuàng)建國際化配置文件即可,這里為了方便演示效果,咱么需要創(chuàng)建3個配置文件:

  • messages.properties 默認(rèn)處理國際化的配置文件,要注意文件名是messages是固定的

  • messages_zh_CN.properties zh_CN 是中文簡體

  • messages_en_US.properties en_US 是美國英語


Tips:

文件名也要以messages開頭,如:messages_xxx.properties,如果不指定國際化語言則使用默認(rèn)配置文件。

然后,在三個配置文件中分別添加配置屬性。

在messages.properties添加中文配置信息,表示默認(rèn)是使用的使用中文。

# 默認(rèn)使用中文 i18n配置
username=課工場

在messages_zh_CN.properties添加中文配置信息,表示默認(rèn)是使用的使用中文。

# 使用中文i18n配置
username=課工場

在messages_en_US.properties添加中文配置信息,表示默認(rèn)是使用的使用中文。

# 使用美國英語i18n配置
username=kegongchang

只需要以上這么簡單的配置就可以了。


創(chuàng)建Controller

加下來就可以寫一個controller類來處理國際化了

/**
* 國際化測試
*/
@RestController
public class I18nController {


@Autowired
private MessageSource messageSource;


@GetMapping("i18n")
public String i18n() {
// 獲取當(dāng)前請求的區(qū)域Locale
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage("language", null, locale);
}
}

接下來就是見證奇跡的時刻...


見證奇跡的時刻

這里為了方便測試,我們使用IDEA的自定的HTTPClient工具,在請求頭中,添加請求參數(shù),注意參數(shù)的使用的-,而不是_下劃線:

  • Accept-Language 語言設(shè)置成英文(en-US),效果如下,這個是在模擬用戶使用的瀏覽器是語言,也就是用戶是使用英語的

  • Accept-Language 語言設(shè)置成中文(注意參數(shù)是zh-CN),同上,這里模擬用戶是使用中文作為瀏覽器的語言

這里咱么測試的使用的英語,中文同理只需要把Accept-Language的設(shè)置成zh_CN就可以了!


我們將請求頭里面的Accept-Language設(shè)置成英文,就說明用戶使用的瀏覽器語言英文,那用戶就應(yīng)該是歐美國家,所以對應(yīng)服務(wù)器返回的內(nèi)容就會是英文的內(nèi)容。



可以看到返回的結(jié)果是messages_en_US.properties配置文件配置的英語,是不是很簡單呢!



大家也可以使用瀏覽器測試,需要先設(shè)置瀏覽器的語言,如果瀏覽器的語言是英文就測試結(jié)果就是kegongchang,如果瀏覽器的語言是中文測試的結(jié)果就是課工場。


標(biāo)簽: springboot
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運(yùn)營班 爆滿開班
報名優(yōu)惠
免費(fèi)試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接