我有这个要求,我需要将等效的国家/地区代码转换为德语国家/地区名称。我正在使用Locale构建器来获取代码。
以下是我的代码:
我做的第一个是:
Locale locale = new Locale("GERMANY", "AT");
生成的输出:German (Austria)
第二个:
Locale aLocale = new Locale.Builder().setLanguage("de").setRegion("AT").build();
生成的输出:German (Austria)
我需要的是将奥地利的countryCode "AT"
转换为德语,它应该生成Österreich
。
答案 0 :(得分:4)
Locale
的方法getDisplayCountry()
可以使用Locale
参数来尝试将其显示在哪种语言中。例如:
Locale locale = new Locale("de", "AT");
System.out.println(locale.getDisplayCountry(locale));
为我打印
Österreich
如果您想要整个区域设置的名称,只需将getDisplayName()
与参数一起使用,而不是getDisplayCountry()
。
这并不能保证适用于每种语言环境组合。根据文件:
如果返回的名称无法根据[提供的
Locale
参数]进行本地化(例如,我们没有克罗地亚的日文名称),则此功能将依赖于英文名称,最后将ISO代码作为最后的价值。
另请注意,德语的语言代码为"de"
,而不是"GERMANY"
。
答案 1 :(得分:2)
Java Locale
不是翻译服务。它们用于描述本地化组件,例如,您可能包含Map<Locale, String> austria
,其中包含从en
到"Austria"
和de_AT
到"Österreich"
的映射。更有可能的是,您可以使用资源包将Locale
映射到您可以在整个应用程序中使用的许多翻译。这是ResourceBundle
tutorial。
如果您想将文字翻译成其他语言,则需要使用某种翻译服务,例如Google's Translate API。