У меня есть hashmap, который содержит метки для разных языков. Ранее я использовал это, чтобы заполнить мои переведенные объекты переводом непосредственно с карты, которая работала нормально.
Map<String, String> m = new HashMap<>();
m.put("sv", "Läs mer");
//...
t.setLabel(m.getOrDefault(language, ""))
Теперь иногда мой ключ может также содержать страну "sv_SE", поэтому я написал для этого метод оболочки:
private static String getLabel(String key) {
String value = m.get(key);
if (value == null) {
int i = key.indexOf("_");
if (i > 0) {
value = m.getOrDefault(key.substring(0, i), "");
} else {
value = "";
}
}
if (!key.equals("en") && value.equals("")) {
System.out.println("WARN: Used \"\" label for " + key );
}
return value;
}
Однако, когда я начал использовать эту оболочку , не английские sh символы искажаются в файле. json, к которому я позже напишу это содержание:
"L��s mer"
Что здесь происходит? Единственное, что я сделал, это добавил этот метод-обертку.