【问题标题】:Using resourceBundle with an external file, java将resourceBundle与外部文件一起使用,java
【发布时间】:2011-04-14 02:50:14
【问题描述】:

我一直在阅读有关此问题的其他问题和答案,但我没有完全了解资源绑定的工作原理。 我认为 Joomla 使用多语言选项的方式类似。 基本上,您有不同语言的不同消息的文件。 所以我在我的 src/Lang 文件夹中创建了 System.properties 我在里面创造

STARTING_MYAPP=Starting my app

我在这里可能错了,但无论如何我无法读取默认文件。现在我是脑死亡,我无法理解我读到的任何东西 我就是这样做的

Locale locale = Locale.getDefault();
String basename ="System";
ResourceBundle resourceBundle = ResourceBundle.getBundle(basename, locale);
System.out.println(resourceBundle.getString("STARTING_MYAPP"));
//UserPreferences UserPrefs = new UserPreferences();

当我调用 getBundle() 时,它有两个输入,基本名称和语言环境,对。我在使用基本名称时遇到问题。如果我的文件在 src/lang/System.properties 中,我应该如何查找它。 basename="System", basename="Lang/System", basename="System.properties", basename="myProject.label"。

我尝试了所有这些以及更多的组合但不起作用,我总是得到类似的东西 线程“主”java.util.MissingResourceException 中的异常:找不到基本名称系统的捆绑包,语言环境 en_US

关于语言环境,我如何将其保留为默认设置,因此我不必使用 System_en_US.properties 或类似的东西。

【问题讨论】:

    标签: java multilingual


    【解决方案1】:

    这很好用。

    import java.util.Locale;
    import java.util.ResourceBundle;
    
    
    public class ResourceBundleTester
    {
        public static void main(String[] args)
        {
            Locale locale = Locale.getDefault();
            String basename ="lang/System";
            ResourceBundle resourceBundle = ResourceBundle.getBundle(basename, locale);
            System.out.println(resourceBundle.getString("STARTING_MYAPP"));
        }
    }
    

    在 src/lang 文件夹中,我创建了一个名为 System.properties 的文件,其中包含...

    STARTING_MYAPP=Starting my app
    

    输出是:启动我的应用程序

    This page 解释了 JDK 如何解析 ResourceBundle 名称。

    【讨论】:

    • 是的,它有效,我一定很累,这是我的错。我放错了文件
    【解决方案2】:

    基名的结构类似于完全限定的类名(因为资源包可以是类),所以如果你的类路径根是src,资源是文件src/lang/System.properties,那么基名就是lang.System

    关于语言环境,我如何留给它 默认,所以我不必使用 System_en_US.properties 什么的 像这样。

    只需使用只接受基本名称的getBundle() 方法。

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 2011-12-19
      • 2013-09-23
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      相关资源
      最近更新 更多