3

在我的带有 JDK 7 的 JSF 2.1 应用程序中,我搜索了一种解决方案,为我的用户提供保存他们首选语言的可能性。因此,在下次登录时,应该从数据库接收语言并替换为默认语言(浏览器)。我现在唯一的问题是,如何将 java.util.Locale 保存在我的数据库中?经过数小时的谷歌搜索,我在 JDK 7 中发现了一个新功能,即“forLanguageTag 工厂方法”。此方法返回一个区域设置,并且只需要一个 IETF BCP 47 标准字符串。

这听起来很简单,对我来说很棒。但是我怎样才能从现有的语言环境中获得这个“IETF BCP 47 标准”-String?我查看了 API,但没有发现任何可以与“IETF BCP 47 标准”相媲美的东西。

4

2 回答 2

7

考虑Locale.toLanguageTag

返回表示 [a] 语言环境的格式良好的IETF BCP 47语言标签。

示例用法:

String expectedTag = "en-US";
Locale locale = Locale.forLanguageTag( expectedTag );
String actualTag = locale.toLanguageTag();
Assert.assertEquals( expectedTag, actualTag );

注意: javadocs中提到了一些限制。

于 2012-10-08T22:01:57.257 回答
4

如果您只是对语言感兴趣,只需使用Locale.getLanguage()将语言环境转换为字符串,并将new Locale(String language)字符串转换为语言环境。

如果要存储整个 Locale,请使用Locale.toString(), 和一个自定义方法,该方法将_字符串转换为 Locale 的三个部分。

于 2012-10-08T20:51:53.197 回答