有没有一种优雅的方法可以将ISO 639-2(3个字母)语言代码转换为Java语言环境?

2022-09-03 06:11:06

例如:英、水疗、意大利、蒙古包

我可以迭代所有区域设置并比较代码,但我想知道是否有更优雅和高性能的方法来实现这一点。

非常感谢您的任何提示:)


答案 1

我不知道是否有一种简单的方法可以将3个字母转换为2个字母的版本,但是在更糟糕的情况下,您可以创建它们的Map,如下所示:

String[] languages = Locale.getISOLanguages();
Map<String, Locale> localeMap = new HashMap<String, Locale>(languages.length);
for (String language : languages) {
    Locale locale = new Locale(language);
    localeMap.put(locale.getISO3Language(), locale);
}

现在,您可以使用以下内容查找区域设置localeMap.get("eng");

编辑:修改了地图的创建方式。现在,每种语言应该有一个对象。

编辑 2:已经过了一段时间,但在初始化 Map 时更改了代码以使用语言数组的实际长度。


答案 2

您可以使用构造函数 ,其中语言是 2 个字母的 ISO-639-1 代码。我认为将ISO-639-2转换为ISO-639-1的最简单方法是创建常量。Locale(String language)HashMap<String,String>


推荐