我们有一个Java应用程序,可根据浏览器语言设置在用户的浏览器会话上呈现本地化文本。该应用程序读取浏览器语言设置[在应用程序请求中设置的标题内设置]并准备本地化文本。 但最近我们遇到了Mozilla 5.0版本浏览器的问题。注意我们的代码在IE中正常工作。以'ja'语言为例,我们期待浏览器将接受的语言作为'ja-JP'[IE所做的] - 但不幸的是Mozilla(FF)不会 - 它只将浏览器接受的语言发送为'ja'。所以我们着手使用默认语言生成内容。
因为我们正在提供一个相同的修复 - 基本上像地图[语言代码到语言国家代码]像''ja'到'ja-JP',然后创建一个新的语言环境[只有2位数的语言代码在请求后存在 - 我的问题是其他浏览器,如
铬
野生动物园
等
什么是语言格式的报头内发送?
有这么一个数组这样说
JA-JP = JA-JP
JA = JA-JP
和映射浏览器语言的语言,国家或地区代码将有助于解决这一问题。但是,我们是否需要解决一些具体的限制因素 - 比如是否有语言在多个地方发言 - 如果是的话,我们将如何处理?
其他我们需要注意的事情?
在此先感谢。关于请求检测浏览器语言环境/语言并生成输出
回答
http://www.tutorialspoint.com/jsp/jsp_internationalization.htm
多的信息: http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Request-Headers.html
package hall;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
/** Shows all the request headers sent on this
* particular request.
* <P>
* Part of tutorial on servlets and JSP that appears at
* http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
* 1999 Marty Hall; may be freely used or adapted.
*/
public class ShowRequestHeaders extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Servlet Example: Showing Request Headers";
out.println(ServletUtilities.headWithTitle(title) +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=CENTER>" + title + "</H1>\n" +
"<B>Request Method: </B>" +
request.getMethod() + "<BR>\n" +
"<B>Request URI: </B>" +
request.getRequestURI() + "<BR>\n" +
"<B>Request Protocol: </B>" +
request.getProtocol() + "<BR><BR>\n" +
"<TABLE BORDER=1 ALIGN=CENTER>\n" +
"<TR BGCOLOR=\"#FFAD00\">\n" +
"<TH>Header Name<TH>Header Value");
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String headerName = (String)headerNames.nextElement();
out.println("<TR><TD>" + headerName);
out.println(" <TD>" + request.getHeader(headerName));
}
out.println("</TABLE>\n</BODY></HTML>");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
看那java.util.ResourceBundle
类,主要是getBundle()
方法。 (您可以使用它,或者自己实现类似的机制。)
原则上,您拥有语言环境的层次结构,并且每当语言环境没有特别支持时,就会回退到父语言环境。在你的情况下,"ja_JP"
(用Java表示法)具有父区域"ja"
,而该区域又具有父区域""
。
由于大多数日本网页并非特定于日本,因此您通常会为ja
完成所有日语翻译,并且只有当某些特殊功能仅适用于日本的日本用户时,才会有另外的ja_JP
。然后,如果某位用户在美国使用日语,则发送jp_US
也没有问题。
如果你想使用Java的ResourceBundle机制仅用于指示哪些区域设置,我们有数据,您可以创建(例如)这些(空)文件:
- MyLocale.properties - 对应以 “” 语言环境
- MyLocale_de.properties - 对应于 “德” 语言环境(德语)
- MyLocale_en.properties - 相当于为 “en” 语言环境(英语)
- MyLocale_ja。性能 - 对应于 “JA” 区域设置(日本)
然后在你的程序,你会写
Locale rLocale = request.getLocale();
ResourceBundle bundle = ResourceBundle.getBundle("MyLocale", rLocale);
Locale selectedLocale = bundle.getLocale();
现在selectedLocale肯定是 “”, “德”, “恩”,“JP之一“,无论rLocale是什么地方。例如,对于“en”,“en_GB”,“en_US”在所有情况下都将被选择为“en”,“ja”和“ja_JP”都会导致“ja”,而“de_DE”和“de_AT”导致“de”和“it_IT”,“eo”以及大多数其他Locale会导致“”。
“正确的Java的方式”来做到这一点: 你不会问你的包有关其语言环境,但简单地用束作为一个资源包,从它采取的本地化资源。所以,当你需要一些文字时,你可以做
String text = bundle.getText("greeting.hello");
然后输出文字。有时候您会使用MessageFormat格式化插入了值的文本(或Formatter)。 (那么你的属性文件不会是空的,当然,但包含这样的诗句:
greeting.hello = Hello World!
(中英文文件)
greeting.hello = Hallo Welt!
(德国文件)
请注意,浏览器通常不仅发送一个Locale代码,而且还发送一个首选的代码列表。因此,您实际上应该对这些代码中的每个代码执行“捆绑搜索”,并将第一个返回的内容替换为“ “,并且跌倒b只有在没有请求的语言匹配时才会回答“”。 (例如,我的浏览器发送“eo”,“de_DE”,“de”,“en”。由于大多数网站不支持世界语,他们会回到德语(如果可用并且选择正确实施)默认语言(如果他们只看第一个条目))。
您可以从java class - Locale获取语言环境列表。通过调用方法getAvailableLocale()。
http://docs.oracle.com/javase/8/docs/api/java/util/Locale.html#getAvailableLocales--
- 1. 春:检测浏览器语言环境
- 2. 浏览器语言检测
- 3. 检测语言环境并改变URL(重定向)以包含语言环境
- 4. jQuery的浏览器语言检测
- 5. 浏览器自动检测语言
- 6. 在java中检测浏览器语言
- 7. Symfony 3,检测浏览器语言
- 8. 自动检测从WWW浏览器的语言环境,并与黄瓜
- 9. 语言环境语言缩减器
- 10. 使用硒webdriver测试浏览器语言环境
- 11. 从httpsession中检索浏览器语言环境?
- 12. Qt:安装语言包时检测系统语言环境
- 13. 检测语言和django语言环境-url
- 14. 在html中检测系统语言环境(语言)
- 15. Symfony2语言环境检测和翻译
- 16. 检测手机语言环境
- 17. Adobe AIR:检测en_GB语言环境
- 18. Maven的JAXB插件和语言环境生成的输出
- 19. 如果语言环境没有代码页,如何检测语言环境/语言?
- 20. 语言检测器
- 21. 语言环境切换器
- 22. 检测浏览器语言并避免空引用异常
- 23. Facebook Javascript SDK语言环境语言
- 24. Android - 更改语言环境(语言)
- 25. 系统语言环境语言设置
- 26. Android:默认语言环境语言“hd”
- 27. Android语言环境语言支持
- 28. NSDateFormatter语言环境
- 29. Symfony2语言环境
- 30. swprintf语言环境
变化Lcoales到区域设置 – jrey 2011-02-18 22:43:08