X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Flocalisation%2FLanguage.java;h=4c6e39012094281c3736c5e4a73649b93c6bbe80;hb=ceb9e3a2bb91ecff8ce49604d43fac956df7f80c;hp=9fc1dcac8a51840a2e3f8005bfed3c4c46242d91;hpb=aa9bbc94f898c992d8d1a50aee61ff486a855b31;p=gigi.git diff --git a/src/org/cacert/gigi/localisation/Language.java b/src/org/cacert/gigi/localisation/Language.java index 9fc1dcac..4c6e3901 100644 --- a/src/org/cacert/gigi/localisation/Language.java +++ b/src/org/cacert/gigi/localisation/Language.java @@ -63,22 +63,22 @@ public class Language { private HashMap translations = new HashMap(); - private Locale l; + private Locale locale; - private static Locale project(Locale l) { - if (l == null) { + private static Locale project(Locale locale) { + if (locale == null) { return Locale.getDefault(); } - File file = new File("locale", l.toString() + ".xml"); + File file = new File("locale", locale.toString() + ".xml"); if ( !file.exists()) { - return new Locale(l.getLanguage()); + return new Locale(locale.getLanguage()); } - return l; + return locale; } - protected Language(Locale loc) throws ParserConfigurationException, IOException, SAXException { - File file = new File("locale", loc.toString() + ".xml"); - l = loc; + protected Language(Locale locale) throws ParserConfigurationException, IOException, SAXException { + File file = new File("locale", locale.toString() + ".xml"); + this.locale = locale; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document d = db.parse(new FileInputStream(file)); @@ -103,30 +103,36 @@ public class Language { return string; } - public static Language getInstance(Locale language) { - language = project(language); - File file = new File("locale", language.toString() + ".xml"); + public static Language getInstance(Locale locale) { + locale = project(locale); + File file = new File("locale", locale.toString() + ".xml"); if ( !file.exists()) { return null; } - Language l = langs.get(language.toString()); - if (l == null) { - try { - l = new Language(language); - langs.put(language.toString(), l); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (SAXException e) { - e.printStackTrace(); + Language lang = langs.get(locale.toString()); + if (lang == null) { + synchronized (Language.class) { + lang = langs.get(locale.toString()); + if (lang != null) { + return lang; + } + try { + lang = new Language(locale); + langs.put(locale.toString(), lang); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (SAXException e) { + e.printStackTrace(); + } } } - return l; + return lang; } public Locale getLocale() { - return l; + return locale; } }