我需要找到基于国家代码的语言。对于国家代码“us”,应返回“en”,或“cn”应返回“zh”。我通过了 java.util.Locale
,它在languagecode而不是countrycode上工作。也, Locale.getAvailableLocales
在这里没有帮助,因为它为相同的countrycode返回多种语言。还有什么有用的吗。我希望避免初始化文件中所有有用的区域设置,然后使用它(因为每当我们需要使用新的区域设置时,它可能需要定期更新)
提前谢谢
查看其他stackoverflow问题,找不到答案,因此在此处发布了一个新问题。
3条答案
按热度按时间fnx2tebb1#
没有什么比一个国家的默认语言更好的了,尽管大多数国家只有一种(官方)语言。相反,只有一个国家讲的语言很少。但有几种语言确实有一个特定于一个国家的变体。
这就是设计的原因
java.util.Locale
就像设计的那样。区域设置不是“国家”代码,主要是语言代码。但乍一看,似乎大多数语言的国家变体都是在这个类中定义的。如果你真的想根据国家选择一种语言,你需要建立你自己的Map,也许像这样:
但要填补这个空缺,你需要一些手工工作:
也许您可以在某个地方找到一个已经存在的数据库。
mefy6pfw2#
这个问题没有正确答案。
有些国家有多种官方语言。比利时有三种民族语言:荷兰语、法语和德语。这些语言在该国的北部、南部和东部地区都有。很多比利时网站的主页只有一种语言可供选择。几乎所有这些都允许您轻松地切换语言。加拿大有两种国家语言:英语和法语。这两种语言都在新不伦瑞克省使用,魁北克省主要使用法语,其余主要使用英语。瑞士有四种民族语言:德语、法语、意大利语和罗马语。我甚至不想解释这个。
有些语言在国家之间是不同的。比利时和法国都讲法语。他们用完全不同的词来描述同一件事。“d”字é在法国是午餐,在比利时是早餐。
如果您试图编写一个多语言的javaweb应用程序,我建议您使用
ResourceBundle
. 您将从Accept-Language
http头或简单地询问用户。您应该阅读javadoc for java.util.resourcebundle。还要注意,resourcebundle属性文件的默认编码在Java8和Java9之间发生了变化。
xa9qqrwz3#
你可以建立一个
HashMap
要将国家代码Map到语言集,请执行以下操作:然后,获得国家代码的语言,如下所示: