localization - query - sp_configure ''default language'' spanish
¿Cuál es la mejor manera de detectar la configuración regional de un usuario del navegador en 2012? (1)
Quiero detectar la configuración regional de un usuario (no su ubicación). El problema es que ninguno de los métodos parece confiable.
Aceptar encabezado de lenguaje
Pros
- Está destinado a obtener una lista de valores que puede revelar una verdadera configuración regional si el navegador se ha modificado para que se ajuste de forma predeterminada a otra cosa.
- Parece preciso en IE por defecto?
- ¿Precisa en IE de forma predeterminada, precisa en FF en Windows de forma predeterminada? (es decir, descarga la versión correcta de mozilla.org)
- ¿Lo mismo que # 3 para Opera en Windows?
Contras
- La sobrecarga del lado del servidor y la interferencia con el almacenamiento en caché (o un XHR adicional).
- La opción predeterminada es "en-us" en Chrome en todos los sistemas para inglés, a menos que instale su diccionario local y lo arrastre hasta la parte superior.
- ¿No es enviado por Safari?
- De forma predeterminada, incorrecto en Safari y Chrome significa que http://mozilla.org y http://opera.com dirigen al usuario a descargas incorrectas y también instalarán versiones "en-us" de sí mismos.
Conclusión
- Completamente no confiable en OSX ya que todos los navegadores estarán equivocados por defecto. Sin embargo, debe ser preciso en IE y FF en Windows.
window.navigator.language / userLanguage
Pros
- La mejor parte de esto es que es una solución agradable y ligera para el cliente.
- Parece preciso en IE por defecto?
- Parece preciso en FF en Windows por defecto?
Contras
- Siempre "en-us" por defecto en Safari en todos los sistemas.
- La opción predeterminada es "en-us" en Chrome en todos los sistemas para inglés, a menos que instale su diccionario local y lo arrastre hasta la parte superior.
- Siempre solo "en" en la ópera.
Conclusión
- Incluso más poco confiable que el lenguaje aceptado.
Geolocalización IP
Pros
- Funciona independientemente de la configuración del navegador y del idioma del sistema operativo.
Contras
- Funciona independientemente de la configuración del navegador y del idioma del sistema operativo.
- Todo lo habitual sobre el rendimiento, los precios, su actualización, etc.
Conclusión
- Si esto funciona realmente depende de por qué está intentando detectar la configuración regional de un usuario. Este método le proporciona una localidad de usuario que no es la misma que la configuración regional en un sentido i18n.
Geolocalización HTML5
Pros
- Generalmente tan preciso como la geolocalización de IP sin la sobrecarga del servidor.
Contras
- Requiere que el usuario le permita acceder a su ubicación.
- Soporte del navegador (en realidad el soporte se ve bastante bien).
Conclusión
- Tener que pedir permiso es generalmente un factor decisivo. También la misma conclusión que la geolocalización IP.
Resumen
Ahora parece que la detección de la ubicación de un usuario es más difícil que nunca, mientras que la detección de su ubicación física se ha vuelto más fácil. El gran agresor es Safari, que al menos debería reflejar la configuración del sistema operativo por defecto en OSX, pero Chrome tampoco está configurando ningún ejemplo. Incluso si la gente instala su diccionario local en Chrome, realmente dudo que también lo arrastren a la parte superior de la lista.
No puedo culpar a Mozilla y Opera por ser arrastrado por otros navegadores que informan erróneamente de sus páginas de descarga. Sin embargo, mitigaría el problema si cambiaran sus páginas de descarga para usar la geolocalización en lugar de presumiblemente mirar Accept-Language.
Pero realmente, ¿qué opciones quedan para detectar la configuración regional de un usuario ahora que IE ya no es dominante? ¿Queda algo?
Esto depende de lo que entiendas por "configuración regional del usuario". Las posibilidades enumeradas en la pregunta reflejan diferentes significados para "configuración regional del usuario". Ninguno de ellos refleja el significado adecuado en la localización moderna, es decir, el conjunto de convenciones culturales preferidas por el usuario (incluida una lista de idiomas humanos en orden de preferencia). La forma de encontrarlo es preguntarle al usuario.
Naturalmente, solo debe preguntar sobre las convenciones que realmente importan en el contexto, y puede considerar almacenar las preferencias, una vez expresadas por el usuario, en una cookie, en el almacenamiento HTML5, en una base de datos de usuarios o en otro lugar.
Los navegadores generalmente permiten que el usuario especifique una lista de idiomas preferidos, que se enviarán en Accept-Language
encabezados Accept-Language
. Sin embargo, esto se relaciona con un solo aspecto del concepto de entorno local, es desconocido para la mayoría de los usuarios y se sabe que tiene valores predeterminados incorrectos muy a menudo.