2008-10-01 12 views
6

GWT pobiera ustawienia regionalne z właściwości locale lub ciągu zapytania ustawień regionalnych. Jeśli żadna nie jest określona, ​​używa ustawień narodowych "default" (tj. en_US).Dlaczego GWT ignoruje ustawienia narodowe przeglądarki?

Dlaczego nie jest on dostępny w ustawieniach przeglądarki?

Wydaje się, że jedynym rozwiązaniem jest zastąpienie statycznej strony startowej html czymś w rodzaju strony JSP, która odczytuje ustawienia narodowe przeglądarki i ustawia ustawienia regionalne lub przekierowania za pomocą ciągu zapytania. Musi być lepsze rozwiązanie niż to, albo po prostu trudne kodowanie locale, z pewnością?

Odpowiedz

3

Po umieszczeniu listy dostępnych języków w pliku * .gwt.xml domyślnie zostanie przełączony na pierwszy wymieniony język.

<!-- Slovenian in Slovenia --> 
<extend-property name="locale" values="sl"/> 

<!-- English language, independent of country --> 
<extend-property name="locale" values="en"/> 
+0

Miałem to miejsce, w którym miałem en_AU dodaną jako jedyną rozszerzoną właściwość i domyślnie ustawioną na "domyślną". Wymagano parametru zapytania dotyczącego ustawień regionalnych lub znacznika , aby pobrać go do en_AU. Nie mogę sobie wyobrazić, że tylko "en" byłoby inne, ale nawet gdyby to było, to by nie pomogło. Nie chcę en_US. – cletus

6

Można również umieścić ten przełącznik w swojej * .gwt.xml

<set-configuration-property name="locale.useragent" value="Y"/> 

Spowoduje to dodanie Wybór języka na podstawie wybranego języka w przeglądarce. Można również kontrolować kolejność wyszukiwania dla lokalizacji poprzez ustawienie

<set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent"/> 

Ale uwaga, że ​​w IE to nie działa - należy opracować po stronie serwera wybierać język w oparciu o nagłówku „Accept-Language” Wyślij przez IE.

0

Jeśli stroną wejściową jest strona JSP, można sprawdzić nagłówek żądania o numerze Accept-Language, aby dynamicznie ustawić ustawienia narodowe.

1

Można używać cookies, aby zapisać i wysłać tę wartość, ale do tego trzeba dodać w swoim * .gwt.xml pierwszej

<set-configuration-property name="locale.cookie" value="yourCookieName"/> 
<set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent"/> 

uwagą, że „queryparam” ma największy priorytet tutaj , który pozwala ustawić nowe ustawienia narodowe za pomocą zapytania http i zignorować wartość w pliku cookie.

0

dodaj ten wpis do swojego pliku * .gwt.xml, aby zobaczyć efekt!

Proszę sprawdzić poniższy wiersz, aby uzyskać więcej informacji!

<set-configuration-property name="locale.useragent" value="Y"/>

0

ten pracował dla mnie, mam nadzieję, że to działa również dla Ciebie.

Mój problem polegał na tym, że nie zadeklarowałem żadnej wartości lokalizacji w deskryptorze modułu .gwt.xml. W takim przypadku używane są tylko domyślne ustawienia narodowe. GWT robi tak, ponieważ każde inne obsługiwane locale oznacza nową iterację/permutację kompilacji. Dlatego używane są tylko deklarowane ustawienia narodowe.

Tutaj jesteś przykładem:

<!-- Locales --> 
<extend-property name="locale" values="en_US"/> 
<extend-property name="locale" values="es"/>  
<set-property-fallback name="locale" value="en_US"/> 
<set-configuration-property name="locale.useragent" value="Y" /> 
<set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent" /> 

Pierwsze i drugie linie ustawić dostępna/obsługiwanych lokalizacji (w języku angielskim i hiszpańskim od nas bez konkretnego kraju, w moim przykładzie). Trzecia linia ustawia domyślne ustawienia regionalne na wypadek, gdyby nikt nie został wykryty (ta domyślna deklaracja musi być ustawiona po zadeklarowaniu wartości domyślnej w linii extend-property). Czwarta linia umożliwia wykrywanie ustawień regionalnych za pomocą nagłówków HTTP Accept-Language wysłanych przez przeglądarkę (prawdopodobnie jest włączona domyślnie i nie jest wymagana do ustawienia).Końcowa linia ustawia kolejność, w której różne mechanizmy wykrywania spróbować wykryć regionalne:

  1. jako parametr w zapytaniu URL
  2. z plików cookie
  3. jako wartość meta na stronie HTML
  4. Z nagłówka HTTP wysłanego przez przeglądarkę