有没有办法在不使用java.util.Locale类的情况下将2个字母的浏览器语言代码(Accept language)转换为3个字母的ISO639-2/B和ISO639-2/T?

有没有办法在不使用java.util.Locale类的情况下将2个字母的浏览器语言代码(Accept language)转换为3个字母的ISO639-2/B和ISO639-2/T?,java,Java,我在Java应用程序中有以下代码,可以将2个字母的ISO639语言代码转换为3个字母的ISO639语言代码 Locale locale = new Locale("fr"); String langCode = locale.getISO3Language(); System.out.println(langCode); 上述代码将仅打印“fra”,即ISO639-2/T语言代码 Locale locale = new Locale("fr"); String langCode = local

我在Java应用程序中有以下代码,可以将2个字母的ISO639语言代码转换为3个字母的ISO639语言代码

Locale locale = new Locale("fr");
String langCode = locale.getISO3Language();
System.out.println(langCode);
上述代码将仅打印“fra”,即ISO639-2/T语言代码

Locale locale = new Locale("fr");
String langCode = locale.getISO3Language();
System.out.println(langCode);
java.util.Locale仅支持ISO639-2/T语言代码。因此,语言环境无法将两个字母的语言代码转换为三个字母的ISO639-2/B语言代码。因此,在我的例子中,我不能使用java.util.Locale类

ISO639-2/B和ISO639-2/T语言代码的参考:


是否有任何Java库可以同时处理ISO639-2/T和ISO639-2/B语言代码,这样我就可以根据上面的代码片段同时获得“fre”和“fra”?

我不想找到下面讨论的答案。这和我的情况不同只有22个“B”代码,它们不太可能以任何方式被修改,“T”代码是首选。在这种情况下,您可以简单地将22个代码的“T”硬编码到“B”映射,并在可以进行替换时将“T”替换为“B”。虽然您不能扩展Locale,因为它是final,但在实用程序类中它将是一个非常简单的方法。