我已在我的项目中成功实施了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(新的FileInputStream)方法,但考虑到文件名为base.properties,base_en_US.properties等,这不起作用。
有谁知道这种情况下的最佳做法?提前谢谢!
答案 0 :(得分:5)
您需要使用与JSF相同的方式来加载资源包:使用ResourceBundle
API。这是一个假设基本名称为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");
// ...