i18n browser gwt

browser - i18n javascript



¿Por qué GWT ignora la configuración regional del navegador? (6)

Si coloca una lista de idiomas disponibles en su archivo * .gwt.xml, cambiará de manera predeterminada al primer idioma de la lista.

<!-- Slovenian in Slovenia --> <extend-property name="locale" values="sl"/> <!-- English language, independent of country --> <extend-property name="locale" values="en"/>

GWT obtiene la configuración regional de la propiedad de configuración regional o de la cadena de consulta de configuración regional. Si no se especifica ninguno, usa la configuración regional "predeterminada" (es decir, en_US ).

¿Por qué no lo obtiene de la configuración del navegador?

Parece que la única solución para esto es reemplazar su página de inicio de html estática con algo así como un JSP que lea las configuraciones regionales del navegador y configure la configuración regional o las redirecciones utilizando la cadena de consulta. Tiene que haber una mejor solución que esta o simplemente codificar una configuración regional, ¿no?


También puedes poner este interruptor en tu * .gwt.xml

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

esto agregará la selección del idioma según el idioma seleccionado en el navegador. También puede controlar el orden de búsqueda de la configuración regional configurando

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

Pero ten en cuenta que en IE esto no funciona: debes desarrollar una selección de idioma del lado del servidor basada en el encabezado ''Accept-Language'' enviado por el IE.


Esto funcionó para mí, espero que también funcione para ti.

Mi problema es que no he declarado ningún valor de configuración regional en el descriptor del módulo .gwt.xml. En ese caso, solo se usa la configuración regional predeterminada. GWT lo hace de esa manera porque cualquier configuración regional compatible diferente significa una nueva iteración / permutación de compilación. Por lo tanto, solo se utilizan las configuraciones regionales declaradas.

Aquí tienes un ejemplo:

<!-- 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" />

La primera y la segunda líneas establecen las configuraciones disponibles / compatibles (inglés de EE. UU. Y español sin país específico en mi ejemplo). La tercera línea establece la configuración regional predeterminada en caso de que no se detecte ninguna (esta declaración predeterminada debe establecerse después de declarar el valor predeterminado en una línea de extend-property ). La cuarta línea habilita la detección de la configuración regional por medio de la cabecera HTTP-Accept-Idioma enviado por el navegador (probablemente esté habilitado por defecto y no sea necesario configurarlo). La última línea establece el orden en que los diferentes mecanismos de detección intentan detectar la configuración regional:

  1. Como un parámetro en la consulta URL
  2. De las cookies
  3. Como un valor meta en la página HTML
  4. Desde el encabezado HTTP enviado por el navegador

Puede usar una cookie para guardar y enviar este valor, pero para eso debe agregar primero su * .gwt.xml

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

Tenga en cuenta que " queryparam " tiene la mayor prioridad aquí, que permite establecer una nueva configuración regional utilizando la consulta http e ignorar el valor en la cookie.


Si su página de entrada es un JSP, puede inspeccionar el encabezado Accept-Language la solicitud para establecer dinámicamente la configuración regional.


agrega esta entrada en tu archivo * .gwt.xml para ver el efecto.

Por favor, consulte la siguiente línea para obtener más información.

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