我搜索了一个解决方案,但没有找到任何解决方案。
我有这种信息:
String locale = "en_GB";
String country = "Japonia"; //It means Japan in polish
Run Code Online (Sandbox Code Playgroud)
我需要将国家名称“ Japonia”翻译成字符串语言环境中指示的语言,所以要翻译为“ Japan”。有什么办法吗?
(根据Elliott Frisch的评论回答)
Java Runtime Library没有翻译API,但是Locale只要您知道ISO 3166 alpha-2国家代码和ISO 639 alpha-2,就可以使用该类以任何语言获取任何国家的名称。或alpha-3语言代码。
国家示例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));
Run Code Online (Sandbox Code Playgroud)
输出量
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));
Run Code Online (Sandbox Code Playgroud)
假设您知道输入语言和所需的输出语言,另一种方法 - 使用 迭代Locale系统上的(s)Locale.getAvailableLocales(),测试国家名称是否与所需的输入 匹配Locale- 如果匹配,则Locale使用getDisplayCountry(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;
}
}
Run Code Online (Sandbox Code Playgroud)
输出
Japan
Run Code Online (Sandbox Code Playgroud)
如果你修改outLocale喜欢
Locale outLocale = Locale.forLanguageTag("es-SP");
Run Code Online (Sandbox Code Playgroud)
你得到
Japón
Run Code Online (Sandbox Code Playgroud)