在数据库中保存区域设置



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

这听起来非常简单,对我来说很棒。但是,如何从现有语言环境中获取此"IETF BCP 47 标准"字符串?我查看了API,但没有发现任何与"IETF BCP 47标准"相当的内容。

考虑 Locale.toLanguageTag:

返回格式正确的 IETF BCP 47 语言标记,表示 [a] 现场。

用法示例:

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

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

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

如果要存储整个区域设置,请使用 Locale.toString() 和在_上拆分的自定义方法将字符串转换为区域设置的三个部分。

最新更新