Advertisement
JolyJDIA

Untitled

Jun 13th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.04 KB | None | 0 0
  1. package shallwe.lang;
  2.  
  3. import com.google.common.reflect.TypeToken;
  4. import shallwe.api.localization.Language;
  5. import shallwe.common.utils.StringBind;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.InputStreamReader;
  9. import java.nio.charset.StandardCharsets;
  10. import java.util.EnumMap;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. import java.util.function.BiFunction;
  14.  
  15. public final class LocaleLanguage {
  16.     public static final Language DEFAULT = Language.RU;
  17.     private static final EnumMap<Language, Map<String, Object>> languageMap = new EnumMap<>(Language.class);
  18.  
  19.     private LocaleLanguage() {}
  20.  
  21.     public static Map<String, Object> load(ClassLoader loader, Language lang) {
  22.         return languageMap.compute(lang, (language, map) -> {
  23.             if (map == null) {
  24.                 map = new HashMap<>();
  25.             }
  26.             try (InputStream stream = loader.getResourceAsStream(lang.getFileName() + ".json")) {
  27.                 assert stream != null;
  28.                 try (InputStreamReader inputStreamReader = new InputStreamReader(stream, StandardCharsets.UTF_8)) {
  29.                     map.putAll(StringBind.fromJson(inputStreamReader, new LocalizationTypeToken().getType()));
  30.                 }
  31.             } catch (IOException e) {
  32.                 throw new RuntimeException(e);//todo: ошибка
  33.             }
  34.             return map;
  35.         });
  36.     }
  37.     public String getCorrectLine(Language lang, String key, Object... args) {
  38.         return String.format(languageMap.get(lang).get(key).toString(), args);
  39.     }
  40.     public static void load(Map<String, Object> loader, Language lang) {
  41.         languageMap.computeIfAbsent(lang, k -> loader);
  42.     }
  43.  
  44.     private static Object get(Language language, String key) {
  45.         Object value = languageMap.get(language).get(key);
  46.         return value != null ? value : key;
  47.     }
  48.     private static class LocalizationTypeToken extends TypeToken<Map<String, Object>> {
  49.         private static final long serialVersionUID = 3988518176787768044L;
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement