我的网站应该以英语和瑞典语提供给用户。我的问题是:我如何决定向用户显示哪种语言(以及哪些数字格式等)。
接口javax.servlet.ServletRequest
定义方法getLocale()
,并表示它将根据HTTP请求中的Accept-language
标头返回语言环境。但这意味着如果有德语浏览器的人访问我的网站,Locale
对象将是德国人。由于我的网站不支持德语,请求中的语言环境将与我的任何语言文件都不匹配。
有没有办法配置这个或我是否需要覆盖getLocale()
方法的功能来执行此操作?
getLocale()
是否是用于确定哪种语言不适合用户的正确方法,还是应该用于其他目的的方法?
要明确的是,我想要的是:如果我的网站支持浏览器提供的语言环境,那么请使用该语言环境。否则,请使用我网站的默认值(英语)。
答案 0 :(得分:1)
getLocale()
方法是正确的方法,但不需要扩展它。 Java的正常internationalization support已经以更加简单和清晰的方式为您提供了所需的行为。
例如,假设您提供以下语言文件:
第一个文件包含您的英文文本,第二个文件包含您的瑞典文本。如果语言环境是瑞典语,则将使用瑞典语文件;否则将使用没有语言扩展名的文件。
要检索文字,您可以执行以下操作:
ResourceBundle strings = ResourceBundle.getBundle("MyStrings");
String hello = strings.getString("HELLO_USER");