如何查找多种语言的国家代码
How to find a country code in multiple languages
我的问题是我得到了不同语言的国家列表。全部在文本文件中。例如:
pl_PL Japonia
en_GB Spain
en_EN Portugal
我正在寻找一种方法来查找国家代码,知道不同语言的名称,以便我可以用其他语言打印它。例如:
pl_PL Japonia -- translate to english --> en_EN Japan
en_EN Portugal -- translate to polish --> pl_PL Portugalia
我想为每种语言制作一个哈希图,我会在其中放置所有可用的国家和代码,但我不知道如何制作。我已经制作了一张这样的地图,但我不知道如何制作多种语言。
Locale[] allLocs = Locale.getAvailableLocales();
Map map = new HashMap();
String country = null;
for (int j=0; j<allLocs.length; j++) {
Locale.setDefault(new Locale(langArray[0]));
String countryCode = allLocs[j].getCountry();
if (countryCode.equals("")) continue;
kraj = allLocs[j].getDisplayCountry();
map.put(country , allLocs[j]);
}
您要查找的内容称为 exonym or xenonym,java、
中没有开箱即用的 class
我建议先创建一对 class,然后再创建一个 map<string, pair>
,这样您就可以匹配应用程序中的所有组合
示例:
public class I18N {
private Map<String, Map<String, String>> languages;
public static void main(String[] args) {
new I18N();
}
public I18N() {
this.languages = new HashMap<String, Map<String, String>>();
Map<String, String> l = new HashMap<String, String>();
l.put("Spanish", "Japon");
l.put("Polnish", "Japonia");
languages.put("Japan", l);
//
System.out.println(languages.get("Japan").get("Polnish"));
}
}
因此此代码段将查找国家/地区日本,然后查找波兰语中的该名称...
不好的部分是您需要填充自己的外来语名目录
可能您的尝试中 Locale 构造出错了。您需要从输入文件中检索以下内容:
final Locale locale1 = new Locale("pl", "PL");
final String country1 = "Japonia";
然后给定目标语言环境:
final Locale locale2 = new Locale("en", "US");
可以像您一样找到国家。在 java 8:
final Locale[] locales = Locale.getAvailableLocales();
Optional<String> country2 = Stream.of(locales)
.filter((loc) -> country1.equals(loc.getDisplayCountry(locale1)))
.map((cloc) -> cloc.getDisplayCountry(locale2))
.filter((s) -> !s.isEmpty())
.findAny();
System.out.println(country2.orElse("not found"));
- 这会以第一语言搜索显示国家/地区的每个位置。
- 那么第二语言的显示国家就是用对应国家的那个cloc
- 非空。
我的问题是我得到了不同语言的国家列表。全部在文本文件中。例如:
pl_PL Japonia
en_GB Spain
en_EN Portugal
我正在寻找一种方法来查找国家代码,知道不同语言的名称,以便我可以用其他语言打印它。例如:
pl_PL Japonia -- translate to english --> en_EN Japan
en_EN Portugal -- translate to polish --> pl_PL Portugalia
我想为每种语言制作一个哈希图,我会在其中放置所有可用的国家和代码,但我不知道如何制作。我已经制作了一张这样的地图,但我不知道如何制作多种语言。
Locale[] allLocs = Locale.getAvailableLocales();
Map map = new HashMap();
String country = null;
for (int j=0; j<allLocs.length; j++) {
Locale.setDefault(new Locale(langArray[0]));
String countryCode = allLocs[j].getCountry();
if (countryCode.equals("")) continue;
kraj = allLocs[j].getDisplayCountry();
map.put(country , allLocs[j]);
}
您要查找的内容称为 exonym or xenonym,java、
中没有开箱即用的 class我建议先创建一对 class,然后再创建一个 map<string, pair>
,这样您就可以匹配应用程序中的所有组合
示例:
public class I18N {
private Map<String, Map<String, String>> languages;
public static void main(String[] args) {
new I18N();
}
public I18N() {
this.languages = new HashMap<String, Map<String, String>>();
Map<String, String> l = new HashMap<String, String>();
l.put("Spanish", "Japon");
l.put("Polnish", "Japonia");
languages.put("Japan", l);
//
System.out.println(languages.get("Japan").get("Polnish"));
}
}
因此此代码段将查找国家/地区日本,然后查找波兰语中的该名称...
不好的部分是您需要填充自己的外来语名目录
可能您的尝试中 Locale 构造出错了。您需要从输入文件中检索以下内容:
final Locale locale1 = new Locale("pl", "PL");
final String country1 = "Japonia";
然后给定目标语言环境:
final Locale locale2 = new Locale("en", "US");
可以像您一样找到国家。在 java 8:
final Locale[] locales = Locale.getAvailableLocales();
Optional<String> country2 = Stream.of(locales)
.filter((loc) -> country1.equals(loc.getDisplayCountry(locale1)))
.map((cloc) -> cloc.getDisplayCountry(locale2))
.filter((s) -> !s.isEmpty())
.findAny();
System.out.println(country2.orElse("not found"));
- 这会以第一语言搜索显示国家/地区的每个位置。
- 那么第二语言的显示国家就是用对应国家的那个cloc
- 非空。