我們有一個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