我的問題是以下內容:GWT gwt i18n杜松子酒模塊
我得到一個應用程序與GWT運行。 在應用程序啓動時,加載一個擴展AbstractGinModule或另一個GWTClientModule的GWTClientModule。
基於那個開關我想設置本地。 有沒有辦法做如下設置本地不直接以html:
<meta name="gwt:property" content="locale=fr">
而是直接在選擇GWTClientModule之一?
非常感謝你的善意幫助;-)
我的問題是以下內容:GWT gwt i18n杜松子酒模塊
我得到一個應用程序與GWT運行。 在應用程序啓動時,加載一個擴展AbstractGinModule或另一個GWTClientModule的GWTClientModule。
基於那個開關我想設置本地。 有沒有辦法做如下設置本地不直接以html:
<meta name="gwt:property" content="locale=fr">
而是直接在選擇GWTClientModule之一?
非常感謝你的善意幫助;-)
你不能這樣做,如果你使用static String internationalization,因爲它使用deferred binding:GWT編譯器生成每個區域的一個JavaScript文件,而當你的頁面加載,在加載適當版本的代碼之前,GWT引導腳本在頁面(或URL中)內查找「locale」屬性。
選擇編程語言環境(您GWTClientModule內)是不可能的,因爲你的代碼的本地化版本已經一次加載代碼執行...
如果你真的需要在運行時選擇的語言環境,你可能想看看dynamic String internationalization,但它性能較差,你失去了靜態類型檢查。
感謝您的回覆。我將首先看到動態的String國際化。或者我可以在構建過程中替換.properties文件。無論如何,感謝您的解釋:-) – AbstractMan 2010-10-13 07:43:21
當您在構建期間討論替換.properties文件時,我必須問:您的最終目標是什麼?你只是想編譯一個特定的區域? 因爲您可以通過將以下內容添加到Module.gwt.xml中來實現這一點:
我們在此基於this根據客戶端瀏覽器語言設置了區域設置。
只要下面的JavaScript添加到您的.html:
<script type="text/javascript">
var search = location.search;
if(search.indexOf("locale") == -1){
var lang = navigator.language!= null ? navigator.language : navigator.browserLanguage;
lang = lang.replace("-", "_");
var metaTag = document.createElement('meta');
metaTag.name = "gwt:property";
metaTag.content = "locale=" + lang;
document.getElementsByTagName('head')[0].appendChild(metaTag);
}
</script>
它看起來如果對應於區域設置META標記未設定,如果沒有它查找瀏覽器語言,並添加適當的meta標籤,EG:
<meta name="gwt:property" content="locale=fr">
顯然只有兩種方法來指定區域設置:1 /在主機頁面我們定義。 2 /在網址中加入「?locale = fr」。真的嗎?服務器端或使用web.xml或gwtclientmodule或其他方式都不可能... – AbstractMan 2010-10-12 15:23:10