从代码向Java资源包添加新条目
我使用Java资源包来本地化我的应用程序,我创建了一个函数,它返回一条根据代码中的资源包本地化的消息。。。大概是这样的:从代码向Java资源包添加新条目,java,add,resourcebundle,Java,Add,Resourcebundle,我使用Java资源包来本地化我的应用程序,我创建了一个函数,它返回一条根据代码中的资源包本地化的消息。。。大概是这样的: public String getDescription(String code, ResourceBundle resBundle){ String returnValue = null; try{ returnValue=resBundle.getString(code); }catch(Exception ex){
public String getDescription(String code, ResourceBundle resBundle){
String returnValue = null;
try{
returnValue=resBundle.getString(code);
}catch(Exception ex){
returnValue = null;
}
}
但是,我想知道的是,如果传递的代码不存在,是否可以向资源包中添加条目,例如:
if(!resBundle.containsKey(code)){
//This next line is pseudo-code... it is not valid at all
resBundle.addEntry(code, "xyz");
}
有什么帮助吗?您可以尝试使用
属性
类,并通过将ResourceBundle的键转换为流
类来填充它,因为属性类的功能类似于带有键和值的映射。例如:
Properties props = new Properties();
resBundle.keySet().stream().forEach(k -> props.put(k, resBundle.getString(k)));
然后,您可以使用Properties
的getProperty()
方法,如果找不到指定的键,该方法将返回在第二个参数中指定的值(在您的情况下,键是code
):
我不明白你的解决方案。。。它不会使用密钥更新资源包。我的意思是,我需要的是更新资源包,添加新的键。我认为如果找不到键,可以在运行时使用默认值。无论如何,我认为您不能修改ResourceBundle
本身的值,它仅用于读取。但是你可以通过属性类来完成,正如前面提到的:谢谢你,埃尔顿。。。我想要一种跟踪哪些条目不在资源中的方法,这样我就可以定期查看哪些条目需要更新。我所做的是,用你的方法,有一个并行文件,如果我保存未找到的条目。。如果你觉得我的回答有帮助,请接受。谢谢:)ResourceBundles
a并不是真正设计用来改变代码的。它们背后的思想是提供代码到本地化值的静态映射。您能解释一下为什么要向资源包添加条目吗?也许有不同的方法来解决你的问题。
returnValue=props.getProperty(code,"xyz");