如何从ResourceBundle存储数据并在它们之间快速切换?

时间:2016-11-13 08:56:58

标签: java resourcebundle

我的服务器程序支持多种语言。我知道用户语言,所以我通过地图获得了所需的短语,该地图从硬编码数据开始初始化。 来源样本:

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");
    }

}

这是最好的解决方案吗?

0 个答案:

没有答案