使用 Locale 将英文国家/地区名称更改为德语

Changing the English Country names to German language using Locale

我有这样的要求,我需要将等效的国家/地区代码转换为德语国家/地区名称。我正在为我的代码使用语言环境生成器。

这是我的代码:

我做的第一个是这样的:

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

生成的输出:German (Austria)

第二个:

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

生成的输出:German (Austria)

我需要将奥地利的国家代码 "AT" 转换为德语,它应该生成 Österreich.

Java Locales 不是翻译服务。它们用于描述本地化组件,例如,您可能有一个 Map<Locale, String> austria,其中包含从 en"Austria"de_AT"Österreich" 的映射。更有可能的是,您会使用 Resource Bundle 将 Locale 映射到多个翻译,然后您可以在整个应用程序中使用这些翻译。这是 ResourceBundle tutorial.

如果您想将文本翻译成另一种语言,则需要使用某种翻译服务,例如 Google's Translate API

Locale 的方法 getDisplayCountry() 可以采用 Locale 参数来尝试用哪种语言显示它。例如:

Locale locale = new Locale("de", "AT");
System.out.println(locale.getDisplayCountry(locale));

给我打印

Österreich

如果您想要整个语言环境的名称,只需使用带参数的 getDisplayName(),而不是 getDisplayCountry()

这不能保证适用于所有语言环境组合。根据文档:

If the name returned cannot be localized according to [the provided Locale parameter] (say, we don't have a Japanese name for Croatia), this function falls back on the English name, and finally on the ISO code as a last-resort value.

另请注意,德语的语言代码是 "de",而不是 "GERMANY"