Vir*_*gam 4 java resourcebundle
是否可以将资源包维护在类似于以下内容的文件夹结构中;
1. us\en
2. ae\en
3. ae\ar
Run Code Online (Sandbox Code Playgroud)
资源包文件名将相同,但在不同的文件夹中维护.我知道Java推荐
myresource_en_US.properties
但我需要在文件夹中维护它们并使用资源包类来访问.我正在使用JDK 6.有谁知道我怎么做?
是的,您可以使用自定义控制加载Control.这是一个启动示例:
public class FolderControl extends Control {
public ResourceBundle newBundle
(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)
throws IllegalAccessException, InstantiationException, IOException
{
String resourceName = "/" + locale.getCountry() + "/" + locale.getLanguage()
+ "/" baseName + ".properties";
ResourceBundle bundle = null;
InputStream stream = null;
if (reload) {
URL url = loader.getResource(resourceName);
if (url != null) {
URLConnection connection = url.openConnection();
if (connection != null) {
connection.setUseCaches(false);
stream = connection.getInputStream();
}
}
} else {
stream = loader.getResourceAsStream(resourceName);
}
if (stream != null) {
try {
bundle = new PropertyResourceBundle(new InputStreamReader(stream, "UTF-8"));
} finally {
stream.close();
}
}
return bundle;
}
}
Run Code Online (Sandbox Code Playgroud)
(源代码是从默认实现中复制而只resourceName更改,并且PropertyResourceBundle被更改为将流读取为UTF-8 - 不再需要native2ascii)
您使用如下
ResourceBundle bundle = ResourceBundle.getBundle("myresource", new FolderControl());
// ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5054 次 |
| 最近记录: |