code: @Pure
  	public static String getString(ClassLoader classLoader, Class<?> resource, String key, Object... params) {
  		Class<?> res = detectResourceClass(resource);
  		if (res == null) {
  			return key;
  		}
  		String val = getStringWithDefaultFrom(classLoader, res.getCanonicalName(), key, null, params);
  		if (val == null && classLoader != resource.getClassLoader()) {
  			val = getStringWithDefaultFrom(classLoader, res.getCanonicalName(), key, null, params);
  		}
  		while ((res != null) && (val == null)) {
  			res = res.getSuperclass();
  			if (res != null) {
  				val = getStringWithDefaultFrom(classLoader, res.getCanonicalName(), key, null, params);
  			}
  		}
  		if (val == null) {
  			return key;
  		}
  		return val;
  	}
docs: Replies the text that corresponds to the specified resource.
  
  @param classLoader is the class loader to use.
  @param resource is the name of the resource file
  @param key is the name of the resource into the specified file
  @param params is the the list of parameters which will
  replaces the <code>#1</code>, <code>#2</code>... into the string.
  @return the text that corresponds to the specified resource