# Source code
source: package: co.aikar.commands, class: BungeeLocales

    001package co.aikar.commands;
    002
    003import co.aikar.locales.MessageKey;
    004import net.md_5.bungee.config.Configuration;
    005import net.md_5.bungee.config.ConfigurationProvider;
    006import net.md_5.bungee.config.YamlConfiguration;
    007
    008import java.io.File;
    009import java.io.IOException;
    010import java.util.Locale;
    011
    012public class BungeeLocales extends Locales {
    013    private final BungeeCommandManager manager;
    014
    015    public BungeeLocales(BungeeCommandManager manager) {
    016        super(manager);
    017
    018        this.manager = manager;
    019        this.addBundleClassLoader(this.manager.getPlugin().getClass().getClassLoader());
    020    }
    021
    022    @Override
    023    public void loadLanguages() {
    024        super.loadLanguages();
    025        String pluginName = "acf-" + manager.plugin.getDescription().getName();
    026        addMessageBundles("acf-minecraft", pluginName, pluginName.toLowerCase(Locale.ENGLISH));
    027    }
    028
    029    /**
    030     * Loads the given file
    031     *
    032     * @param file
    033     * @param locale
    034     * @return If any language keys were added
    035     * @throws IOException
    036     */
    037    public boolean loadYamlLanguageFile(File file, Locale locale) throws IOException {
    038        Configuration yamlConfiguration = ConfigurationProvider.getProvider(YamlConfiguration.class).load(file);
    039        return loadLanguage(yamlConfiguration, locale);
    040    }
    041
    042    /**
    043     * Loads a file out of the plugin's data folder by the given name
    044     *
    045     * @param file
    046     * @param locale
    047     * @return If any language keys were added
    048     * @throws IOException
    049     */
    050    public boolean loadYamlLanguageFile(String file, Locale locale) throws IOException {
    051        Configuration yamlConfiguration = ConfigurationProvider.getProvider(YamlConfiguration.class).load(new File(this.manager.plugin.getDataFolder(), file));
    052        return loadLanguage(yamlConfiguration, locale);
    053    }
    054
    055
    056    /**
    057     * Loads every message from the Configuration object. Any nested values will be treated as namespace
    058     * so acf-core:\n\tfoo: bar will be acf-core.foo = bar
    059     *
    060     * @param config
    061     * @param locale
    062     * @return If any language keys were added
    063     */
    064    public boolean loadLanguage(Configuration config, Locale locale) {
    065        boolean loaded = false;
    066        for (String parentKey : config.getKeys()) {
    067            Configuration inner = config.getSection(parentKey);
    068            if (inner == null) {
    069                continue;
    070            }
    071            for (String key : inner.getKeys()) {
    072                String value = inner.getString(key);
    073                if (value != null && !value.isEmpty()) {
    074                    addMessage(locale, MessageKey.of(parentKey + "." + key), value);
    075                    loaded = true;
    076                }
    077            }
    078        }
    079        return loaded;
    080    }
    081}