使用区域设置将英语国家/地区名称更改为德语

时间:2015-07-01 04:01:21

标签: java locale

我有这个要求,我需要将等效的国家/地区代码转换为德语国家/地区名称。我正在使用Locale构建器来获取代码。

以下是我的代码:

我做的第一个是:

Locale locale = new Locale("GERMANY", "AT");

生成的输出:German (Austria)

第二个:

Locale aLocale = new Locale.Builder().setLanguage("de").setRegion("AT").build();

生成的输出:German (Austria)

我需要的是将奥地利的countryCode "AT"转换为德语,它应该生成Österreich

2 个答案:

答案 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