2012-04-11 85 views
4

我試圖使用LocaleInfo類和方法getCurrentLocale()獲取客戶端上的當前語言環境。但是,無論客戶端計算機上具有哪些區域設置和區域設置,它總是返回值默認語言環境。如何使用LocaleInfo獲取GWT中的當前語言環境

Date類toLocaleString()方法返回特定於語言環境的字符串,但LocaleInfo似乎無法獲取系統Locale。

+0

其實你有沒有可以獲得可能的語言環境列表的地方? 會[CldrLocales](http://code.google.com/p/google-web-toolkit/source/browse/releases/2.0/user/src/com/google/gwt/i18n/CldrLocales.gwt.xml)工作? – snowstreams 2012-04-13 10:37:28

回答

3

GWT的語言環境不會從系統/瀏覽器設置中自動獲取。按照the GET locale documentation的語言環境在運行時可以使用以下兩種方式之一進行設置:

  1. 通過指定應用程序的URL一個locale請求參數。即http://www.myapplication.com/?locale=es
  2. 通過包括在主機頁一個gwt:property元標記:

    <meta name="gwt:property" content="locale=es" />

    這是爲生產應用的首選方法。您的主機頁面可以通過多種方式確定用戶的區域設置,包括但不限於允許用戶配置本地或基於Accept-Language request header檢測其首選區域設置。

2

這幾乎是不可能準確地獲得區域的用戶的在JavaScript這樣GWT甚至沒有嘗試[1]。
LocaleInfo返回關於您在編譯的中選擇的語言環境的信息;也就是您在*.gwt.xml中使用<extend-property name="locale" ... />添加的語言環境之一。

https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale

[1]那麼,在最近的版本中,它不會嘗試(使用瀏覽器的編譯時區域),而只是選擇編譯的語言環境之一,使之不改變任何行爲LocaleInfo

+0

我只希望區域設置日期和時間格式,所以我認爲Javascript toLocale會很可靠。我想我將不得不在模塊文件中添加一個支持的語言環境列表,並希望瀏覽器在編譯時選擇正確的語言環境。 我無法想象每次運行應用程序時都要讓用戶自己選擇區域設置。 – snowstreams 2012-04-13 09:29:03

6

爲了讓您的GWT應用程序自動檢測您的語言環境,只需將您的base index.html文件(包含「nocache.js」腳本的文件)重命名爲index.jsp,然後將以下行添加到該部分:

<meta name="gwt:property" content="locale=<%=request.getLocale()%>"> 
相關問題