SpringBoot的國際化

國際化(internationalization)是設計容易適應不同區域要求的產品的一種方式。它要求從產品中抽離所有地域語言元素。換言之,應用程序的功能和代碼設計考慮了在不同地區運行的需要。開發這樣的程序的過程,就稱為國際化。

那么當我們使用Spring Boot如何進行國際化呢?我們用一個例子來演示操作的步驟:

1、我們寫一個thymeleaf模板

<!DOCTYPE?html>
<html>
<head><meta?charset="UTF-8"?/><title>hello?spring?boot</title>
</head>
<body><p>歡迎你登錄到ybzy.ke.qq.com我的課程分享網站</p></body>
</html>

2、寫出對應的controller類

import?org.springframework.stereotype.Controller;
import?org.springframework.web.bind.annotation.RequestMapping;@Controller
public?class?HelloController?{@RequestMapping("/hello")public?String?hello(){return??"/hello";}}

我們觀察hello.html里面的信息直接就是中文顯示,但是我們現在的需求是當訪問語言是zh的時候顯示為中文,當語言為en的時候顯示為英文,那么怎么操作呢?

首先我們先定義國際化資源文件,spring boot默認就支持國際化的,而且不需要你過多的做什么配置,只需要在resources/這個根路徑下定義國際化配置文件,文件名稱必須以messages開頭。

注意:配置文件的名字和存放的位置SpringBoot的內部代碼里默認的就是messages和classpath,當然我們可以在配置文件中配置spring.messages.basename的值來改變這兩個東西。

我們先用默認的配置定義如下幾個文件:

messages.properties (默認,當找不到語言的配置的時候,使用該文件進行展示)。

messages.properties (默認,當找不到語言的配置的時候,使用該文件進行展示)。
messages_zh_CN.properties(中文)
messages_en_US.properties(英文)

分別寫上內容:

welcome = 歡迎你登錄到 ybzy.ke.qq.com 我的課程分析網站(default)
welcome?=?\u6b22\u8fce\u4f60\u767b\u5f55\u5230?\u963f\u91cc\u5df4\u5df4?\u7f51\u7ad9\uff08\u4e2d\u6587\uff09
welcome?=?welcome?to?login?to?ybzy.ke.qq.com website(English)

配置信息完畢后,那么在前端展示怎么修改呢,修改hello.html文件,使用#{key}的方式進行使用messages中的字段信息:

<!DOCTYPE?html>
<html>
<head><meta?charset="UTF-8"?/><title>hello?spring?boot</title>
</head>
<body><p><label?th:text="#{welcome}"></label></p>
</body>
</html>

修改火狐瀏覽器的國際化信息,看測試效果:

about:config

在搜索框輸入accept,然后找到intl.accept_languages修改對應的值,我這里原本是:

zh-CN, zh, zh-TW, zh-HK, en-US, en

為了看到效果,修改為:

en-us, en

通過三個問題,簡單說下原理:

第一個問題,為什么命名必須是messages開頭,需要看一個源碼文件:MessageSourceAutoConfiguration

如果我們沒有在application.properties中配置spring.messages.basename屬性,那么使用默認的messages,好了這個問題就這么簡單解決了。

第二個問題:為什么我看到的是中文(或者英文)呢?

為了讓web應用程序支持國際化,必須識別每個用戶的首選區域,并根據這個區域顯示內容。在Spring MVC應用程序中,用戶的區域是通過區域解析器來識別的,它必須是實現LocaleResolver接口。Spring MVC提供了幾個LocaleResolver實現,讓你可以按照不同的條件來解析區域。除此之外,你還可以實現這個接口創建自己的區域解析器。如果沒有做特殊的處理的話,Spring 采用的默認區域解析器是AcceptHeaderLocaleResolver。它通過檢驗HTTP請求的頭部信息accept-language來解析區域。這個頭部是由用戶的web瀏覽器底層根據底層操作系統的區域設置進行設定的。請注意,這個區域解析器無法改變用戶的區域,因為它無法修改用戶操作系統的區域設置。

第三個問題:怎么根據我們的需要切換語言環境呢?

我們可以自定義我們的區域解析器LocaleResolver,然后將它注冊到spring的ioc容器中。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88523.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88523.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88523.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

prometheus+grafana+Linux監控

prometheusgrafanaLinux監控 環境說明 操作前提&#xff1a; 先去搭建Docker部署prometheusgrafana...這篇文章的系統 Docker部署prometheusgrafana...的參考文章&#xff1a; Docker部署prometheusgrafana…-CSDN博客 Linux部署docker參考文章&#xff1a; 02-Docker安裝_doc…

文檔處理控件Aspose.Words教程:在.NET中將多頁文檔轉換為單個圖像

在Aspose.Words for .NET 25.6版本中&#xff0c;我們引入了一項新功能&#xff0c;允許您將多頁文檔導出為單個光柵圖像。當您需要將文檔作為單個可視文件共享或顯示時&#xff0c;此功能非常有用。 Aspose.Words for .NET 25.6 的新功能 在 25.6 版之前&#xff0c;將多頁文…

vuex4.0用法

VUEX 狀態管理&#xff0c;多個組件有共享數據的時候&#xff0c;就叫狀態管理 什么情況下會用到vuex , 如果你不知道vuex的情況也能完成你的需求&#xff0c;就說你的項目中不需要用到狀態管理。 組件層級比較復雜的時候&#xff0c;還是用組件傳值的方式來傳值&#xff0c;…

2025.6.24總結

今天發生了兩件事&#xff0c;這每件事情都足以影響我的工作狀態。 1.團隊中有人要轉崗 這算是最讓我有些小震驚的事件了。我不明白&#xff0c;那個同事干得好好的&#xff0c;為啥會轉崗&#xff0c;為啥會被調到其他團隊。雖然團隊有正編&#xff0c;有od,但我自始自終覺得…

狀態模式詳解

概述 結構設計類似責任鏈模式&#xff0c;但是在各個狀態進行遍歷的過程中&#xff0c;更注重的是條件的判斷&#xff0c;只有符合條件的狀態才能正常匹配進行處理。條件不成功的會立即切換到下一個狀態。 有限狀態機 狀態機一般指的是有限狀態機&#xff08;FSM&#xff1a…

Lua 調試(Debug)

Lua 調試(Debug) 引言 Lua 是一種輕量級的編程語言&#xff0c;廣泛應用于游戲開發、嵌入式系統、腳本編寫等領域。在 Lua 開發過程中&#xff0c;調試是確保程序正確運行的重要環節。本文將詳細介紹 Lua 調試的基本方法、常用工具以及調試技巧&#xff0c;幫助開發者提高編程…

Windows安裝Emscripten?/emsdk(成功)

安裝git安裝python 不要自行下載版本&#xff0c;先卸載其他版本的python。 使用管理員打開cmd&#xff0c;輸入python3&#xff0c;直接跳轉到應用商店&#xff0c;安裝即可。 為什么一定要這么安裝&#xff1f;好像是跟路徑有關。 下載emsdk git clone https://github.c…

AI網頁部署在本地_windows

用bolt.new寫了一個網頁&#xff0c;下載ZIP至本地 以下是在 Windows 上本地運行你用 Node.js 搭建的網頁服務&#xff0c;并在瀏覽器中訪問的常見流程&#xff1a; 1、安裝 Node.js 訪問官網 Node.js — Run JavaScript Everywhere &#xff0c;下載適合 Windows 的 LTS 版本…

Linux sudo命令

sudo是一個常用的Linux命令&#xff0c;用于以超級用戶的權限執行命令。下面是對sudo命令的介紹&#xff1a; sudo命令的作用&#xff1a; sudo允許普通用戶以超級用戶&#xff08;root&#xff09;的身份執行特定命令或訪問特定文件。它提供了一種安全且可控制的方式&#xf…

郵件合并----批量從excel表中導出數據到word中

文章目錄 前言一、操作流程1. 打開word&#xff0c;開始郵件合并->郵件合并分布向導2. 開始郵件合并&#xff0c;一共6步3. 選擇全部&#xff0c;點擊確認&#xff0c;即可生成Excel表中244條記錄&#xff0c;也就是244頁。 總結 前言 涉及到將學生的姓名、學號、檔案編號、…

活動安排貪心算法

輸入說明 n??????—— 活動數量 s[1…n]??— 第 i 個活動的開始時間 (start) f[1…n]??— 第 i 個活動的結束時間 (finish) 前置要求&#xff1a;數組已按 f 從小到大排好序 &#xff08;若沒排&#xff0c;先調用 sortByFinishTime()&#xff0c;復雜度 O(n log …

Mysql8啟用日志審計插件

概述 等保要求&#xff0c;數據庫啟用日志審計。Mysql8上面使用開源插件audit-plugin-for-mysql&#xff08;MariaDB的審計插件不用折騰了&#xff0c;無論直接使用還是編譯使用&#xff0c;在Mysql8上都不行&#xff09; 插件下載 日志審計插件下載地址&#xff1a; https:…

機器學習-線性模型

目錄 線性模型 1、線性回歸&#xff1a; 2、對數幾率回歸&#xff1a; 3、線性判別分析&#xff1a; 4、多分類學習&#xff1a; 5、類別不平衡問題&#xff1a; 基本數理知識補充&#xff1a; 損失函數&#xff1a; 凹凸函數 梯度下降 線性模型 線性模型形式簡單、易…

Git上傳代碼如何解決Merge沖突

示例 解決方案 1、第一步切到本地的主分支 git checkout master2、拉取線上最新的代碼 git pull3、切到本地自己的分支 gco feat-xx4、將代碼從master變基&#xff08;移動/合并&#xff09;過來 git rebase master5、手動解決沖突 <<<<<<< HEAD 本…

fluentd + elasticsearch + grafana 不能顯示問題

fluentd中配置log 源文件后&#xff0c;再配置elasticsearch后&#xff0c; elasticsearch pod中查詢日志記錄正常。 修改log 文件 后&#xff0c; elasticsearch pod中查詢日志記錄更新也正常。 但是在grafana中添加elasticsearch data source后&#xff0c; 連接正常&#…

《分布式事務新形態:AT模式如何被Seata TCC擊穿》的深度解析,包含AT死鎖原理/TCC原子性保障/Service Mesh深度集成三大硬核模塊

一、AT模式的死刑判決&#xff1a;全局鎖引發的血案 1.1 死鎖現場還原&#xff08;支付寶真實案例&#xff09; 1.2 全局鎖原理與缺陷 二、TCC模式的絕地反擊&#xff1a;原子性保障三板斧 2.1 TCC核心架構設計 2.2 冪等控制原子防護網 三、Service Mesh深度集成&#xf…

【Elasticsearch】es初識,在項目架構中的用途,與mysql和kafka的配合使用,

ES是一個開源的高擴展的分布式全文檢索引擎 在項目已有mysql增刪改查的情況下&#xff0c;新增kafka&#xff0c;es流程 用戶新增/修改商家&#xff08;寫MySQL&#xff09; ↓ Kafka 生產者發送商家數據消息 ↓ Kafka 消費者監聽消息 → 寫入 Elasticsearch ↓ 前端搜索商家時…

【DataWhale組隊學習】AI辦公實踐與應用-數據分析

AI辦公&#xff1a;數據分析 1. 使用大模型進行數據分析的常見流程 把數據扔給AI讓AI自動分析&#xff0c;并告訴你結果 下面我們對上面兩個步驟進行詳細說明 2. 使用大模型進行數據分析 2.1 將數據扔給大模型 2.1.1 選擇合適的辦公大模型 要使用大模型進行數據分析時&a…

5G 浪潮:發展全景、困境突圍與未來航向

在當今數字化浪潮中&#xff0c;5G 技術宛如一顆璀璨的明星&#xff0c;照亮了各個行業前行的道路。自 5G 正式商用以來&#xff0c;它不僅深刻改變了人們的生活方式&#xff0c;更在工業、農業、交通等領域掀起了一場數字化轉型的革命。本文將深入探討 5G 技術的原理、發展現狀…

理論加案例,一文讀懂數據分析中的分類建模

一、什么是分類 分類&#xff0c;是數據建模領域的重要分支&#xff0c;你每天也都會接觸。 手機垃圾短信過濾&#xff0c;就是分類算法給短信打的標簽&#xff0c;比如0代表正常短信&#xff0c;1代表垃圾短信。 在醫學領域&#xff0c;根據影像檢查判斷腫瘤是良性還是惡性。…