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 你好!标签:文件,国际化,java,Locale,程序,util,ResourceBundle,base From: https://www.cnblogs.com/gu1203/p/16789906.html