中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~國際化Locale正確的姿勢(shi)

Java中的(de)(de)Locale.getDefault()獲取(qu)的(de)(de)是(shi)操作系統的(de)(de)默認區(qu)(qu)域設置(zhi)(zhi),如果(guo)需(xu)要獲取(qu)客戶端瀏覽器的(de)(de)區(qu)(qu)域設置(zhi)(zhi),可以從(cong)HTTP頭(tou)中獲取(qu)"Accept-Language"的(de)(de)值來進行解(jie)析。

使用說明

Java網(wang)站中(zhong)實(shi)現國際化(多語言支持)通常需(xu)要涉(she)及(ji)以(yi)下(xia)幾個方面:

  1. 為所(suo)有(you)可見的(de)文本(如按(an)鈕(niu)、標(biao)簽、提(ti)示等)都提(ti)供(gong)多語言的(de)支持,遵循(xun)國(guo)際化的(de)標(biao)準,建(jian)議使用標(biao)準的(de)屬性文件(jian)進行(xing)配置(zhi)。

  2. 根(gen)(gen)據用戶請(qing)求(qiu)或瀏覽(lan)器設置來(lai)選(xuan)擇合適的(de)(de)Locale,以便在數據保存(cun)和顯示時使(shi)(shi)用相應的(de)(de)語言和地區格式。最常(chang)用的(de)(de)方法(fa)(fa)是使(shi)(shi)用Java的(de)(de)Locale類來(lai)獲取、設置當(dang)前的(de)(de)Locale,可(ke)以通過調(diao)用Locale類的(de)(de)getAvailableLocales()方法(fa)(fa)獲取支持的(de)(de)區域列表,也可(ke)以根(gen)(gen)據用戶的(de)(de)請(qing)求(qiu)或瀏覽(lan)器的(de)(de)設置來(lai)檢測用戶當(dang)前所(suo)使(shi)(shi)用的(de)(de)Locale。

  3. 針對國際化后的(de)日(ri)期、時間、數字等(deng)數據(ju)類型進行格(ge)式(shi)化處理,以便(bian)在不同的(de)語言、地區環境下使數據(ju)顯示更加友好和易讀。可(ke)以使用Java的(de)SimpleDateFormat類等(deng)進行處理。

正確的姿勢

在Java Web應用中(zhong)使用MessageSource對(dui)象實(shi)現國際(ji)化功(gong)能時,可以通過以下步驟使用瀏覽器語(yu)言動態設(she)置Locale區域。

  • 國際化文件在resources/i18n目錄,文件名是message_{語言}.properties
  • 通過MessageSource對象進行國際化配置信息的管理
  1. 配置類
@Configuration
public class LocalMessageConfig {

   /**
    * 系統國際化文件配置
    * @return MessageSource
    */
   @Bean
   public MessageSource messageSource() {
      ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
      messageSource.setBasename("classpath:i18n/message");
      messageSource.setDefaultEncoding("UTF-8");
      return messageSource;
   }

}
  1. 靜態工具類
 /**
 * 國際化消息配置 LocalMessageConfig中配置了resources/i18n/messages_zh_CN.properties.
 * 通過 LocaleContextHolder.getLocale()獲取客戶端瀏覽器的語言環境,就是請求頭中的Accept-Language的值,再根據它進行國際化消息的獲取。
 *
 * @UtilityClass所有的方法和屬性都會被加上static關鍵字,并且該類會創建一個私有的空參構造器
 */
@UtilityClass
public class LocaleMessageUtils {

   /**
    * 通過code 獲取錯誤信息
    * @param code
    * @return
    */
   public String getMessage(String code) {
   return getMessage(code, null);
   }

   /**
    * 通過code 和參數獲取錯誤信息
    * @param code
    * @return
    */
   public String getMessage(String code, Object... objects) {
      MessageSource messageSource = SpringContextUtils.getBean("messageSource");
      Locale locale = LocaleContextHolder.getLocale();
      return messageSource.getMessage(code, null,locale);
   }

}
  1. 配置文件有中文和英文兩個版本
# message_en_US.properties
title=System
# message_zh_CN.properties
title=\u7cfb\u7edf # 中文咱們使用unicode編碼

  1. 在前臺控制器中獲取配置信息
	@GetMapping("get-title")
	public ResponseEntity title() {
		return ResponseEntity.ok(
				LocaleMessageUtils.getMessage("title")
		);
	}

  1. 通過切換瀏覽器的語言,來實現中文和英文的輸出


通過這個國際化,我們可以更優雅的實現多語言的系統設計了,不硬編碼在程序里是程序員永遠追求的方向

posted @ 2023-05-19 17:45  張占嶺  閱讀(3598)  評論(0)    收藏  舉報