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(String localeString) {
\r
26 synchronized (lock) {
\r
28 if (localeString != "")
\r
29 currentLocale = new Locale(localeString);
\r
30 if (currentLocale == null)
\r
31 currentLocale = new Locale(System.getenv("LANG"));
\r
32 ResourceBundle rb = ResourceBundle.getBundle(I18n.class
\r
33 .getName().replace("I18n", "sudokuki"), currentLocale);
\r
35 for (int i = 0; i < listeners.size(); i++) {
\r
36 listeners.get(i).onLocaleChanged(currentLocale);
\r
38 } catch (Exception e1) {
\r
40 if (catalog == null) {
\r
41 if (System.getenv("LANG") != null) {
\r
43 .println("I18n unable to find translations for (LANG) locale "
\r
44 + System.getenv("LANG"));
\r
46 catalog = ResourceBundle.getBundle(I18n.class.getName()
\r
47 .replace("I18n", "sudokuki"), Locale
\r
49 currentLocale = Locale.getDefault();
\r
51 } catch (Exception e2) {
\r
53 .println("I18n unable to find translations for (JVM) locale "
\r
54 + Locale.getDefault());
\r
61 public static void addLocaleListener(LocaleListener listener) {
\r
62 synchronized (listeners) {
\r
63 if (listener != null) {
\r
64 listeners.add(listener);
\r
69 public static void removeLocaleListener(LocaleListener listener) {
\r
70 synchronized (listeners) {
\r
71 if (listener != null) {
\r
72 listeners.remove(listener);
\r
77 public static String _(String msgid) {
\r
78 synchronized (lock) {
\r
79 if (catalog != null) {
\r
80 return gnu.gettext.GettextResource.gettext(catalog, msgid);
\r