Come accedere al valore "Locale" (di un'app di internazionalizzazione) nel lato server in GWT?
Domanda
OK, sto sviluppando un'app che supporti l'internazionalizzazione. Sto usando il metodo Static String Internationalization
per la mia app.
Lascia dire che la mia app può avere la versione inglese e tedesca, quindi
-1st, ho creato MyMessages.java
che ha tutti i messaggi di messaggi scritti in inglese. Quindi ho creato un MyMessages_ge
che è quasi lo stesso di MyMessages.java
, tranne che il testo scritto in tedesco
-2nd, in MyProject.html
ho <meta http-equiv="content-type" content="text/html; charset=UTF-8">
per assicurarti che supporterà tutte le lingue
-3rd, in MyProject.gwt.xml
ho <extend-property name="locale" values="ge"/>
Ora eseguo la mia app in Eclipse http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge
e mostra tutto il testo tedesco come mi aspettavo.
Tuttavia, ho bisogno di sapere che la mia app è At Server Side
German. Ciò significa che ogni volta che la mia GWT GUI in versione tedesca, il mio server saprà che languageCode=1
se è in inglese, quindi il server utilizzerà la lingua predefinita languageCode=0
Ecco cosa ho fatto. A HeaderPresenter.java
@Override
public void prepareFromRequest(PlaceRequest request){
super.prepareFromRequest(request);
String locale=request.getParameter("locale", "");
setLanguage(locale); // servercall back here
}
.
Quindi quando la mia app ha eseguito la prima volta che dovrebbe consentire al server di sapere quale lingua l'app GWT sta usando
@Override
public SetLanguageResult execute(SetLanguage action, ExecutionContext context)
throws ActionException {
String locale=action.getLocale();
if("ge".equals(locale)){
Data.languageType=1;
}
return null;
}
.
Tuttavia, non sembra funzionare
Quando vado a OrderPage L'URL sarà http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge#!orderPage
non nel modulo http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997#!orderPage;locale=ge
è il motivo per cui il server non può catturare il valore locale
.
Penso di aver frainteso qualcosa qui. Sono abbastanza confuso.
Quindi come accedere al valore "Locale" (di un'app di internazionalizzazione) nel lato server in GWT?
Soluzione
C'è una classe di utilità per gestire le informazioni sulla locale nell'SDK GWT.Non è necessario analizzare i parametri URL da solo.Dai un'occhiata a localeinfo.getcurrentlocale () Quindi utilizzare il metodo GetLoCalename () per ottenere il codice effettivo come una stringa.
Non ho capito il modo in cui memorizzi le informazioni sulla posizione locale sul lato server?Mente che i servlet sono condivisi tra gli utenti, devi allegare il locale alla sessione o passarlo con ogni chiamata.