在进行程序国际化时(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
你好!
posted @   Gu_Mi  阅读(205)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示