亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring Boot REST國際化的實現代碼

2024-07-14 08:42:42
字體:
來源:轉載
供稿:網友

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

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

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

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

第一件事是創建CustomLocaleResolver類,它將負責定義用戶的語言環境。

@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個語言環境:en和fr。在名為“ Accept-Language ” 的http的Header中傳遞語言環境。因此,如果Header存在這個變量名且它不為空,我們將使用它的語言環境,否則 - 我們將使用默認語言環境,即en。

接下來讓我們創建一個類,負責根據指定的語言環境選擇正確的語言信息。我將其稱為Translator,它將有一個單獨的方法,它將接受應翻譯的信息代碼。

@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(...)接受入參“msg”。但這并不是應該翻譯的信息,它只是信息代碼?,F在我們還沒有任何信息代碼定義,所以現在定義信息代碼。

在resources文件夾下,創建兩個文件:messages.properties和messages_fr.properties。

這是messages.properties的內容:

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

這里是messages_fr.properties的內容:

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

在這里我們已經定義了我們的消息代碼。他們是“ hellp ”和“ welcome ”?,F在你可以指導我們應該將哪些代碼傳遞給toLocale(String msgCode)方法,這樣才能根據用戶的語言環境獲取適當的消息。

可能最后一步是創建簡單的控制器,讓我們將它命名為MainController,它只有一個端點,它將接受消息代碼,我們將其作為請求參數傳遞給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) ;}}

現在已經完成!

使用CURL發出簡單的請求:

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

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

Bienvenue dans ce guide!

再發出請求:

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

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

welcome to this guide!

正如你看到:響應會根據請求中傳遞的“ Accept-Language ”標頭的值而有所不同。這樣,我們不需要檢查每個控制器方法中請求中傳遞的內容,然后將其進一步傳遞給服務層。我們現在可以在一個單獨的地方執行此操作,即CustomLocaleResolver類。

源碼: GitHub 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久www成人免费精品| 中文字幕在线国产精品| 亚洲一区二区三区香蕉| 精品视频一区在线视频| 91在线中文字幕| 久久999免费视频| 国产在线精品成人一区二区三区| 91久久久久久久久| 中文字幕亚洲欧美日韩高清| 国产成人综合精品在线| 亚洲欧美日本另类| 国产精品午夜一区二区欲梦| 91色在线观看| 久久久精品国产一区二区| 欧美另类老肥妇| 中文国产成人精品久久一| 久久久久久久一区二区| 国产精品www色诱视频| 国产精品亚洲第一区| 日本亚洲欧洲色α| 国产精品久久久久久久久久| 久久偷看各类女兵18女厕嘘嘘| 国产成人精品免费视频| 日韩精品视频免费| 日韩中文字幕在线精品| 中文字幕亚洲一区| 日韩一区二区三区xxxx| 国产成人在线一区| 亚洲国产一区自拍| 欧美老女人www| 日韩电影中文字幕在线观看| 亚洲视频欧洲视频| 欧美大片大片在线播放| 中文字幕日本精品| 日韩在线免费av| 国内精品国产三级国产在线专| 日韩欧中文字幕| 欧美—级高清免费播放| 全亚洲最色的网站在线观看| 欧美视频专区一二在线观看| 国产日韩在线看| 色妞色视频一区二区三区四区| 欧美精品在线观看| 91人成网站www| 亚洲最大成人免费视频| 亚洲美女www午夜| 欧美成人h版在线观看| 欧美黑人一区二区三区| 欧美激情第一页xxx| 日韩电影第一页| 日韩精品中文字幕在线观看| 亚洲精品日韩丝袜精品| 中文国产亚洲喷潮| 成人免费网站在线看| 亚洲第一视频网| 亚洲永久免费观看| 最新的欧美黄色| 亚洲欧美999| 亚洲激情久久久| 欧美xxxx做受欧美.88| 欧美在线视频观看免费网站| 国产欧美亚洲视频| 富二代精品短视频| 91在线无精精品一区二区| 亚洲欧美在线免费| 成人免费视频网址| 国产精品99久久久久久久久久久久| 久久精品国产一区| 日韩经典中文字幕| 国产精品aaa| 播播国产欧美激情| 北条麻妃久久精品| 午夜精品久久17c| 成人午夜在线影院| 91九色国产视频| 欧美电影在线观看网站| 一区二区三区 在线观看视| 日韩精品小视频| 亚洲国产欧美在线成人app| 色偷偷av一区二区三区乱| 日韩视频―中文字幕| 97国产suv精品一区二区62| 成人福利免费观看| 欧美极品xxxx| 日韩视频免费看| 久久久久亚洲精品成人网小说| 日韩在线欧美在线国产在线| 91免费高清视频| 久久久久久久久91| 97色在线视频| 久久av在线播放| 欧美高清无遮挡| 在线观看久久久久久| 亚洲a在线播放| 中文字幕亚洲一区在线观看| 亚洲欧洲午夜一线一品| 国产99视频在线观看| 茄子视频成人在线| 久久精品这里热有精品| 国自产精品手机在线观看视频| 亚洲美女自拍视频| 日韩av电影中文字幕| 亚洲精品福利资源站| 欧美成人黄色小视频| 国产午夜精品免费一区二区三区| 91精品综合久久久久久五月天| 欧美日韩午夜视频在线观看| 久久精品一区中文字幕| 亚洲精品www| 国产午夜精品全部视频播放| 66m—66摸成人免费视频| 国产精品自产拍在线观看| 欧美在线亚洲在线| 97国产在线视频| 国产一区二区在线播放| 日韩av片免费在线观看| 欧美激情中文字幕在线| 亚洲最大福利视频网| 亚洲日本中文字幕免费在线不卡| 自拍偷拍免费精品| 国产精品wwwwww| 久久人人爽人人爽爽久久| 性欧美xxxx| 亚洲欧美国产另类| 国产自产女人91一区在线观看| 久久99精品久久久久久青青91| 亚洲视频axxx| 久久免费少妇高潮久久精品99| 亚洲www在线| 欧美成人在线免费| 国产精品久久久av久久久| 中文字幕视频一区二区在线有码| 国产精品wwwwww| 中文精品99久久国产香蕉| 日韩精品视频在线播放| 国产欧美精品在线播放| 亚洲影院污污.| 97国产精品人人爽人人做| 欧美乱人伦中文字幕在线| 亚洲理论在线a中文字幕| 国产97人人超碰caoprom| 午夜精品在线观看| 97视频免费看| 日韩黄色av网站| 精品欧美激情精品一区| 国语自产在线不卡| 亚洲精品美女久久| 美女扒开尿口让男人操亚洲视频网站| 日韩精品免费综合视频在线播放| 欧美一级视频在线观看| 91精品国产综合久久香蕉922| 97不卡在线视频| 久久久国产精品免费| 亚洲精品一区中文字幕乱码| 一本色道久久综合狠狠躁篇怎么玩| 亚洲奶大毛多的老太婆| 色多多国产成人永久免费网站| 中文字幕日韩av综合精品| 国产婷婷97碰碰久久人人蜜臀| 欧美视频在线免费| 亚洲aⅴ男人的天堂在线观看| 国产精品一区二区三| 91人人爽人人爽人人精88v| 欧美性xxxxx|