我有famfamfam国家图标,现在我想在我的应用程序中显示语言标志。有没有办法将语言映射到国家?我知道可能有许多国家/地区使用相同的语言或国家/地区可能会使用多种语言。但是很有可能所有语言都在某些国家/地区使用,那么有没有办法将语言映射到各个国家/地区,因此我可以为语言显示标志图标?
答案 0 :(得分:2)
JRE以平台无关的方式为您提供当前安装的默认Locale信息。你有关于国家和语言的信息。用户可以根据需要调整此设置。
所有其他方法是将country_language代码映射到imgae文件(例如DE_de.jpg)。
答案 1 :(得分:1)
首先,不要这样做。 Country flags are no good language indicators,它们是国家/地区指标,如果使用其他国家/地区的国旗来表示他们的语言,您经常会冒犯您的用户 - 或者这个国家/地区使用的不同语言有多个相同的标记(在亚洲)这将是经常)。
只有极少数语言实际上有自己的标志,如世界语。
如果你真的想这样做,有一些方法:
自己创建一个语言/国家的数据库,例如Johan表示。或者更好的是,数据库语言=> flag,因为这是你真正想要的(这也支持世界语标志)。
您可以向Java JRE询问受支持的语言环境(Locale.getAvailableLocales),按语言对它们进行排序,并从该语言支持的国家/地区变体列表中获取一个随机国家/地区。通常只有一个,因此没有问题。对于英语,阿拉伯语,西班牙语,法语等较大的语言,您可以随机选择一个国家/地区标志。
答案 2 :(得分:0)
听起来enums
可能有用,例如
enum Language {
Swedish(Country.Sweden),
English(Country.England, Country.USA),
German(Country.Germany);
private Country[] countries;
Language(Country... countries) {
this.countries = countries;
}
public Country[] getCountries() {
return this.countries;
}
}
enum Country {
Sweden,
Germany,
England,
USA;
}
可以使用:
Language lang = Language.English;
lang.getCountries(); // England, USA
下一个建议是让Country
将Flag
作为构造函数参数(就像Language
采用Country
一样)。然后你可以使用类似的东西:
for(Country c : Language.English.getCountries()) {
System.out.println(c.getFlag());
}