2013-01-16 35 views
1

我試圖國際化我的GWT應用程序。GWT i18n,更改metaTag並重新加載應用程序

我看了教程,看到一些例子。

有沒有辦法做到的語言變化不添加URL標籤「?區域= DE」

我的目標是在菜單登錄界面,用戶選擇languague,然後重新加載。 我設法做到這一點與地區添加到網址[醜陋的方式對我]

我讀到,有可能在HTML文件中的元標記。 所以我試着把它放在HTML文件中

它用這種語言加載,但我不能改變語言。

只有使用meta標籤纔可能使語言變得更大?

在代碼中,我可以讀取和恰克元標記值,但是當我刷新我所做的更改將丟失

NodeList<Element> tags = Document.get().getElementsByTagName("meta"); 
    for (int i = 0; i < tags.getLength(); i++) { 
     MetaElement metaTag = ((MetaElement) tags.getItem(i)); 
     System.out.println("metaTag.getName() = " + metaTag.getName()); 
     System.out.println("metaTag.getContent = " + metaTag.getContent()); 
     if (metaTag.getName().equals("gwt:property")) { 
      metaTag.setContent("locale=de"); 
     } 
    } 
    Window.Location.reload(); 
+0

至於記得GWT加載一組特定於選擇區域設置JS文件。這就是要求重新加載的原因,並且不可能進行動態更改。 –

回答

6

您可以使用Cookie來讀/寫你的語言環境信息,而不是meta標籤或網址。

在你.gwt.xml文件

<set-configuration-property name="locale.cookie" 
    value="GWT_LOCALE" /> 

在你的Java代碼來讀取區域信息

final String cookieName = LocaleInfo.getLocaleCookieName(); 
String cookie = Cookies.getCookie(cookieName); 

在你的java代碼編寫的語言環境信息

private void setLocaleCookie(String locale) 
{ 
    final String cookieName = LocaleInfo.getLocaleCookieName(); 
    if (cookieName != null) 
    { 
     Date expires = new Date(); 
     expires.setYear(expires.getYear() + 1); 
     Cookies.setCookie(cookieName, locale, expires); 
    } 
    if (!control) 
    { 
     com.google.gwt.user.client.Window.Location.reload(); 
    } 
} 

還參考

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

2)http://learninggwt.blogspot.in/2011/07/gwt-internationalization-and-cookies.html

+0

實際上,在調用onModuleLoad()之前,GWT會讀取「locale.cookie」屬性。 cookie將被查找並加載(如果存在的話) - 因此應用程序將在加載時進行本地化,無需其他操作。 –

相關問題