真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBootREST國際化的實現(xiàn)代碼

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

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、蘭溪網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5高端網(wǎng)站建設、商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站建設公司、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為蘭溪等各大城市提供網(wǎng)站開發(fā)制作服務。

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

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

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

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

@Configuration
public class CustomLocaleResolver 
       extends AcceptHeaderLocaleResolver 
       implements WebMvcConfigurer {

  List LOCALES = Arrays.asList(
     new Locale("en"),
     new Locale("fr"));

  @Override
  public Locale resolveLocale(HttpServletRequest request) {
   String headerLang = request.getHeader("Accept-Language");
   return headerLang == null || headerLang.isEmpty()
      ? Locale.getDefault()
      : Locale.lookup(Locale.LanguageRange.parse(headerLang), LOCALES);
  }

  @Bean
  public ResourceBundleMessageSource messageSource() {
   ResourceBundleMessageSource rs = new ResourceBundleMessageSource();
   rs.setBasename("messages");
   rs.setDefaultEncoding("UTF-8");
   rs.setUseCodeAsDefaultMessage(true);
   return rs;
  }
}


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

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

@Component
public class Translator {

  private static ResourceBundleMessageSource messageSource;

  @Autowired
  Translator(ResourceBundleMessageSource messageSource) {
   Translator.messageSource = messageSource;
  }

  public static String toLocale(String msgCode) {
   Locale locale = LocaleContextHolder.getLocale();
   return messageSource.getMessage(msg, null, locale);
  }
}

messageSource.getMessage(...)接受入?yún)ⅰ癿sg”。但這并不是應該翻譯的信息,它只是信息代碼。現(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 ”?,F(xiàn)在你可以指導我們應該將哪些代碼傳遞給toLocale(String msgCode)方法,這樣才能根據(jù)用戶的語言環(huán)境獲取適當?shù)南ⅰ?/p>

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

@RestController
@RequestMapping(value =“/ api”)
public class MainController {

@GetMapping()
public String getMessage(@RequestParam(“msg”)String msg){
return 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!

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

源碼: GitHub

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


文章題目:SpringBootREST國際化的實現(xiàn)代碼
分享網(wǎng)址:http://weahome.cn/article/gssdde.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部