У меня есть 2 файла свойств в моей папке ресурсов: messages_hr_HR.properties и messages.properties
Я не использую класс Locale javas, я использую мойПользовательский класс Locale:
public class Locale {
private String bundleName;
private String localeName;
private String iconPath;
public Locale(String bundleName, String localeName, String iconPath) {
super();
this.bundleName = bundleName;
this.localeName = localeName;
this.iconPath = iconPath;
}
public String getBundleName() {
return bundleName;
}
public void setBundleName(String bundleName) {
this.bundleName = bundleName;
}
public String getLocaleName() {
return localeName;
}
public void setLocaleName(String localeName) {
this.localeName = localeName;
}
public String getIconPath() {
return iconPath;
}
public void setIconPath(String iconPath) {
this.iconPath = iconPath;
}
}
У меня есть класс Messages со статическим методом для возврата значения ключа:
public class Messages {
private Messages() {
// do not instantiate
}
private static List<Locale> availableLocales;
private static Locale defaultLocale = new Locale("messages.messages", "EN", "/images/icons/locale/en.png");
static {
availableLocales = new ArrayList<Locale>();
availableLocales.add(defaultLocale);
availableLocales.add(new Locale("messages.messages_hr_HR", "HR", "/images/icons/locale/hr.png"));
}
private static Locale LOCALE = defaultLocale;
private static ResourceBundle RESOURCE_BUNDLE = loadBundle();
private static ResourceBundle loadBundle() {
return ResourceBundle.getBundle(LOCALE.getBundleName());
}
public static String getString(String key) {
try {
ResourceBundle bundle = RESOURCE_BUNDLE == null ? loadBundle() : RESOURCE_BUNDLE;
return bundle.getString(key);
} catch (MissingResourceException e) {
return "!" + key + "!";
}
}
public static void setLocale(Locale locale) {
LOCALE = locale;
RESOURCE_BUNDLE = loadBundle();
}
public static Locale getLocale() {
return LOCALE;
}
public static List<Locale> getAvailableLocales() {
return availableLocales;
}
}
Затем в моем графическом интерфейсе у меня есть меню переключателя с доступными языками и когдапользователь нажимает на некоторые, которые я просто называю Messages.setLocale(clickedLanguageLocale);
Итак, вы можете видеть, что я отвечаю за загрузку определенного файла, а не Java.
Проблема в том, что на некоторых компьютерах это действует странно.Часть текста написана на английском языке (messages.properties), а часть - на хорватском (messages_hr_HR).Первое, что мне пришло в голову, это какая-то локаль по умолчанию для ОС, но это не имеет никакого смысла, так как я использую свои классы.
Есть идеи для такого поведения?