首页 > 编程语言 >在进行程序国际化时(Locale)遇到的问题

在进行程序国际化时(Locale)遇到的问题

时间:2022-10-13 22:24:36浏览次数:38  
标签:文件 国际化 java Locale 程序 util ResourceBundle base

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

相关文章