我搜索了一个解决方案,但我没有找到任何解决方案。
我有这样的信息:
[{
"_id": {
"$oid": "592638e163690a5c1f8f73e2"
},
...
}, {
"_id": {
"$oid": "592638e163690a5c1f8f73f5"
},
...
}
我需要翻译国家名称" Japonia"到字符串语言环境中指示的语言,所以"日本"。有没有办法做到这一点?
答案 0 :(得分:4)
(基于comment by Elliott Frisch的答案)
Java运行时库没有翻译API,但Locale
类可用于获取任何语言的任何国家/地区的名称,只要您知道ISO 3166 alpha-2 country code和ISO 639 alpha-2 or alpha-3 language code。
国家Japan
的示例:
Locale countryJapan = new Locale.Builder().setRegion("JP"/*Japan*/).build();
Locale langEnglish = new Locale.Builder().setLanguage("en"/*English*/).build();
Locale langPolish = new Locale.Builder().setLanguage("pl"/*Polish*/).build();
Locale langJapanese = new Locale.Builder().setLanguage("ja"/*Japanese*/).build();
Locale langItalian = new Locale.Builder().setLanguage("it"/*Italian*/).build();
System.out.println(countryJapan.getDisplayCountry(langEnglish));
System.out.println(countryJapan.getDisplayCountry(langPolish));
System.out.println(countryJapan.getDisplayCountry(langJapanese));
System.out.println(countryJapan.getDisplayCountry(langItalian));
输出
Japan
Japonia
日本
Giappone
答案 1 :(得分:3)
是的,您可以使用翻译API。与Microsoft's或Google's一样。
答案 2 :(得分:3)
假设您既知道输入语言又知道所需的输出语言,另一种方法是 - 使用Locale.getAvailableLocales()
在系统上迭代Locale
,测试国家名称是否与所需的匹配< em> in Locale
- 如果是,请使用getDisplayCountry(Locale)
Locale
中
String country = "Japonia";
Locale outLocale = Locale.forLanguageTag("en_GB");
Locale inLocale = Locale.forLanguageTag("pl-PL");
for (Locale l : Locale.getAvailableLocales()) {
if (l.getDisplayCountry(inLocale).equals(country)) {
System.out.println(l.getDisplayCountry(outLocale));
break;
}
}
输出
Japan
如果你修改outLocale
喜欢
Locale outLocale = Locale.forLanguageTag("es-SP");
你得到了
Japón