确定用户的首选语言

时间:2012-05-24 19:44:17

标签: java servlets

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

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

有没有办法配置这个或我是否需要覆盖getLocale()方法的功能来执行此操作?

getLocale()是否是用于确定哪种语言不适合用户的正确方法,还是应该用于其他目的的方法?

要明确的是,我想要的是:如果我的网站支持浏览器提供的语言环境,那么请使用该语言环境。否则,请使用我网站的默认值(英语)。

1 个答案:

答案 0 :(得分:1)

getLocale()方法是正确的方法,但不需要扩展它。 Java的正常internationalization support已经以更加简单和清晰的方式为您提供了所需的行为。

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

  • MyStrings.properties
  • MyStrings_sv_SE.properties

第一个文件包含您的英文文本,第二个文件包含您的瑞典文本。如果语言环境是瑞典语,则将使用瑞典语文件;否则将使用没有语言扩展名的文件。

要检索文字,您可以执行以下操作:

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