jeecg 國際化處理
概述
國際化的需求是為了適應不同的語言環境,能夠提供不同的語言文字,以便更好地服務使用不同語言文字的人群。我們在開發過程中,一般為了快速實現需求,比較容易忽視國際化的需求,直接在程式碼裡 hardcode 了中文方案。在真正有客戶反映要切換不同語言時,才將原來 hardcode 的程式碼轉換為字元碼,根據 locale 環境做轉換。
jeecg 的國際化方案
在 jeecg 的管理後臺介面,我們可以看到有一個“國際化語言”的模組,用來管理需要國際化資源。
從功能介面上展示的欄位,我們可以猜測出,jeecg 的實現方案是,定義一個 key ,然後為這個 key 提供不同語言對應的內容,然後在客戶端請求資料時,根據請求傳入的引數來決定選用哪種語言的內容。在錄入或編輯的彈出窗,“語言”欄位的選項只有“中文”和“English”兩種,說明目前系統只支援這兩種語言。從介面上無法看出的邏輯是,系統是怎麼從請求來判定該用什麼語言的?下面我們通過檢視程式碼來查詢答案。
國際化語言的服務實現類 MutiLangServiceImpl 提供了 getLang(String langKey) 方法來獲得對應的語言內容:
/**取 o_muti_lang.lang_key 的值返回當前語言的值**/
public String getLang(String langKey)
{
//從請求頭Accept-Language獲得客戶端接受的語言
String language = BrowserUtils.getBrowserLanguage(request);
if(request.getSession().getAttribute("lang") != null)
{
//從session屬性取得繫結的語言
language = (String)request.getSession().getAttribute("lang");
}
//從快取集合裡得到key對應的語言內容
String langContext = ResourceUtil.mutiLangMap.get(langKey + "_" + language);
if(StringUtil.isEmpty(langContext))
{
langContext = ResourceUtil.mutiLangMap.get("common.notfind.langkey" + "_" + request.getSession().getAttribute("lang"));
if("null".equals(langContext)||langContext==null ||langKey.startsWith("?")){
langContext = "";
}
langContext = langContext + langKey;
}
return langContext;
}
以上便是 jeecg 實現國際化的主要流程,比較簡單。如果要擴充套件到更多語言,則需要增加可配置選項,這時會發現 jeecg 程式碼裡是用列舉類固定了可選的語言,因此要擴充套件還需要增加列舉項,以及修改相應的程式碼,這點就不太靈活了。如果要國際化的key都是比較固定的,一般會通過屬性檔案來配置,檔名的字首一樣,字尾為語言的 locale 字元,這種能用的處理方法也適用於客戶端處理國際化。而 jeecg 通過資料庫來管理國際化,也適合一些需要線上修改語言內容,動態管理的場景。所以,最終選擇什麼樣的方案,還是要根據業務場景來選擇。
相關文章
- 【spring 國際化】springMVC、springboot國際化處理詳解SpringMVCSpring Boot
- 聊聊前端國際化文案該如何處理前端
- Asp.net Core MVC 程式的國際化處理ASP.NETMVC
- Angular primeNg i18n 國際化多語言處理Angular
- 鴻蒙Next應用國際化:時區與夏令時處理鴻蒙
- 使用Vue i18n對前端頁面進行國際化處理Vue前端
- 國際化
- 【總結】國際化數字格式處理解決神器
- 「Adobe國際認證」瞭解Adobe Photoshop,如何處理各種
- Vue國際化處理 vue-i18n 以及專案自動切換中英文Vue
- Android國際化Android
- 國際化思考
- 郵件RPA流程自動化處理的原理及實際應用
- jeecg, token獲取
- Vue格式化處理Vue
- Spring Webflux國際化SpringWebUX
- .net core國際化
- .Net Core 國際化
- 網易AI Lab斬獲自然語言處理國際頂會冠軍AI自然語言處理
- jenkins部署jeecg-boot3.1(前後端)自動化Jenkinsboot後端
- Jeecg-Boot Spring BootSpring Boot
- 隨機化處理技術隨機
- Spring-boot國際化Springboot
- Grails國際化例項AI
- Yii2-國際化
- Java中的國際化Java
- QT6 國際化QT
- SpringBoot專案國際化Spring Boot
- Webnovel 國際化實踐Web
- springboot頁面國際化Spring Boot
- 汙水處理自動化控制與汙水處理廠集中控制
- struts2 國際化(本地化)
- Django國際化與本地化指南Django
- JEECG 單點登入 SSO
- jeecg使用uploadify上傳元件元件
- 如何處理 Web 圖片優化?Web優化
- 百億級資料處理優化優化
- FastJson 序列化處理 null 值ASTJSONNull