Java中的定制國際化(i18n)

國際化(i18n)在我們的軟件項目中非常重要。 它主要帶來以下好處:
  • 將UI字符串外部化為除代碼文件之外的外部文件,以及易于管理的UI內容。
  • 支持多種語言。
在這篇文章中,將為Eclipse和Java項目提供一個簡短的i18n實際示例,包括定制i18n機制以具有更可維護和封裝的方法。

  • 首先,我們必須具有一些類,其中包括在用戶界面上顯示的字符串值:
UI類示例
  • 然后,我們必須有一個i18n實用程序類的實例。 通常,這是Java中的兩種之一:
    • java.util.ResourceBundle(不需要spring依賴項)
    ResourceBundle初始化
      • org.springframework.context.support.ResourceBundleMessageSource(具有多個單詞外部化功能(稍后將介紹))。
      ResourceBundleMessageSource初始化
      由于本教程的擴展功能,我們將在本教程中使用ResourceBundleMessageSource實例。

      • 然后右鍵單擊該類,然后選擇“源”->“外部化字符串”。 將顯示如下窗口。 在右列中輸入字符串的鍵。 鍵將以默認的類名開始。 密鑰在系統上必須唯一,因此應應用預定義的模式(例如<class_name>。<type_id>。<description>)
      Eclipse字符串外部化窗口
      • 單擊下一步–>完成,您的字符串將如下更改。 還將自動創建Messages類和externalizer屬性文件(右側的自動注釋是eclipse的標記,這意味著
        “外部化”):
      帶外部字符串的類
      自動創建的i18n實用程序和屬性類
      • 至此,外部化已完成。 但是我們需要i18??n,而且我們必須支持多種語言。 為此,定義另一個帶有位置標記的屬性文件(例如“ EN”,“ FR”,“ TR”等),復制鍵并用新語言填充值,并在適當的位置/位置設置資源包的語言環境您的應用程序(例如在設置窗口或登錄頁面上):
      每種語言有多個屬性文件
      Messages_tr_TR.properties文件內容
      為資源包設置新的語言環境
      • 作為最后一步,我們要封裝i18n實用程序類,還希望使用功能更強大的i18n實用程序(例如
        ResourceBundleMessageSource )。 為此,請如下定義一個類:
      定制和封裝的消息源(i18n實用程序)類
      • 最后,將“ Messages.getString”語句更改為新實例:
      具有外部化字符串的類(具有定制的i18n實用程序類)
      • 您也可以使用您的類將參數化的字符串外部化。 其用法如下:
      從i18n實用程序獲取參數化的字符串
      在屬性文件中定義參數化的字符串

      參考: Java的定制國際化(i18n)–來自我們JCG合作伙伴的分 步指南 ? Cagdas Basaraner在CodeBuild博客上。


      翻譯自: https://www.javacodegeeks.com/2012/02/customized-internationalization-i18n-in.html

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

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

      相關文章

      SEO 百度后臺主動推送鏈接

      實踐步驟&#xff0c;先用爬蟲程序將本網站的所有連接爬取出來&#xff0c;再用python文件處理程序把爬蟲來的東東整理成一行一個鏈接的文本格式。再用postman接口測試工具&#xff0c;使用post方式&#xff0c;將所有的鏈接post過去&#xff0c;這樣主動推送是最為快速的提交方…

      linux版本 如何查kali_000_Kali Linux版本查看和apt源配置

      1.查看系統版本# cat /etc/issue# lsb_release -a2.查看內核信息# uname -a3.更新源# cp /etc/apt/source.list{,.bak}# vim /etc/apt/sources.list//備注&#xff1a;國外源速度太慢&#xff0c;這里禁止&#xff1b;網絡中的部分源已經過期&#xff0c;建議更換其它源。# kal…

      nyoj--127--星際之門(一)(生成樹的數量)

      星際之門&#xff08;一&#xff09; 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;3描述公元3000年&#xff0c;子虛帝國統領著N個星系&#xff0c;原先它們是靠近光束飛船來進行旅行的&#xff0c;近來&#xff0c;X博士發明了星際之門&…

      Oracle 常用的一些函數

      字符函數 SELECT UPPER(hello WORLD) FROM DUAL; //將小寫字母變為大寫字母SELECT LOWER(hello WORLD) FROM DUAL; //將大寫字母變為小心字母SELECT INITCAP(hello WORLD) FROM DUAL; //將字符串的首字母大寫SELECT CONCAT(hello, world) FROM DUAL; //字符串拼…

      Apache Camel 2.9發布–十大變化

      在2011年的最后一天&#xff0c;阿帕奇駱駝制品被成功地推到了中央行銷倉庫&#xff0c;距離香檳酒瓶破裂并進入2012年僅1.5個小時之遙。 2.9版是創紀錄的發行版&#xff0c;自5個月前發布2.8版以來&#xff0c;已解決了約500張JIRA票證。 以下是10個最明顯的改進和新功能的分…

      HTML5筆記——formData

      注&#xff1a;formData中的數據在控制臺上的console里面是打印不出來的&#xff0c;只能在控制臺的network里面查看到具體的發送數據和發送選項 文章出處&#xff1a;夢想天空 XMLHttpRequest Level 2 添加了一個新的接口——FormData。利用 FormData 對象&#xff0c;我們可以…

      JavaScript 學習隨記——==和===及常見元素的真假值

      “” 和 “” 符合的使用 <script>/*** 表示可以經過自動轉換&#xff0c;比較的是數值*///example01if(1 true && false 0 && true 1){console.log(1true);console.log(" 比較的是等號兩邊數據的值是否相等&#xff08;可以經過自動轉換&#…

      運維祈求不宕機_[國慶特輯] 程序員應該求誰保佑才能保證不宕機?

      一年國慶又到&#xff5e;程序猿、運維工程師、利用假期該結婚的結婚&#xff0c;該回老家的回老家。產品經理、項目經理們也要出國旅游了(好像這次是去東京玩)&#xff0c;并且叮囑一定要安排好值班表。我是個程序員&#xff0c;我也想出國旅游&#xff0c;卻覺得有點兒貴。多…

      Oracle Weblogic 11g(10.3.4)的小知識

      本周&#xff0c;我將為Weblogic進行許多設置和配置&#xff08;我猜是開發人員&#xff09;。 在過去的4年中&#xff0c;我一直在與Weblogic合作&#xff0c;并且我不得不承認-與Eclipse類似-我已經開始使用它。 我曾經是Netbeans / JBoss開發人員&#xff0c;后來轉向Eclips…

      java中HashMap的用法

      重點介紹HashMap。首先介紹一下什么是Map。在數組中我們是通過數組下標來對其內容索引的&#xff0c;而在Map中我們通過對象來對對象進行索引&#xff0c;用來索引的對象叫做key&#xff0c;其對應的對象叫做value。在下文中會有例子具體說明。 再來看看HashMap和TreeMap有什么…

      關于 MVCC 的基礎

      作為第一篇對 MVCC 的學習材料&#xff0c;以下內容翻譯自 Wikipedia。 1. 什么是MVCC 1.1 基礎概念 MVCC&#xff0c;Multi-Version Concurrency Control&#xff0c;多版本并發控制。MVCC 是一種并發控制的方法&#xff0c;一般在數據庫管理系統中&#xff0c;實現對數據庫的…

      集成測試CDI 1.0和Spring 3.1中的作用域bean

      在這篇博客文章中&#xff0c;我描述了如何在Spring和CDI中使用作用域bean進行集成測試。 一切都用小代碼示例進行說明。 使用范圍進行集成測試并不是特別容易。 想象一下存在于會話范圍內的bean&#xff0c;例如UserCredentials 。 在集成測試中&#xff0c;通常沒有HttpReque…

      JavaScript學習隨記——數組一

      數組的創建及length屬性 <script type"text/javascript" charset"utf-8">// 數組創建方式一,此種方式寫的時候比較麻煩var arrnew Array();// 數組創建方式二var arr [1,2,3,4,true,str,new Date()];console.log("arr.length&#xff1a;"…

      USACO milk4 枚舉答案再檢驗

      剛開始寫了一個暴力的dfs超時了&#xff0c; 最后看了下題解說是先枚舉答案再判斷&#xff0c;然后就寫了雙dfs&#xff0c;全部秒殺&#xff0c;代碼如下&#xff1a; /*ID: m1500293LANG: CPROG: milk4 */ #include <cstdio> #include <cstring> #include <al…

      微信小程序常見問題集合(長期更新)

      最新更新&#xff1a; 新手跳坑系列&#xff1a;推薦閱讀&#xff1a;《二十四》request:fail錯誤&#xff08;含https解決方案&#xff09;&#xff08;真機預覽問題 跳坑指南《七十》如何讓微信小程序服務類目審核通過跳坑六十九&#xff1a;uploadFile:fail Error: unable t…

      mysql指令按順序排列_mysql基本語法大全

      1.備份數據庫&#xff1a;1.1備份數據庫中的表:mysqldump -u root -p test a b >d:\bank_a.sql//分別備份數據庫test下a和b表1.2備份一個數據庫mysqldump -u root -p test > d:\testbk.sql1.3備份多個數據庫mysqldump -u root -p --databases test mysql > D:\data.sq…

      Spring和石英:多作業計劃服務

      作業調度對于應用程序來說是如此重要。 尤其是在大型項目中&#xff0c;處理大量工作可能是一個問題。 Spring和Quartz為解決該問題帶來了巨大的好處。 本文介紹了如何通過使用Spring和Quartz輕松地計劃多個作業。 二手技術&#xff1a; JDK 1.6.0_21 春天3.1.1 石英1.8.5 M…

      JavaScript學習隨記——數組二

      數組indexOf(arg) 和 lastIndexOf(arg)方法使用 <script type"text/javascript" charset"utf-8">/*** indexOf(arg):返回指定參數在數組中的索引位置&#xff08;從前往后查&#xff0c;比較是使用 ‘’&#xff0c;查詢到立即返回索引位置&#xff…

      反射的簡單應用

      首先有一個類 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 using System.Threading.Tasks;6 7 namespace ConsoleApplication18 {9 public class demo 10 { 11 public string name "程序員"; 12…

      JavaFX 2.0示例介紹書

      我最近完成了有關JavaFX 2.0 SDK新版本的書的編寫&#xff0c;并且已經將它放在您附近的書店&#xff08; Amazon &#xff09;的書架上。 該書將逐步指導您完成JavaFX 2.0的來龍去脈。 當您遇到一章時&#xff0c;將看到一些菜譜&#xff0c;這些菜譜將帶來一個問題&#xff0…