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

SpringBoot實(shí)現(xiàn)國(guó)際化開(kāi)發(fā)

來(lái)源:北大青鳥(niǎo)總部 2023年03月21日 17:20

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

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

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

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



什么是國(guó)際化?

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

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

而那些沒(méi)有國(guó)際化的網(wǎng)站,就不能提供這么友好的體驗(yàn)。

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



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

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



讓后我們?cè)谥匦麓蜷_(kāi)瀏覽器看下,網(wǎng)頁(yè)的文字都變成了英文:



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




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

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


Spring Boot之國(guó)際化篇

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



創(chuàng)建項(xiàng)目工程

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

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


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

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

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

  • messages_zh_CN.properties zh_CN 是中文簡(jiǎn)體

  • messages_en_US.properties en_US 是美國(guó)英語(yǔ)


Tips:

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

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

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

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

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

# 使用中文i18n配置
username=課工場(chǎng)

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

# 使用美國(guó)英語(yǔ)i18n配置
username=kegongchang

只需要以上這么簡(jiǎn)單的配置就可以了。


創(chuàng)建Controller

加下來(lái)就可以寫(xiě)一個(gè)controller類(lèi)來(lái)處理國(guó)際化了

/**
* 國(guó)際化測(cè)試
*/
@RestController
public class I18nController {


@Autowired
private MessageSource messageSource;


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

接下來(lái)就是見(jiàn)證奇跡的時(shí)刻...


見(jiàn)證奇跡的時(shí)刻

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

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

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

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


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



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



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


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