在进行程序国际化时(Locale)遇到的问题
Java程序国际化-Question
为了使程序能够个根据不同的国家/语言环境来输出不同的内容,通常需要把将需要输出的内容定义在资源文件中。
而在创建资源文件的过程中难免会出现问题,我遇到了在创建资源文件后,运行程序找不到资源文件的情况,做个记录:
工具:ideaUi-2021
程序:
package BaseClass.Country_PropertiesClass; import java.util.Locale; import java.util.ResourceBundle; // 国际化程序 public class InternationalizationTest { public static void main(String[] args) { // 将 Hello,wrold根据不同国家/语言而显示 System.out.println("Hello,wrold!"); // 取得系统默认的国家/语言环境 var mylocal = Locale.getDefault(Locale.Category.FORMAT); System.out.println(mylocal); // 根据指定国家/语言环境加载资源文件 var bundle = ResourceBundle.getBundle("mess",mylocal); // 打印从资源文件中取得的信息 System.out.println(bundle.getString("hello")); } }
资源文件:
错误:
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name mess, locale zh_CN at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2045) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1683) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1586) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1549) at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:932) at BaseClass.Country_PropertiesClass.InternationalizationTest.main(InternationalizationTest.java:17)
解决方案:
将资源文件 mess_en_US.properties & mess_zh_CN.properties 文件放到 src 文件目录下
(如果需要再添加资源文件,则直接在src文件下创建)," .properties " 后缀需要保留,Ctrl+Shift+F10运行程序(正常运行)
如果需要进行在英文环境下运行,可在电脑控制面板进行机器的语言环境切换成美国后再次运行程序。
Hello,wrold!
zh_CN
你好!
本文来自博客园,作者:Gu_Mi,转载请注明原文链接:https://www.cnblogs.com/gu1203/p/16789906.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术