确保TextToSpeech与界面语言匹配?

时间:2014-03-22 19:17:11

标签: android localization

我已经将我的本地化了。我还使用TextToSpeech来读取一些本地化字符串。

        speech.setLanguage(Locale.getDefault());

我的问题是,如果用户说意大利语,由于应用程序未本地化为意大利语,界面将恢复为英语,但TextToSpeech仍使用意大利语语音和发音。

基本上是这样的:

  • 如果用户区域设置是US_en,UK_en或任何其他支持的,则需要侦听相应的语音或Locale.getDefault()
  • 如果不支持用户区域设置,则应用程序界面将回退到strings.xml(使用英文),我也需要TextToSpeak才能使用英语语音

任何想法如何做到这一点?


我还没有找到方法知道该应用目前使用的语言,但我发现我可以使用Locale.getDefault().getLanguage()获取该语言并将其与AssetManager.getLocales()进行比较,但我没有&# 39;设法调用getLocales()

1 个答案:

答案 0 :(得分:0)

这就是我现在正在做的事情:

    String deviceLang = Locale.getDefault().getLanguage();
    speech.setLanguage(deviceLang.equals("en") || deviceLang.equals("es") ? Locale.getDefault() : Locale.US);

但是我不满意我必须用我支持的语言更新它。一个更好的解决方案是获取应用程序支持的语言并将其与deviceLang进行比较(这可能与AssetManager.getLocales()有关,但我还没有设法证明它)