1 package net.jankenpoi.i18n;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Locale;
\r
5 import java.util.ResourceBundle;
\r
8 * HOW TO USE THIS CLASS:<br/>
\r
9 * import static net.jankenpoi.i18n._;
\r
13 private static ResourceBundle catalog;
\r
15 private static Locale currentLocale;
\r
17 private static Object lock = new Object();
\r
19 private final static ArrayList<LocaleListener> listeners = new ArrayList<LocaleListener>();
\r
25 public static void reset(final String localeString) {
\r
26 String[] split = localeString.split("_");
\r
27 String lang = split[0];
\r
28 String country = split.length > 1 ? split[1] : "";
\r
29 synchronized (lock) {
\r
31 if (!"".equals(localeString)) {
\r
32 currentLocale = new Locale(lang, country);
\r
34 if (currentLocale == null)
\r
35 currentLocale = new Locale(System.getenv("LANG"));
\r
36 ResourceBundle rb = ResourceBundle.getBundle(I18n.class
\r
37 .getName().replace("I18n", "sudokuki"), currentLocale);
\r
39 for (int i = 0; i < listeners.size(); i++) {
\r
40 listeners.get(i).onLocaleChanged(currentLocale);
\r
42 } catch (Exception e1) {
\r
44 if (catalog == null) {
\r
45 if (System.getenv("LANG") != null) {
\r
47 .println("I18n unable to find translations for (LANG) locale "
\r
48 + System.getenv("LANG"));
\r
50 catalog = ResourceBundle.getBundle(I18n.class.getName()
\r
51 .replace("I18n", "sudokuki"), Locale
\r
53 currentLocale = Locale.getDefault();
\r
55 } catch (Exception e2) {
\r
57 .println("I18n unable to find translations for (JVM) locale "
\r
58 + Locale.getDefault());
\r
65 public static void addLocaleListener(LocaleListener listener) {
\r
66 synchronized (listeners) {
\r
67 if (listener != null) {
\r
68 listeners.add(listener);
\r
73 public static void removeLocaleListener(LocaleListener listener) {
\r
74 synchronized (listeners) {
\r
75 if (listener != null) {
\r
76 listeners.remove(listener);
\r
81 public static String _(String msgid) {
\r
82 synchronized (lock) {
\r
83 if (catalog != null) {
\r
84 return gnu.gettext.GettextResource.gettext(catalog, msgid);
\r