2

プロジェクトに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などであるため、これは機能しません。

このような状況でのベストプラクティスを知っている人はいますか?前もって感謝します!

4

1 に答える 1

5

JSFがリソースバンドルのロードに使用しているのと同じ方法、つまりResourceBundleAPIを使用する必要があります。これは、ベース名が(ビューまたはでcom.example.i18n.base使用する値とまったく同じ)であると想定した例です。<f:loadBundle><resource-bundle>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 に答える