将国家/地区名称翻译成其他语言

时间:2017-05-25 22:44:01

标签: java locale

我搜索了一个解决方案,但我没有找到任何解决方案。

我有这样的信息:

[{
    "_id": {
        "$oid": "592638e163690a5c1f8f73e2"
    },
    ...
}, {
    "_id": {
        "$oid": "592638e163690a5c1f8f73f5"
    },
    ...
}

我需要翻译国家名称" Japonia"到字符串语言环境中指示的语言,所以"日本"。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:4)

(基于comment by Elliott Frisch的答案)

Java运行时库没有翻译API,但Locale类可用于获取任何语言的任何国家/地区的名称,只要您知道ISO 3166 alpha-2 country codeISO 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'sGoogle'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
相关问题