1. 程式人生 > >Spring Boot國際化(i18n)

Spring Boot國際化(i18n)

國際化(internationalization)是設計和製造容易適應不同區域要求的產品的一種方式。它要求從產品中抽離所有地域語言,國家/地區和文化相關的元素。換言之,應用程式的功能和程式碼設計考慮在不同地區執行的需要,其程式碼簡化了不同本地版本的生產。開發這樣的程式的過程,就稱為國際化。

       那麼當我們使用Spring Boot如何進行國際化呢?那麼當你讀完這篇文章你會學到如下知識:

(1) spring boot 加入thymeleaf;

(2) 頁面元素國際化;

(3) spring boot預設國際化原理說明;

(4) firefox瀏覽器修改區域語言;

(5)chrome瀏覽器修改區域語言;

(6)修改預設messages配置字首;

(7) 程式碼中如何獲取國際化資訊;

(8) 優化程式碼獲取國際化資訊;

(9) 區域解析器之AcceptHeaderLocaleResolver;

(10) 會話區域解析器之SessionLocaleResolver;

(11) Cookie區域解析器之CookieLocaleResolver;

(12)固定的區域解析器之FixedLocaleResolver ;

(13)使用引數修改使用者的區域;

       接下里我們看看這些具體應該怎麼操作。

(1) spring boot 加入thymeleaf;

這篇文章有介紹過,所以這裡就不過多進行介紹了。在這裡我們為之後的講解做點基本準備。

模板檔案resources/templates/hello.html :

1 2 3 4 5 6 7 8 9 10 11 12 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>hello spring boot</title> </head> <body> <p>歡迎你登入到阿里巴巴網站</p> </body> </html
>

這裡沒有特殊的程式碼,訪問就是顯示一些文字,這裡還沒加入國際化的相關東西,之後新增。

編寫訪問地址:com.kfit.controller.HelloController:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 package com.kfit.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/hello") public String hello(){ return  "/hello"; } }

這裡就是訪問http://127.0.0.1:8080/hello就跳轉到hell.html進行訪問。

到這裡準備工作就好了。

(2) 頁面元素國際化;

       我們觀察hello.html裡面的資訊直接就是中文顯示,所以我們現在的需求是當訪問語言是zh的時候顯示為中文,當語言為en的時候顯示為英文,那麼怎麼操作呢?

首先我們先定義國際化資原始檔,spring boot預設就支援國際化的,而且不需要你過多的做什麼配置,只需要在resources/下定義國際化配置檔案即可,注意名稱必須以messages開發。

我們定義如下幾個檔案:

messages.properties (預設,當找不到語言的配置的時候,使用該檔案進行展示)。

messages_zh_CN.properties(中文)

messages_en_US.properties(英文)

具體的程式碼如下:

messages.properties:

welcome = 歡迎你登入到 阿里巴巴 網站(default)

messages_zh_CN.properties:

1 welcome = \u6b22\u8fce\u4f60\u767b\u5f55\u5230 \u963f\u91cc\u5df4\u5df4 \u7f51\u7ad9\uff08\u4e2d\u6587\uff09

對應的資訊是:

welcome = 歡迎你登入到 阿里巴巴 網站(中文)

messages_en_US.properties:

1 welcome = welcome to login to alibaba website(English)

配置資訊就這麼簡單,那麼在前端展示怎麼修改呢,修改hello.html檔案,使用#{key}的方式進行使用messages中的欄位資訊:

1 2 3 4 5 6 7 8 9 10 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>hello spring boot</title> </head> <body> <p><label th:text="#{welcome}"></label></p

相關推薦

Spring Boot國際化i18n

國際化(internationalization)是設計和製造容易適應不同區域要求的產品的一種方式。它要求從產品中抽離所有地域語言,國家/地區和文化相關的元素。換言之,應用程式的功能和程式碼設計考慮在不同地區執行的需要,其程式碼簡化了不同本地版本的生產。開發這樣的程式的過

Spring Boot 國際化MessageSource- 路徑配置之坑

腦洞大開,想著把專案老框架換成Spring Boot,在使用MessageSource進行國際化改造時遇神坑了(始終報:org.springframework.context.NoSuchMessageException: No message found un

Spring Boot 入門微服務之 Config Server 統一配置中心

bootstra pan pat 默認 star default client efault localhost 一、目錄結構 二、pom文件 <!-- 配置服務依賴 --> <dependency> &l

Spring Boot學習

div 自動 blog release width spring figure 學習 toc 基於Spring Boot創建的maven項目 1、application.properties或者application.yml:全局配置文件 作用:主要用來配置數據庫連接、日

Spring Boot學習

src pack art tin pre size -s script jar Spring boot實戰 —— Hello Word 1、創建maven項目 2、pom.xml文件 <?xml version="1.0" encoding="UTF-8"?>

Spring Boot學習

自動配置 pat xml配置 XML 入口 spa ges auto classpath @SpringBootApplication 每一個Spring Boot項目都有一個名為*Application的入口類,入口類中有個main方法,在main方法中使用: Sprin

Spring-Boot學習

圖片 public ram turn tps bind 實現 file clas 入門實例 - HelloWorld File > New > Spring Starter Project 項目創建完成: 這樣就完成了項目的創建,下面我們

Spring Boot入門——使用模板FreeMaker

junit boot.s char pack utf put 常見 節點 簡單的 這周主要學習怎麽在Spring Boot中使用模板引擎FreeMaker,主要從以下幾方面進行學習。 (1) freemarker介紹: FreeMarker是一款模板引擎: 即

Spring Boot介紹

work 度量 3.2 https 級別 boot star 自動 tom 一、介紹   Spring Boot可以輕松創建獨立的、基於產品級別Spring的應用程序,您可以“直接運行”。   Spring Boot是由Pivotal團隊提供的全新框架,為我們以最少的麻煩開

Spring Boot19Spring Boot嵌入式Servlet容器自動配置原理

    其中EmbeddedServletContainerAutoConfiguration是嵌入式Servlet容器的自動配置類,該類在spring-boot-autoconfigure-xxx.jar中的web模組可以找到。 @AutoConfig

Spring Boot18Spring Boot配置嵌入式Servlet容器

Spring Boot預設使用Tomcat作為嵌入式的Servlet容器,只要引入了spring-boot-start-web依賴,則預設是用Tomcat作為Servlet容器: 1、定製和修改Servlet容器的相關配置 1)、修改和server有關的配置(ServerProper

Spring Boot15Spring Boot錯誤處理機制

1、Spring Boot預設的錯誤處理機制 如果是瀏覽器,則返回一個預設的錯誤頁面: 如果是其他測試工具,如Postman,則返回一個json資料: 原理: ​ 可以參照ErrorMvcAutoConfiguration,錯誤處理的自動配置

Spring Boot24Spring Boot中使用快取之Spring快取

1、快取依賴 只要新增如下依賴,即可使用快取功能。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter

Spring Boot23Spring Boot整合Mybatis

首先新增mybatis依賴: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</

Spring Boot22Spring Boot啟動配置原理

啟動配置原理 重要的事件回撥機制: ApplicationContextInitializer SpringApplicationRunListener ApplicationRunner CommandLineRunner前兩者需要配置在META-INF/spring.f

Spring Boot21Spring Boot使用外接的Servlet容器

嵌入式Servlet容器: ​ 優點:簡單,便攜; ​ 缺點:預設不支援jsp,優化定製比較複雜; 使用外接Servlet容器的步驟: ​ 1)、必須建立一個war專案,需要建立好web專案的目錄結構,特別是webapp/WEB-INF/web.xml; ​ 2)、嵌入式的To

Spring Boot31、使用SpringBoot傳送mail郵件

1、前言 傳送郵件應該是網站的必備拓展功能之一,註冊驗證,忘記密碼或者是給使用者傳送營銷資訊。正常我們會用JavaMail相關api來寫傳送郵件的相關程式碼,但現在springboot提供了一套更簡易使用的封裝。   2、Mail依賴 <dependency>

Spring Boot30、SpringBoot整合RabbitMQ

1、安裝 1.1、Erlang: Erlang下載地址,下載後安裝即可。 1.2、RabbitMQ安裝 RabbitMQ下載地址,下載後安裝即可。 注意:Erlang的版本要與RabbitMQ版本需要匹配才行。 RabbitMQ Mini

Spring Boot29、SpringBoot整合Mybatis原始碼分析

在【Spring Boot】(23)、Spring Boot整合Mybatis的章節中講述了SpringBoot整合Mybatis的過程,以及一些配置說明,這節主要講解一下整合的原始碼。 廢話不多說,直接進入今天的主題。 閱讀過我之前寫的文章的童靴,肯定知道SpringBoot整合第三方

Spring Boot32、SpringBoot整合AOP

1、新增pom依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</art