【问题标题】:What is the relation between Locale and ResourceBundleLocale 和 ResourceBundle 有什么关系
【发布时间】:2012-09-27 08:11:32
【问题描述】:

有人可以解释一下JDK提供的Locale和ResourceBundle类之间的关系吗?和 difference between i18n vs l10n as given in this answer一样吗?

【问题讨论】:

    标签: java localization internationalization


    【解决方案1】:

    Locale 和 ResourceBundle 的关系是,Locale 用于读取正确的属性文件。基本上,ResourceBundle.Control 类接受一个 Locale 对象,并给定属性文件的基本名称,它会尝试找到最匹配的对象。例如:

    ResourceBundle rb = ResourceBundle.getbundle("messages", Locale.forLanguageTag("zh-TW");
    

    如果您这样做,ResourceBundle.Control 将查找messages_zh_TW.properties、messages_zh-Hant-TW.properties、messages_zh-Hant.properties、messages_zh.properties,如果找不到,最后回退到messages.properties具体的资源文件。

    编辑

    只是添加最后一件事。如果您省略 Locale 参数,ResourceBundle.getBundle(String) 将根据您的默认 Locale 返回属性文件 - 您可以像这样获得一个:

    Locale default = Locale.getDefault(Locale.Category.DISPLAY);
    

    虽然看起来没有必要过多输入(在桌面应用程序的上下文中),但始终传递区域设置是一个好习惯,因为它使代码更易于理解。

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 1970-01-01
      • 2016-09-28
      • 2013-07-02
      • 2017-02-06
      • 2022-01-03
      • 2020-03-05
      • 2020-04-17
      • 2016-03-21
      相关资源
      最近更新 更多