Java中使用ResourceBundle读取国际化配置文件,核心是通过基名自动加载对应语言环境的.properties文件;需按basename_language_country或basename_language命名并置于类路径下,调用getBundle()获取资源包,再用getString()读取键值,支持MessageFormat动态参数。

Java 中使用 ResourceBundle 读取国际化配置文件,核心是通过基名(basename)自动加载对应语言环境的 .properties 文件,无需手动解析文件或判断语言。
准备对应的 properties 配置文件
确保资源文件按命名规范放在类路径下(如 src/main/resources),文件名格式为:basename_language_country.properties 或 basename_language.properties。例如:
-
messages_zh_CN.properties(中文简体) -
messages_en_US.properties(英文美国) -
messages.properties(默认后备文件,无语言标识)
每个文件内容为键值对,如 messages_zh_CN.properties 中写:greeting=你好,欢迎回来!login.button=登录
用 ResourceBundle.getBundle() 加载资源包
调用静态方法 ResourceBundle.getBundle(String basename) 即可自动匹配当前默认语言环境;也可显式指定 Locale:
// 使用系统默认 Locale(如系统设为中文,则优先找 messages_zh_CN)
ResourceBundle bundle = ResourceBundle.getBundle("messages");
// 显式指定 Locale
ResourceBundle enBundle = ResourceBundle.getBundle("messages", Locale.ENGLISH);
ResourceBundle zhBundle = ResourceBundle.getBundle("messages", Locale.CHINA);
注意:basename 是文件名前缀(不含路径和后缀),且必须在类路径下可访问,否则抛出 MissingResourceException。
立即学习“Java免费学习笔记(深入)”;
从 ResourceBundle 中获取字符串值
使用 getString(key) 方法读取对应键的本地化文本,key 必须在当前匹配的 properties 文件中存在:
String greeting = bundle.getString("greeting"); // 返回 "你好,欢迎回来!" 或 "Hello, welcome back!"
String loginBtn = bundle.getString("login.button");
如果 key 不存在,会抛出 MissingResourceException。生产环境建议加 try-catch 或先用 bundle.containsKey(key) 判断。
支持动态参数的字符串(配合 MessageFormat)
若需插入变量(如用户名、时间),properties 文件中用占位符 {0}、{1} 等,再用 MessageFormat 格式化:
在 messages_en_US.properties 中写:welcome.message=Hello, {0}! Your last login was on {1}.
Java 中使用:
String pattern = bundle.getString("welcome.message");
Object[] args = {"Alice", new Date()};
String msg = MessageFormat.format(pattern, args);


















