我的服务器程序支持多种语言。我知道用户语言,所以我通过地图获得了所需的短语,该地图从硬编码数据开始初始化。 来源样本:
public class Dictionary {
private static Map<String, Map<String, String>> map = new HashMap<>();
static {
map.put("stats", new HashMap<>());
Map<String, String> stats = map.get("stats");
stats.put("en", "Stats");
stats.put("ru", "Статистика");
stats.put("hi", "आँकड़े दिखाएँ");
stats.put("ar", "احصاء");
stats.put("zh", "游戏统计");
stats.put("es", "Estadística");
stats.put("pt", "Estatísticas");
stats.put("it", "Statistiche");
}
public static String getStats(String lang) {
return map.get("stats").get(lang);
}
}
我发现Java提供了ResourceBundle。我怎样才能用这种技术重写代码,因为它必须和当前的方式一样快,即将数据存储在内存中,而不是每次访问?
更新 我用ResourceBundle尝试过相同的方式:
public class SuperDictionary {
private static Map<String, ResourceBundle> dictionary = new HashMap<>();
static {
dictionary.put("en", ResourceBundle.getBundle("Dictionary", new Locale("en")));
dictionary.put("es", ResourceBundle.getBundle("Dictionary", new Locale("es")));
}
public static String getStats(String language) {
return dictionary.get(language).getString("stats");
}
}
这是最好的解决方案吗?