(final String languageRegionID, final String languagesDirectory)
| 140 | } |
| 141 | |
| 142 | public void setLanguage(final String languageRegionID, final String languagesDirectory) { |
| 143 | String[] splitLocale = languageRegionID.split("-"); |
| 144 | |
| 145 | Locale oldLocale = locale; |
| 146 | locale = new Locale(splitLocale[0], splitLocale[1]); |
| 147 | |
| 148 | //Don't reload the language if nothing changed |
| 149 | if (oldLocale == null || !oldLocale.equals(locale)) { |
| 150 | File file = new File(languagesDirectory); |
| 151 | URL[] urls = null; |
| 152 | |
| 153 | try { |
| 154 | urls = new URL[] { file.toURI().toURL() }; |
| 155 | } catch (MalformedURLException e) { |
| 156 | e.printStackTrace(); |
| 157 | } |
| 158 | |
| 159 | ClassLoader loader = new URLClassLoader(urls); |
| 160 | |
| 161 | try { |
| 162 | resourceBundle = ResourceBundle.getBundle(languageRegionID, new Locale(splitLocale[0], splitLocale[1]), loader); |
| 163 | englishBundle = ResourceBundle.getBundle("en-US", new Locale("en", "US"), loader); |
| 164 | } catch (NullPointerException | MissingResourceException e) { |
| 165 | //If the language can't be loaded, default to US English |
| 166 | resourceBundle = ResourceBundle.getBundle("en-US", new Locale("en_US"), loader); |
| 167 | e.printStackTrace(); |
| 168 | } |
| 169 | |
| 170 | System.out.println("Language '" + resourceBundle.getBaseBundleName() + "' loaded successfully."); |
| 171 | |
| 172 | notifyObservers(); |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | public void registerObserver(LocalizationChangeObserver observer) { |
| 177 | observers.add(observer); |
no test coverage detected