2

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

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 等,这不起作用。

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

4

1 回答 1

5

您需要使用与 JSF 相同的方式来加载资源包:使用ResourceBundleAPI。这是一个示例,假设基本名称是com.example.i18n.base(正是您在<f:loadBundle>in view 或<resource-bundle>in 中使用的值faces-config.xml

ResourceBundle bundle = ResourceBundle.getBundle("com.example.i18n.base",
    FacesContext.getCurrentInstance().getViewRoot().getLocale());
String pageTitle = bundle.getString("page.title");
// ...
于 2012-07-04T20:43:52.190 回答