基本上我想在我的应用程序中的jar文件外部有一个messages.properties文件。因此,如果我的翻译错误,用户可以轻松添加语言和编辑文件
目前我使用
ResourceBundle.getBundle("package.MessageBundle");
但我想做这样的事情
ResourceBundle.getBundle("lang/MessageBundle");
其中lang是我的应用程序安装目录下的文件夹。
感谢
亚历
答案 0 :(得分:3)
将其放在类路径覆盖的现有路径中的其他位置,或将其路径添加到类路径中。这样您就可以以相同的方式访问它,而是在外部维护它。
答案 1 :(得分:0)
ResourceBundle
的工作方式是您传递给getBundle
的参数是“basename”。此基本名称将以您正在使用的语言环境为后缀,例如MessageBundle_en.properties
,MessageBundle_fr.properties
。如果您希望系统默认使用不同的区域设置,则将区域设置作为getBundle()
的附加参数传递。
所以你最终得到的是一个目录中的多个语言文件,而不是每种语言的目录。
所以而不是
ResourceBundle.getBundle("lang/MessageBundle");
你会做的
ResourceBundle.getBundle("MessageBundle", locale); // locale corresponds to "lang"
我想你可以通过在基本名称前添加语言名称来做到这一点,但是你会失去ResourceBundle
为你开箱即用的大部分功能。
“外化”部分在很大程度上是不相关的,因为ResourceBundle
在类路径下运行,无论是内部(例如JAR文件)还是外部(例如目录),它都可以工作。