使用 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 Locale
s 不是翻译服务。它们用于描述本地化组件,例如,您可能有一个 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"
。
我有这样的要求,我需要将等效的国家/地区代码转换为德语国家/地区名称。我正在为我的代码使用语言环境生成器。
这是我的代码:
我做的第一个是这样的:
Locale locale = new Locale("GERMANY", "AT");
生成的输出:German (Austria)
第二个:
Locale aLocale = new Locale.Builder().setLanguage("de").setRegion("AT").build();
生成的输出:German (Austria)
我需要将奥地利的国家代码 "AT"
转换为德语,它应该生成 Österreich
.
Java Locale
s 不是翻译服务。它们用于描述本地化组件,例如,您可能有一个 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"
。