从地区代码获取国家和语言

时间:2018-07-03 22:46:43

标签: android locale speech-recognition

我有一个android方法,可输出设备中可用的用于语音识别的所有语言代码。问题是它返回了诸如“ en-US”,“ es-ES”,“ es-MX”之类的代码...我想知道是否有一种方法可以将这些代码转换为语言的显示名称(英语(美国),西班牙语(西班牙)...)。谢谢您的帮助。

@Override
public void onReceive(Context context, Intent intent)
{
    Bundle results = getResultExtras(true);
    if (results.containsKey(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE))
    {
        languagePreference =
                results.getString(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE);
    }
    if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES))
    {
        supportedLanguages =
                results.getStringArrayList(
                        RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
    }

    for(int i=0;i<supportedLanguages.size();i++){
        System.out.println("The language supported is: "+supportedLanguages.get(i));
    }
}

2 个答案:

答案 0 :(得分:1)

从ISO语言代码的数据源构建字典:

https://www.andiamo.co.uk/resources/iso-language-codes

答案 1 :(得分:1)

是的,您可以使用Locale.forLanguageTag

Locale locale = Locale.forLanguageTag("en-US");
System.out.println(locale.getDisplayName());

// "English (United States)"