mcLocale.java 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.gmail.nossr50.locale;
  2. import java.text.MessageFormat;
  3. import java.util.Locale;
  4. import java.util.MissingResourceException;
  5. import java.util.ResourceBundle;
  6. import java.util.logging.Logger;
  7. import org.bukkit.ChatColor;
  8. import com.gmail.nossr50.config.LoadProperties;
  9. public class mcLocale {
  10. private static final String BUNDLE_NAME = "com.gmail.nossr50.locale.locale";
  11. private static ResourceBundle RESOURCE_BUNDLE = null;
  12. public static String getString(String key) {
  13. return getString(key, null);
  14. }
  15. /**
  16. * Gets the appropriate string from the Locale files.
  17. *
  18. * @param key The key to look up the string with
  19. * @param messageArguments Any arguements to be added to the string
  20. * @return The properly formatted locale string
  21. */
  22. public static String getString(String key, Object[] messageArguments) {
  23. try {
  24. if (RESOURCE_BUNDLE == null) {
  25. Locale.setDefault(new Locale("en", "US"));
  26. String[] myLocale = LoadProperties.locale.split("[-_ ]");
  27. Locale locale = null;
  28. if (myLocale.length == 1)
  29. locale = new Locale(myLocale[0]);
  30. else if (myLocale.length >= 2)
  31. locale = new Locale(myLocale[0], myLocale[1]);
  32. RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME, locale);
  33. }
  34. String output = RESOURCE_BUNDLE.getString(key);
  35. if (messageArguments != null) {
  36. MessageFormat formatter = new MessageFormat("");
  37. formatter.applyPattern(output);
  38. output = formatter.format(messageArguments);
  39. }
  40. output = addColors(output);
  41. return output;
  42. }
  43. catch (MissingResourceException e) {
  44. return '!' + key + '!';
  45. }
  46. }
  47. private static String addColors(String input) {
  48. input = input.replaceAll("\\Q[[BLACK]]\\E", ChatColor.BLACK.toString());
  49. input = input.replaceAll("\\Q[[DARK_BLUE]]\\E", ChatColor.DARK_BLUE.toString());
  50. input = input.replaceAll("\\Q[[DARK_GREEN]]\\E", ChatColor.DARK_GREEN.toString());
  51. input = input.replaceAll("\\Q[[DARK_AQUA]]\\E", ChatColor.DARK_AQUA.toString());
  52. input = input.replaceAll("\\Q[[DARK_RED]]\\E", ChatColor.DARK_RED.toString());
  53. input = input.replaceAll("\\Q[[DARK_PURPLE]]\\E", ChatColor.DARK_PURPLE.toString());
  54. input = input.replaceAll("\\Q[[GOLD]]\\E", ChatColor.GOLD.toString());
  55. input = input.replaceAll("\\Q[[GRAY]]\\E", ChatColor.GRAY.toString());
  56. input = input.replaceAll("\\Q[[DARK_GRAY]]\\E", ChatColor.DARK_GRAY.toString());
  57. input = input.replaceAll("\\Q[[BLUE]]\\E", ChatColor.BLUE.toString());
  58. input = input.replaceAll("\\Q[[GREEN]]\\E", ChatColor.GREEN.toString());
  59. input = input.replaceAll("\\Q[[AQUA]]\\E", ChatColor.AQUA.toString());
  60. input = input.replaceAll("\\Q[[RED]]\\E", ChatColor.RED.toString());
  61. input = input.replaceAll("\\Q[[LIGHT_PURPLE]]\\E", ChatColor.LIGHT_PURPLE.toString());
  62. input = input.replaceAll("\\Q[[YELLOW]]\\E", ChatColor.YELLOW.toString());
  63. input = input.replaceAll("\\Q[[WHITE]]\\E", ChatColor.WHITE.toString());
  64. return input;
  65. }
  66. }