麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

Spring Boot REST國際化的實現(xiàn)代碼

2024-07-14 08:42:42
字體:
供稿:網(wǎng)友

本指南將向您展示如何輕松只需幾個簡單的步驟即可實現(xiàn)Spring Boot應(yīng)用的國際化,從而總是在一個地方處理語言環(huán)境問題。

我們將討論如何在現(xiàn)有的Spring Boot項目中添加國際化。當(dāng)您處理應(yīng)該為來自不同國家/地區(qū)的用戶提供不同語言服務(wù)的項目時,app國際化的問題變得很常見。比如,你需要向中國用戶提供中文回復(fù)信息,并向法國用戶提供法語信息,那么讓我們來看看如何在Spring Boot中實現(xiàn)它。

讓我們使用Spring Initializer創(chuàng)建項目 ,這使得項目的創(chuàng)建更容易。選擇Web,Security,JPA,Actuator,Devtools等模塊。

下載項目后,解壓縮,并用打開IntelliJ IDEA打開。

第一件事是創(chuàng)建CustomLocaleResolver類,它將負(fù)責(zé)定義用戶的語言環(huán)境。

@Configuration<b>public</b> <b>class</b> CustomLocaleResolver        <b>extends</b> AcceptHeaderLocaleResolver        implements WebMvcConfigurer {  List<Locale> LOCALES = Arrays.asList(     <b>new</b> Locale(<font>"en"</font><font>),     <b>new</b> Locale(</font><font>"fr"</font><font>));  @Override  <b>public</b> Locale resolveLocale(HttpServletRequest request) {   String headerLang = request.getHeader(</font><font>"Accept-Language"</font><font>);   <b>return</b> headerLang == <b>null</b> || headerLang.isEmpty()      ? Locale.getDefault()      : Locale.lookup(Locale.LanguageRange.parse(headerLang), LOCALES);  }  @Bean  <b>public</b> ResourceBundleMessageSource messageSource() {   ResourceBundleMessageSource rs = <b>new</b> ResourceBundleMessageSource();   rs.setBasename(</font><font>"messages"</font><font>);   rs.setDefaultEncoding(</font><font>"UTF-8"</font><font>);   rs.setUseCodeAsDefaultMessage(<b>true</b>);   <b>return</b> rs;  }}</font>

這里告訴我們項目中支持2個語言環(huán)境:en和fr。在名為“ Accept-Language ” 的http的Header中傳遞語言環(huán)境。因此,如果Header存在這個變量名且它不為空,我們將使用它的語言環(huán)境,否則 - 我們將使用默認(rèn)語言環(huán)境,即en。

接下來讓我們創(chuàng)建一個類,負(fù)責(zé)根據(jù)指定的語言環(huán)境選擇正確的語言信息。我將其稱為Translator,它將有一個單獨(dú)的方法,它將接受應(yīng)翻譯的信息代碼。

@Component<b>public</b> <b>class</b> Translator {  <b>private</b> <b>static</b> ResourceBundleMessageSource messageSource;  @Autowired  Translator(ResourceBundleMessageSource messageSource) {   Translator.messageSource = messageSource;  }  <b>public</b> <b>static</b> String toLocale(String msgCode) {   Locale locale = LocaleContextHolder.getLocale();   <b>return</b> messageSource.getMessage(msg, <b>null</b>, locale);  }}

messageSource.getMessage(...)接受入?yún)?ldquo;msg”。但這并不是應(yīng)該翻譯的信息,它只是信息代碼。現(xiàn)在我們還沒有任何信息代碼定義,所以現(xiàn)在定義信息代碼。

在resources文件夾下,創(chuàng)建兩個文件:messages.properties和messages_fr.properties。

這是messages.properties的內(nèi)容:

hello=Hello World!welcome=Welcome to this guide!

這里是messages_fr.properties的內(nèi)容:

hello=Bonjour le Monde!welcome=Bienvenue dans ce guide!

在這里我們已經(jīng)定義了我們的消息代碼。他們是“ hellp ”和“ welcome ”。現(xiàn)在你可以指導(dǎo)我們應(yīng)該將哪些代碼傳遞給toLocale(String msgCode)方法,這樣才能根據(jù)用戶的語言環(huán)境獲取適當(dāng)?shù)南ⅰ?/p>

可能最后一步是創(chuàng)建簡單的控制器,讓我們將它命名為MainController,它只有一個端點,它將接受消息代碼,我們將其作為請求參數(shù)傳遞給HTTP請求。

@RestController@RequestMapping(value =“/ api”)<b>public</b> <b>class</b> MainController {@GetMapping()<b>public</b> String getMessage(@RequestParam(“msg”)String msg){<b>return</b> Translator。toLocale(msg) ;}}

現(xiàn)在已經(jīng)完成!

使用CURL發(fā)出簡單的請求:

curl -X GET -H "Accept-Language: fr" 'http://localhost:8080/api?msg-welcome'

這個將返回法語的welcome信息:

Bienvenue dans ce guide!

再發(fā)出請求:

curl -X GET -H "Accept-Language: en" 'http://localhost:8080/api?msg-welcome'

這個將返回英語的welcome信息:

welcome to this guide!

正如你看到:響應(yīng)會根據(jù)請求中傳遞的“ Accept-Language ”標(biāo)頭的值而有所不同。這樣,我們不需要檢查每個控制器方法中請求中傳遞的內(nèi)容,然后將其進(jìn)一步傳遞給服務(wù)層。我們現(xiàn)在可以在一個單獨(dú)的地方執(zhí)行此操作,即CustomLocaleResolver類。

源碼: GitHub 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 精品免费国产一区二区三区 | 日本最新免费二区三区 | 欧美一级特黄a | 中文字幕www. | 中文字幕在线观看视频www | 亚洲国产精品一区 | 午夜在线视频一区二区三区 | 伊人成人免费视频 | 亚洲人成网站免费播放 | 国产视频在线观看一区二区三区 | 国产午夜精品久久久久 | 精品国产91久久久久久浪潮蜜月 | 欧美激情区 | 欧美黄色一级片视频 | 亚洲欧美日韩精品久久 | 国产精选电影免费在线观看 | 91伊人久久| 久久久久免费电影 | 久青草免费视频 | 黄色羞羞视频在线观看 | 四虎久草 | 成人一级黄色 | 亚洲视频成人 | xxxxxx中国 | 色污视频在线观看 | 久久久精品视频在线观看 | 国产一区二区精品91 | 夜间福利网站 | 得得啪在线视频 | 亚洲第一视频在线 | www.99re1.com | 中国女警察一级毛片视频 | 欧美中文在线 | 91久久国产露脸精品国产 | 9999免费视频 | 亚洲精品午夜国产va久久成人 | 久久精精 | 粉嫩av一区二区三区四区在线观看 | 亚洲午夜在线观看 | 91精品国产91久久久久久丝袜 | 久久久久久中文字幕 |