001package fr.aumgn.bukkitutils.command; 002 003import java.io.IOException; 004import java.io.InputStream; 005import java.net.URL; 006import java.net.URLConnection; 007import java.text.MessageFormat; 008import java.util.Locale; 009import java.util.Map; 010 011import org.bukkit.plugin.java.JavaPlugin; 012 013import fr.aumgn.bukkitutils.localization.Localization; 014import fr.aumgn.bukkitutils.localization.loaders.MessagesLoader; 015 016public class CommandsLocalization extends Localization { 017 018 /** 019 * Do not use, only needed for testing purposes ! 020 */ 021 public CommandsLocalization(Locale locale) { 022 super(null, null, locale, locale); 023 } 024 025 public CommandsLocalization(JavaPlugin plugin, Locale locale) { 026 super(plugin, locale); 027 } 028 029 @Override 030 public CommandsMessages get(String name) { 031 return new CommandsMessages(loadMap(name)); 032 } 033 034 @Override 035 protected void load(Map<String, MessageFormat> map, Locale locale, 036 String name) { 037 loadInJar(map, locale, name); 038 super.load(map, locale, name); 039 } 040 041 private void loadInJar(Map<String, MessageFormat> map, Locale locale, 042 String baseName) { 043 for (MessagesLoader loader : Localization.loaders()) { 044 for (String extension : loader.getExtensions()) { 045 String name = baseName + "." + extension; 046 047 InputStream iStream = null; 048 URL res = getClass().getResource(name); 049 if (res != null) { 050 try { 051 URLConnection connection = res.openConnection(); 052 connection.setUseCaches(false); 053 iStream = connection.getInputStream(); 054 } catch (IOException _) { 055 } 056 } 057 058 if (iStream != null) { 059 loadStream(map, locale, loader, iStream); 060 return; 061 } 062 } 063 } 064 } 065}