2012-05-24 46 views
0

我有一个网站应该提供给用户使用英语和瑞典语。我的问题是:如何决定向用户显示哪种语言(以及哪些数字格式等)。确定用户的首选语言

接口javax.servlet.ServletRequest定义了方法getLocale()并表示它将返回基于HTTP请求中的Accept-language标头的区域设置。但是这意味着如果一个带有德语浏览器的人访问我的网站,该对象将是德语对象。由于我的网站不支持德语,请求中的语言环境将与我的任何语言文件不匹配。

有没有办法配置这个,或者我是否需要重写getLocale()方法的功能来做到这一点?

getLocale()正确的方法,用于遏制什么语言对用户不利,或者是应该用于其他目的的方法?

而且很明显,我想要的是:如果浏览器提供的语言环境得到我的网站的支持,那就使用那个。否则,使用默认的网站(英文)。

+0

“要说清楚,我要的是:如果浏览器所提供的语言环境由我的网站支持,然后使用一个不然。 ,为我的网站使用默认的(英文)“。尝试在代码中以“get locale()提供的locale”的形式表达。您可能需要某种类型的受支持的语言环境集合,这些语言环境是在某处定义的... – esej

+0

是的,我可能需要一个集合。但是,我是否需要扩展getLocale,并且该方法是否适用于我的porpose? –

回答

1

getLocale()方法是正确的,但没有必要对其进行扩展。 Java的正常internationalization support已经以一种更容易和更简洁的方式为你提供了你想要的行为。

例如,假设您提供以下语言文件:

  • MyStrings.properties
  • MyStrings_sv_SE.properties

的第一个文件有你的英语文本,第二个有你的瑞典文本。如果语言环境是瑞典,则会使用瑞典语言文件;否则将使用不带语言扩展名的文件。

要检索的文字,你会做这样的事情:

ResourceBundle strings = ResourceBundle.getBundle("MyStrings"); 
String hello = strings.getString("HELLO_USER"); 
+0

太棒了。谢谢 –

相关问题