¿Cómo acceder al valor "local" (de una aplicación de internacionalización) en el lado del servidor en GWT?

StackOverflow https://stackoverflow.com//questions/25009115

  •  20-12-2019
  •  | 
  •  

Pregunta

Ok, estoy desarrollando una aplicación que admite la internacionalización.estoy usando Static String Internationalization método para mi aplicación.

Digamos que mi aplicación puede tener una versión en inglés y alemán, así que -1, creé MyMessages.java que tiene todos los textos de los mensajes escritos en inglés.Luego creé un MyMessages_ge que es casi lo mismo que MyMessages.java excepto que el texto escrito en alemán

-2do, en MyProject.html tengo <meta http-equiv="content-type" content="text/html; charset=UTF-8"> para asegurarse de que sea compatible con todos los idiomas

-3ro, en MyProject.gwt.xml Tengo <extend-property name="locale" values="ge"/>

Ahora ejecuto mi aplicación en eclipse http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge Y muestra todo el texto en alemán como esperaba.

Sin embargo, necesito saber que mi aplicación es alemana. At Server Side.Eso significa que siempre que mi GWT Gui esté en la versión alemana, mi servidor lo sabrá. languageCode=1 Si está en inglés, el servidor usará el idioma predeterminado. languageCode=0

Aquí esta lo que hice.En HeaderPresenter.java

@Override
public void prepareFromRequest(PlaceRequest request){
    super.prepareFromRequest(request);
    String locale=request.getParameter("locale", "");
    setLanguage(locale); // servercall back here
}

Entonces, cuando mi aplicación se ejecute por primera vez, debería permitirle al servidor saber qué idioma está usando la aplicación Gwt.

@Override
public SetLanguageResult execute(SetLanguage action, ExecutionContext context)
        throws ActionException {
    String locale=action.getLocale();
    if("ge".equals(locale)){
        Data.languageType=1;
    }
    return null;
}

Sin embargo, no parece funcionar cuando voy a orden de orden, la URL será http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge#!orderPage no en la forma http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997#!orderPage;locale=ge es por eso que el servidor no pudo capturar el locale valor.

Creo que entendí mal algo aquí.Estoy bastante confuso.

Entonces, ¿cómo acceder al valor "local" (de una aplicación de internacionalización) en el lado del servidor en GWT?

¿Fue útil?

Solución

Hay una clase de utilidad para manejar la información local en el SDK de GWT.No es necesario analizar los parámetros de URL usted mismo.Mira esto LocaleInfo.getCurrentLocale() luego usa el getNombreLocal() método para obtener el código real como una cadena.

No entiendo muy bien cómo se almacena la información local en el lado del servidor.Tenga en cuenta que los servlets se comparten entre usuarios, debe adjuntar el local a la sesión o pasarlo con cada llamada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top