2008-08-19 26 views
9

En GWT, tengo que especificar qué configuraciones regionales son compatibles con mi aplicación. El código se compila en varios archivos, uno para cada localidad (además de otras versiones), pero tengo que darle a mis clientes una sola URL. Se supone que esta URL es una página que debe mostrarse de acuerdo con la configuración regional preferida por el navegador. No quiero tener un parámetro HTTP para la configuración regional, ya que quiero forzar la configuración regional preferida por el navegador. ¿Cómo se puede codificar esto en GWT?cómo obtener información de configuración regional en una aplicación GWT

¿Debo intentar esto utilizando las reglas de reescritura de apache? Lo tiré, pero creo que no puedo acceder fácilmente a dicho parámetro en una regla de reescritura.

Muchas gracias, Giuseppe

Respuesta

3

A menos que estoy leyendo la documentación de forma incorrecta no creo que usted tiene que hacer nada.

GWT and Locale

Al hacer que la configuración regional en una propiedad del cliente, el proceso de inicio de serie en gwt.js elige la versión apropiada localizada de una aplicación, que proporciona facilidad de uso (es más fácil de lo que parece!), Optimizado rendimiento y tamaño mínimo de script.

De la forma en que lo leo, siempre que su módulo le haya agregado todas las opciones de configuración regional, ¿debería ser automático?

+1

ese documento habla de la adición? Locale = foo a cada URL. Esta adición "manual" es mala, ya que el navegador ya envía una lista de las configuraciones regionales deseadas. –

5

GWT tiene un buen soporte para la internacionalización. Vea esto link. El comando i18nCreator puede ayudarlo a configurar la infraestructura de internacionalización de forma similar a la forma en que projectCreator y applicationCreator configuran la aplicación GWT.

Si tiene cadenas estáticas (es decir, Invalid Entry!) Que necesitan ser internacionalizadas, no necesita ningún indicador adicional al comando i18nCreator para crear los archivos de propiedades y la infraestructura.

Si tiene cadenas que necesitan aceptar parámetros (es decir, Hello {0}), debe pasar el indicador -createMessages al comando i18nCreator para crear los archivos de propiedades y la infraestructura.

Ahora su módulo debe incluir el módulo i18n en su MyApplication.gwt.xml:

<inherits name="com.google.gwt.i18n.I18N"/> 

Definir una interfaz Java en el mismo paquete que sus archivos de propiedades que se extiende constantes o mensajes y define métodos (nombre coincide con las entradas de propiedad) que devuelven cadena.

MyConstants.properties contiene:

errorMessage=Invalid Entry! 

MyConstants.java contiene:

import com.google.gwt.i18n.client.Constants; 

public interface myConstants extends Constants { 
    String errorMessage(); 
} 

Ahora para acceder a estas cadenas internacionalizadas de que la aplicación:

public class MyApplication implements EntryPoint { 
    private static final MyConstants constants = (MyConstants)GWT.create(MyConstants.class); 

    public void onModuleLoad() { 
     final Label errorMessage = new Label(constants.errorMessage); 
    } 
} 

GWT implementa la interfaz de usted automágicamente.

Puede recibir mensajes de forma similar.

Esperamos que esto pueda ayudarlo a comenzar.

13

Tuve el mismo problema que tú, pero como realmente necesito saber la configuración regional actual (estoy solicitando un segundo servidor para los datos que quiero que sean localizables) Encontré esta clase: com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale(). Eso debería darte lo que GWT usa actualmente.

+0

eppesuig Sé que ya tiene la respuesta, pero como sentí en esta página cuando estaba buscando una solución, dije que probablemente otras personas también caigan aquí. BR –

3

Marque esta com.google.gwt.i18n.client.LocaleInfo.getCurrentLocale()

2
<inherits name="com.google.gwt.i18n.I18N"/> 

<!-- Use browser-specified locale for i18n --> 
<set-configuration-property name="locale.useragent" value="Y"/> 

<!-- Specify locales your application support --> 
<extend-property name="locale" values="en"/> 
<extend-property name="locale" values="de_DE"/> 
<extend-property name="locale" values="ru_RU"/> 
Cuestiones relacionadas