package eu.mhsl.minecraft.pixelblocks;

import net.kyori.adventure.key.Key;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.translation.GlobalTranslator;
import net.kyori.adventure.translation.TranslationStore;
import org.jetbrains.annotations.NotNull;

import java.text.MessageFormat;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;

public class Translations {
    public static final Locale defaultLocale = Locale.ENGLISH;
    private static final List<Locale> supportedLocales = List.of(Locale.ENGLISH, Locale.GERMAN);

    private static TranslationStore.StringBased<MessageFormat> store;

    public static void register() {
        store = TranslationStore.messageFormat(Key.key("pixelblocks", "translations"));
        store.defaultLocale(defaultLocale);
        for(Locale locale : supportedLocales) {
            ResourceBundle bundle = ResourceBundle.getBundle("i18n.messages", locale, Translations.class.getClassLoader());
            store.registerAll(locale, bundle, true);
        }
        GlobalTranslator.translator().addSource(store);
    }

    public static void unregister() {
        if(store != null) GlobalTranslator.translator().removeSource(store);
    }

    // Für Texte, die persistiert werden (z. B. Item-Namen) und daher nicht
    // automatisch pro Empfänger übersetzt werden können
    public static @NotNull Component render(@NotNull Component component, @NotNull Locale locale) {
        return GlobalTranslator.render(component, locale);
    }
}
