Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package shallwe.lang;
- import com.google.common.reflect.TypeToken;
- import shallwe.api.localization.Language;
- import shallwe.common.utils.StringBind;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.nio.charset.StandardCharsets;
- import java.util.EnumMap;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.function.BiFunction;
- public final class LocaleLanguage {
- public static final Language DEFAULT = Language.RU;
- private static final EnumMap<Language, Map<String, Object>> languageMap = new EnumMap<>(Language.class);
- private LocaleLanguage() {}
- public static Map<String, Object> load(ClassLoader loader, Language lang) {
- return languageMap.compute(lang, (language, map) -> {
- if (map == null) {
- map = new HashMap<>();
- }
- try (InputStream stream = loader.getResourceAsStream(lang.getFileName() + ".json")) {
- assert stream != null;
- try (InputStreamReader inputStreamReader = new InputStreamReader(stream, StandardCharsets.UTF_8)) {
- map.putAll(StringBind.fromJson(inputStreamReader, new LocalizationTypeToken().getType()));
- }
- } catch (IOException e) {
- throw new RuntimeException(e);//todo: ошибка
- }
- return map;
- });
- }
- public String getCorrectLine(Language lang, String key, Object... args) {
- return String.format(languageMap.get(lang).get(key).toString(), args);
- }
- public static void load(Map<String, Object> loader, Language lang) {
- languageMap.computeIfAbsent(lang, k -> loader);
- }
- private static Object get(Language language, String key) {
- Object value = languageMap.get(language).get(key);
- return value != null ? value : key;
- }
- private static class LocalizationTypeToken extends TypeToken<Map<String, Object>> {
- private static final long serialVersionUID = 3988518176787768044L;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement