将语言名称转换为ISO 639语言代码

Lak*_*ula 5 java iso locale iso-639-2

我需要将"匈牙利语","英语"等语言名称转换为ISO 639代码.ISO 639-6将是最好的,但ISO 639-2已经足够好了.实现这一目标的最佳方法是什么?

我应该将英语转换为语言环境并使用getLanguage()获取语言?如果这是唯一的方法如何将像'English'这样的字符串转换为java语言环境?

我的目标是使用ISO 639代码存储书籍语言信息.

Joo*_*gen 5

    for (Locale locale : Locale.getAvailableLocales()) {
        System.out.println("" + locale
                + "; display: " + locale.getDisplayLanguage()
                + "; name: " + locale.getDisplayName()
                + "; lang: " + locale.getLanguage()
                + "; iso3: " + locale.getISO3Language());
    }
Run Code Online (Sandbox Code Playgroud)

这将找到大约 150 个语言环境,其中 ISO3 是三个字母的变体,而不是旧的两个字母 getLanguage。

显示语言是裸语言名称,而显示名称则带有国家“德语(奥地利)”。

所以

public String toISO3(String name) {
    for (Locale locale : Locale.getAvailableLocales()) {
        if (name.equals(locale.getDisplayLanguage()) {
            return locale.getISO3Language();
        }
    }
    throw new IllegalArgumentException("No language found: " + name);
}
Run Code Online (Sandbox Code Playgroud)

对于显示方法,有一个可选的 Locale 参数,用于显式设置为 Locale.ENGLISH。

  • 请注意,此方法匹配每对区域设置的一个语言名称,并且不会捕获诸如“अंग्रेजी”和“अँग्रेज़ी”之类的变体(两者都是印地语中说英语的方式)。 (2认同)

Tak*_*aki 4

您可以通过将语言名称的正则表达式传递给LanguageAlpha3Code.findByName(String)(在nv-i18n库中)来获取 ISO 639-2 代码列表。

以下示例代码是一个命令行工具,可将给定的语言名称转换为相应的 ISO 639-2 代码。

import java.util.List;
import com.neovisionaries.i18n.LanguageAlpha3Code;

public class To639_2
{
    public static void main(String[] args)
    {
        // For each language name given on the command line.
        for (String languageName : args)
        {
            // Get a list of ISO 639-2 codes (alpha-3 codes)
            // whose language name matches the given pattern.
            List<LanguageAlpha3Code> list
                = LanguageAlpha3Code.findByName(languageName);

            // Print the language and the ISO 639-2 code.
            System.out.format("%s => %s\n", languageName,
                (list.size() != 0) ? list.get(0) : "");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

示例执行:

$ java -cp nv-i18n-1.14.jar:. To639_2 匈牙利语 英语
匈牙利语 => hun
英语=> eng