ResourceBundle是Java國際化核心類,通過加載不同Locale的屬性文件實現(xiàn)多語言支持,如messages_en.properties和messages_zh_CN.properties,按ISO標準命名,結合Locale和MessageFormat實現(xiàn)文本動態(tài)切換與參數(shù)化格式化。
Java 中的 ResourceBundle 類是處理多語言(國際化,i18n)資源的核心工具。它通過加載不同語言環(huán)境(Locale)下的屬性文件,實現(xiàn)文本內(nèi)容的動態(tài)切換,使應用程序能根據(jù)用戶的語言偏好顯示對應的語言。
ResourceBundle 依賴一組遵循特定命名規(guī)則的屬性文件來管理多語言內(nèi)容。這些文件通常以 .properties 為擴展名,放在類路徑下的指定包中。
基本命名格式如下:
文件名中的語言和地區(qū)代碼遵循 ISO 639(語言)和 ISO 3166(地區(qū))標準。JVM 根據(jù)當前 Locale 自動匹配最合適的資源文件。
立即學習“Java免費學習筆記(深入)”;
通過 ResourceBundle.getBundle() 方法加載對應 Locale 的資源。若指定 Locale 沒有對應文件,則自動回退到默認文件(如 messages.properties)。
示例代碼:
import java.util.Locale; import java.util.ResourceBundle; public class I18nDemo { public static void main(String[] args) { // 設置語言環(huán)境 Locale locale = new Locale("en", "US"); ResourceBundle bundle = ResourceBundle.getBundle("messages", locale); // 獲取翻譯文本 String greeting = bundle.getString("greeting"); String farewell = bundle.getString("farewell"); System.out.println(greeting); // 輸出: Hello! System.out.println(farewell); // 輸出: Goodbye! } }
對應的 messages_en.properties 文件內(nèi)容:
greeting=Hello! farewell=Goodbye!
ResourceBundle 常配合 java.text.MessageFormat 使用,實現(xiàn)帶占位符的文本替換,適用于包含變量的句子。
例如,messages_zh.properties 中定義:
welcome=歡迎,{0}!今天是{1}。
Java 中使用:
String pattern = bundle.getString("welcome"); String formatted = MessageFormat.format(pattern, "張三", new Date()); System.out.println(formatted); // 輸出:歡迎,張三!今天是2025年4月5日。
基本上就這些。ResourceBundle 雖簡單,但足夠支撐大多數(shù) Java 應用的多語言需求,搭配 Locale 和 MessageFormat 可實現(xiàn)靈活的國際化支持。
以上就是Java ResourceBundle類如何管理多語言資源的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!
每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號