获取每个插件(bunlde)的国际化文件(plugin.properties或plugin_locale名称.properties) 。
比如plugin.properties或plugin_zh_CN.properties等文件。
注意事项:
1.需要在MANI-INF下面的MANIFEST.MF中添加Bundle-Localization: plugin内容。
2.同时在bundle根目录下必须有plugin.properties等文件。
public PluginResource(Plugin plugin)
{
base = plugin.getBundle().getEntry("/");//获取插件的根目录
bundle = Platform.getResourceBundle(plugin.getBundle());//获取plugin.properties或plugin_local名称.properties
}
完整代码
public class PluginResource
{
private Map imageCache = new HashMap();
private PluginResource backup;
private Object base;
private ResourceBundle bundle;
public void setBackup(PluginResource backup)
{
this.backup = backup;
}
public PluginResource(Class clazz)
{
base = clazz;
bundle = ResourceBundle.getBundle("plugin", Locale
.getDefault(), clazz.getClassLoader());
}
public PluginResource(Plugin plugin)
{
base = plugin.getBundle().getEntry("/");
bundle = Platform.getResourceBundle(plugin.getBundle());
}
/**
* 从plugin*.properties文件中获得国际化字符串
* @param key
* @return
*/
public String getString(String key)
{
String result = null;
try
{
if (bundle != null)
result = bundle.getString(key);
} catch (MissingResourceException e)
{
}
try
{
if (result == null && backup != null)
result = backup.getString(key);
} catch (MissingResourceException e1)
{
}
if (result == null)
return key;
return result;
}
/**
* 根据路径获得相应的imageDescriptor
* @param key
* @return
*/
public ImageDescriptor getImageDescriptor(String key)
{
ImageDescriptor result = null;
if (base instanceof URL)
{
try
{
result = ImageDescriptor.createFromURL(new URL(
(URL) base, key));
} catch (MalformedURLException e)
{
result = ImageDescriptor.getMissingImageDescriptor();
}
} else if (base instanceof Class)
{
result = ImageDescriptor
.createFromFile((Class) base, key);
}
if ((result == null || result.getImageData() == null)
&& backup != null)
result = backup.getImageDescriptor(key);
if(result == null || result.getImageData() == null)
return null;
return result;
}
/**
* 根据key从缓存中获得image;若缓存中不存在,则查找descriptor,创建image返回
* @param key
* @return
*/
public Image getImage(String key)
{
Image image = (Image) imageCache.get(key);
if (image != null)
return image;
ImageDescriptor d = getImageDescriptor(key);
if (d == null)
return null;
image = d.createImage();
imageCache.put(key, image);
return image;
}
}