【问题标题】:Get country and Language from locale code从语言环境代码中获取国家和语言
【发布时间】:2018-07-04 07:15:58
【问题描述】:

我有一个 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));
    }
}

【问题讨论】:

    标签: android locale speech-recognition


    【解决方案1】:

    是的,您可以使用Locale.forLanguageTag

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

    【讨论】:

    • 有一个名为 locale.getDisplayName() 的方法可以自行创建输出(英语(美国)),而无需使用最后一点代码。仍然非常感谢你,你解决了一个我试图在一分钟内解决几个小时的问题。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多