在芬兰语的情况下,Java 是否错误地显示了 ISO 639-2 语言?
Is Java showing ISO 639-2 languages incorrectly in case of Finnish?
为什么 Java 在芬兰语中错误地显示了 ISO 639-2 语言代码?它使用 ISO 639 代码给出正确的芬兰语语言名称。
public static void main(String[] args) {
Locale fi = new Locale("fi");
Locale fin = new Locale("fin");
Locale en = new Locale("en", "EN");
Locale sv = new Locale("sv");
System.out.println("fi: " +fi.getDisplayLanguage(fi));
System.out.println("fin: " +fin.getDisplayLanguage(fi));
System.out.println("sv: " +fin.getDisplayLanguage(sv));
System.out.println("en: " +fin.getDisplayLanguage(en));
}
fi: suomi
fin: Finnish***?? Why this is in English, not in Finnish?
sv: Finska
en: Finnish
这是因为 "fin"
不是 Locale(String)
构造函数的语言参数的有效值。
根据 documentation,语言参数应该是(强调我的):
ISO 639 alpha-2 or alpha-3 language code, or registered language subtags up to 8 alpha letters (for future enhancements). When a language has both an alpha-2 code and an alpha-3 code, the alpha-2 code must be used. You can find a full list of valid language codes in the IANA Language Subtag Registry (search for "Type: language"). The language field is case insensitive, but Locale always canonicalizes to lower case.
因为芬兰语有一个 alpha-2 代码 ("fi"
),所以这是您应该使用的,而不是 "fin"
。否则,您实际上是在为某种默认语言环境(英语?)创建语言环境对象。
为什么 Java 在芬兰语中错误地显示了 ISO 639-2 语言代码?它使用 ISO 639 代码给出正确的芬兰语语言名称。
public static void main(String[] args) {
Locale fi = new Locale("fi");
Locale fin = new Locale("fin");
Locale en = new Locale("en", "EN");
Locale sv = new Locale("sv");
System.out.println("fi: " +fi.getDisplayLanguage(fi));
System.out.println("fin: " +fin.getDisplayLanguage(fi));
System.out.println("sv: " +fin.getDisplayLanguage(sv));
System.out.println("en: " +fin.getDisplayLanguage(en));
}
fi: suomi
fin: Finnish***?? Why this is in English, not in Finnish?
sv: Finska
en: Finnish
这是因为 "fin"
不是 Locale(String)
构造函数的语言参数的有效值。
根据 documentation,语言参数应该是(强调我的):
ISO 639 alpha-2 or alpha-3 language code, or registered language subtags up to 8 alpha letters (for future enhancements). When a language has both an alpha-2 code and an alpha-3 code, the alpha-2 code must be used. You can find a full list of valid language codes in the IANA Language Subtag Registry (search for "Type: language"). The language field is case insensitive, but Locale always canonicalizes to lower case.
因为芬兰语有一个 alpha-2 代码 ("fi"
),所以这是您应该使用的,而不是 "fin"
。否则,您实际上是在为某种默认语言环境(英语?)创建语言环境对象。