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

Pet*_*erP 15 java locale localization

例如eng,spa,ita,ger

我可以迭代所有语言环境并比较代码,但我想知道是否有更优雅和高效的方法来实现这一目标....

非常感谢任何提示:)

Pow*_*ord 20

我不知道是否有一种简单的方法可以将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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 请注意,java 使用 639-2/T(或 639-3?)而不是 639-2/B。所以,德语是“deu”而不是“ger”。 (3认同)