自动确定用户语言的最佳方法

6
我正在开发一个项目,需要自动确定用户创建内容所使用的语言。目前我们使用Locale.getDefault().getLanguage(),但这可能不是正确的选择。例如,我在意大利写意大利文内容,但我的手机默认语言环境是en_US。因此,我想也许可以从SIM卡所属国家来确定语言(当设备没有时则回退到用户语言环境),但是从国家到语言之间并没有一对一的关系。例如,美国有en_US和es_US两种语言环境。您有什么建议吗?我应该询问用户当前内容的语言环境吗?

1
如果您的手机语言设置为en_US,我猜您可能希望所有应用程序都使用en_US内容。 - Hacketo
5
如果你希望你的应用程序被不同国家的人使用,那么询问Locale是最好的选择。例如,如果一个住在美国的韩国人购买了一部中国手机,你该如何确定应该设置什么Locale?请注意,Locale指的是地区和语言设置。 - TtT23
1个回答

6

你需要用户语言的原因是什么?

我也将我的语言环境设置为en_US,因为我更喜欢用英语来显示菜单等内容。(在我的母语中翻译菜单和设置等内容感觉很吃力。)

如果你在使用语言时不使用Locale.getDefault().getLanguage(),那么你的用户很可能会感到恼怒(我知道我会)。但话说回来,如果你真的想要使用本地语言,我建议你通过一些启发式方法来确定国家代码:

  • 默认语言环境
  • SIM卡所属国家
  • 当前网络所在国家

然后使用一个硬编码的查找表,将国家代码映射为官方语言代码之一。有一些开放数据库提供了这些信息,例如以下资源:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接