【问题标题】:Internationalization (i18n) using JSF Facelets: Messages in Java-classes使用 JSF Facelets 的国际化 (i18n):Java 类中的消息
【发布时间】:2012-07-04 20:37:56
【问题描述】:

我已经在我的项目中成功实现了 i18n。现在我被困在我的 Bean 中......

private String pageTitle;
public List<Product> getProductsByCategory(String category) {
  if(validate(category)) {
    pageTitle = category;
    return service.getProductsByCategory(String category);
  } else {
    pageTitle = "Random products";
    return service.getRandomProducts();
  }
}

如您所见,我想让我的 pageTitle 依赖于所提供方法的结果。一切都很好,但考虑到国际化,这并不好。我曾尝试使用 Properties.load(new FileInputStream) 方法,但考虑到文件名称为 base.properties、base_en_US.properties 等,这不起作用。

有谁知道在这种情况下的最佳做法?提前致谢!

【问题讨论】:

    标签: java jsf internationalization facelets


    【解决方案1】:

    您需要使用与 JSF 相同的方式来加载资源包:使用 ResourceBundle API。这是一个假设基本名称为com.example.i18n.base 的示例(与您在视图中的&lt;f:loadBundle&gt;faces-config.xml 中的&lt;resource-bundle&gt; 中使用的值完全相同)

    ResourceBundle bundle = ResourceBundle.getBundle("com.example.i18n.base",
        FacesContext.getCurrentInstance().getViewRoot().getLocale());
    String pageTitle = bundle.getString("page.title");
    // ...
    

    【讨论】:

    • 感谢 BalusC!这正是我想要的!
    猜你喜欢
    • 2010-09-10
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2012-04-22
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多