國際化(通常縮寫為 i18n)是指設計和準備軟體以輕鬆適應各種語言、地區和文化,而不需要對程式碼進行工程變更。接下來通常是在地化(通常縮寫為 l10n),其中涉及使國際化軟體適應特定的語言環境,包括翻譯文本、調整本地約定以及修改其他特定於語言環境的元素。
我們的目標是透過將核心邏輯與特定於語言環境的元素(如語言和文化約定)分開,使軟體足夠靈活以支援多種語言環境。
資源包
使用程式語言提供的 ResourceBundle 類別在普通 Java 程式中本地化文字訊息有點簡單。 ResourceBundle 類別可以輕鬆載入屬性檔案中定義的特定於區域設定的鍵值屬性。這些屬性檔稱為資源包。
ResourceBundle resources = ResourceBundle.getBundle("messages", Locale.FRANCE); String greeting = resources.getString("greeting.hello"); assertEquals("Bonjour le monde", greeting); String greetingUsername = MessageFormat.format(resources.getString("greeting.username"), "Ayo"); assertEquals("Bonjour Ayo", greetingUsername);
使用 i8n 資源包
在 Java 程式中本地化文字訊息的另一種方法是使用第三方函式庫。 i18n-resource-bundle 就是這類函式庫之一。該庫是前面討論的 ResourceBundle 的實作。
依賴性
如果您使用 Maven,請在 pom.xml 中新增以下相依性
<dependency> <groupid>io.github.jelilio</groupid> <artifactid>i18n-resource-bundle</artifactid> <version>0.0.2</version> </dependency>
如果您喜歡 Gradle,請使用它;
implementation 'io.github.jelilio:i18n-resource-bundle:0.0.2'
訊息來源
i8n-resource-bundle 提供了 MessageSource 接口,它定義了幾種解析訊息的方法。它有兩個實現,ResourceBundleMessageSource 和 ReloadableResourceBundleMessageSource。兩種實作都使用類似於 Java ResourceBundle 的指定基本名稱來存取資源包。 ResourceBundleMessageSource 依賴 Java 的 ResourceBundle 實作結合 MessageFormat 來解析不同語言環境的資源包中的消息。
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages"); String greeting = messageSource .getMessage("greeting.hello", null, Locale.FRANCE); assertEquals("Bonjour le monde", greeting); String greetingUsername = messageSource .getMessage("greeting.username", new String[]{"Ayo"}, Locale.FRANCE); assertEquals("Bonjour Ayo", greetingUsername);
ReloadableResourceBundleMessageSource
與ResourceBundleMessageSource不同,ReloadableResourceBundleMessageSource使用Java的Properties實例作為訊息的自訂資料結構,使用不同的策略載入它們,允許根據時間戳更改和特定字元編碼重新載入屬性文件,而無需重新啟動應用程式。
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames("messages"); String greeting = messageSource .getMessage("greeting.hello", null, Locale.FRANCE); assertEquals("Bonjour le monde", greeting); String greetingUsername = messageSource .getMessage("greeting.username", new String[]{"Ayo"}, Locale.US); assertEquals("Bonjour Ayo", greetingUsername);
結論
在本簡短指南中,我們學習了使用 ResourceBundle 和 i18n-resource-bundle 在 Java 應用程式中實現國際化 (i18n)。我們了解如何根據提供的區域設定名稱解析資源包,並看到了一個實際範例。
參考
- Java™ 教學 - 隔離語言環境特定的資料
- 國際化資源包
- 原始碼:i18n-in-java
以上是Java 的國際化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文分析了2025年的前四個JavaScript框架(React,Angular,Vue,Susve),比較了它們的性能,可伸縮性和未來前景。 儘管由於強大的社區和生態系統,所有這些都保持占主導地位,但它們的相對人口

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

Node.js 20通過V8發動機改進可顯著提高性能,特別是更快的垃圾收集和I/O。 新功能包括更好的WebSembly支持和精製的調試工具,提高開發人員的生產率和應用速度。

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

本文介紹了SnakeyAml中的CVE-2022-1471漏洞,這是一個允許遠程代碼執行的關鍵缺陷。 它詳細介紹瞭如何升級春季啟動應用程序到Snakeyaml 1.33或更高版本的降低風險,強調了依賴性更新

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

本文使用lambda表達式,流API,方法參考和可選探索將功能編程集成到Java中。 它突出顯示了通過簡潔性和不變性改善代碼可讀性和可維護性等好處


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。