Add translations for French and Japanese
[frank.git] / prod / net / jaekl / frank / FrankBundle.java
1 package net.jaekl.frank;
2
3 import java.util.Locale;
4 import java.util.MissingResourceException;
5 import java.util.ResourceBundle;
6 import java.util.concurrent.ConcurrentHashMap;
7
8 import net.jaekl.qd.QDBundleFactory;
9
10 public class FrankBundle {
11         public static final String ANSWER_RECEIVED = "answer.received";
12         public static final String DATA_COLLECTED = "data.collected";
13         public static final String DESTINATION = "destination";
14         public static final String ERROR_PAGE = "error.page";
15         public static final String ETA = "eta";
16         public static final String FRANK = "frank";
17         public static final String GPS_OFF = "gps.off";
18         public static final String GPS_READ = "gps.read";
19         public static final String HIDE_DETAILS = "hide.details";
20         public static final String INVALID_RESPONSE = "invalid.response";
21         public static final String MAYBE_SERVER_PROBLEM = "maybe.server.problem";
22         public static final String MINUTES = "m";       // suffix (abbreviated) for minutes
23         public static final String REMAIN = "remain";
24         public static final String REQUEST_MADE = "request.made";
25         public static final String RETURN_TO_MAIN_PAGE = "return.to.main.page";
26         public static final String ROUTE = "route";
27         public static final String SECONDS = "s";
28         public static final String SERVER_TIMEOUT = "server.timeout";
29         public static final String SHOW_DETAILS = "show.details";
30         public static final String UNEXPECTED_ERROR = "unexpected.error";
31         public static final String UNEXPECTED_EXCEPTION = "unexpected.exception";
32         public static final String URL_CONTACTED = "url.contacted";
33         
34         final static String BUNDLE_NAME = "frank";
35         
36         static ConcurrentHashMap<Locale, FrankBundle> m_bundleMap = new ConcurrentHashMap<Locale, FrankBundle>();
37         
38         ResourceBundle m_bundle;
39         
40         public static FrankBundle getInst(Locale locale) {
41                 FrankBundle result = m_bundleMap.get(locale);
42                 if (null == result) {
43                         synchronized(FrankBundle.class) {
44                                 result = m_bundleMap.get(locale);
45                                 if (null == result) {
46                                         result = new FrankBundle(locale); 
47                                 }
48                                 m_bundleMap.put(locale, result);
49                         }
50                 }
51                 return result;
52         }
53         
54         private FrankBundle(Locale locale) {
55                 m_bundle = QDBundleFactory.getInst().getBundle(BUNDLE_NAME, locale); 
56         }
57         
58         public String get(String key) {
59                 try {
60                         if (null != m_bundle) {
61                                 return m_bundle.getString(key);
62                         }
63                 }
64                 catch (MissingResourceException e) {
65                         // Make it clear that something has gone wrong.
66                         e.printStackTrace();    
67                         // Fall through to the fallback behaviour below
68                 }
69                 return "[" + key + "]";
70         }
71 }