i18n: rework of the system + French translation
[jvcard.git] / src / be / nikiroo / jvcard / i18n / FixedResourceBundleControl.java
1 package be.nikiroo.jvcard.i18n;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.io.InputStreamReader;
6 import java.net.URL;
7 import java.net.URLConnection;
8 import java.util.Locale;
9 import java.util.PropertyResourceBundle;
10 import java.util.ResourceBundle;
11 import java.util.ResourceBundle.Control;
12
13 public class FixedResourceBundleControl extends Control {
14 public ResourceBundle newBundle(String baseName, Locale locale,
15 String format, ClassLoader loader, boolean reload)
16 throws IllegalAccessException, InstantiationException, IOException {
17 // The below is a copy of the default implementation.
18 String bundleName = toBundleName(baseName, locale);
19 String resourceName = toResourceName(bundleName, "properties");
20 ResourceBundle bundle = null;
21 InputStream stream = null;
22 if (reload) {
23 URL url = loader.getResource(resourceName);
24 if (url != null) {
25 URLConnection connection = url.openConnection();
26 if (connection != null) {
27 connection.setUseCaches(false);
28 stream = connection.getInputStream();
29 }
30 }
31 } else {
32 stream = loader.getResourceAsStream(resourceName);
33 }
34 if (stream != null) {
35 try {
36 // Only this line is changed to make it to read properties files
37 // as UTF-8.
38 // How can someone use an archaic encoding such as ISO 8859-1 by
39 // *DEFAULT* is beyond me...
40 bundle = new PropertyResourceBundle(new InputStreamReader(
41 stream, "UTF-8"));
42 } finally {
43 stream.close();
44 }
45 }
46 return bundle;
47 }
48 }