2012-09-19 19 views
22

Quiero detectar la configuración regional de un usuario (no su ubicación). El problema es que ninguno de los métodos parece confiable.¿Cuál es la mejor forma de detectar la configuración regional de un navegador en 2012?

encabezado Accept-Language

Pros

  1. Usted está destinado a obtener una lista de valores que pueden revelar la verdadera configuración regional si el navegador ha sido alterado por defecto a otra cosa.
  2. ¿Parece exacto en IE por defecto?
  3. Preciso en IE por defecto significa preciso en FF en Windows por defecto? (es decir, descarga la versión correcta de mozilla.org)
  4. ¿Igual que el n.º 3 para Opera en Windows?

Contras

  1. lado del servidor de arriba y de interferencia con el almacenamiento en caché (o un XHR adicional).
  2. El valor predeterminado es "en-us" en Chrome en todos los sistemas para inglés a menos que instale su diccionario local y lo arrastre hacia la parte superior.
  3. No enviado por Safari?
  4. Incorrecto de forma predeterminada en Safari y Chrome significa que http://mozilla.org y http://opera.com dirigen al usuario a las descargas incorrectas y también instalarán las versiones "en-us" de ellos mismos.

Conclusión

  • completamente fiable en OSX ya que cada navegador será un error por defecto. Sin embargo, debe ser preciso en IE y FF en Windows.

window.navigator.language/UserLanguage

Pros

  1. la mejor parte de esto es que es agradable solución del lado del cliente ligero.
  2. ¿Parece exacto en IE por defecto?
  3. ¿Parece exacto en FF en Windows de manera predeterminada?

Contras

  1. siempre "en-us" por defecto en Safari en todos los sistemas.
  2. El valor predeterminado es "en-us" en Chrome en todos los sistemas para inglés a menos que instale su diccionario local y lo arrastre hacia la parte superior.
  3. Always just "en" in Opera.

Conclusión

  • Aún más fiable que Accept-Language.

Geolocalización IP

Pros

  1. funciona independientemente de la configuración del navegador y el idioma del sistema operativo.

Contras

  1. funciona independientemente de la configuración del navegador y el idioma del sistema operativo.
  2. Todo lo habitual sobre el rendimiento, precios, manteniéndola hasta la fecha, etc.

Conclusión

  • Si esto funciona realmente depende de qué que está tratando de detectar la configuración regional del usuario . Este método le proporciona la localidad de un usuario que no es lo mismo que la configuración regional en un sentido i18n.

HTML5 Geolocation

Pros

  1. Generalmente tan precisa como geolocalización IP sin la sobrecarga del servidor.

Contras

  1. requiere que el usuario para permitir el acceso a su ubicación.
  2. Compatibilidad con el navegador (en realidad, el soporte parece bastante bueno).

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 configuración regional del usuario es más difícil que nunca, mientras que la detección de su ubicación física se ha convertido en más fácil. El gran delincuente es Safari, que al menos debería reflejar la configuración del sistema operativo por defecto en OSX, pero Chrome tampoco está dando ningún ejemplo. Incluso si las personas instalan su diccionario local en Chrome, realmente dudo que también lo arrastren al principio de la lista.

No puedo culpar a Mozilla y Opera por ser arrastrado por otros navegadores que informan incorrectamente a 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 Aceptar Idioma.

Pero, en realidad, ¿qué opciones quedan para detectar la configuración regional de un usuario ahora que IE ya no es dominante? ¿Queda algo?

+0

A partir de octubre de 2013, parece que Accept-Language Header funciona en Mobile Safari. – nthonygreen

Respuesta

1

Esto depende de lo que quiere decir con "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 por orden de preferencia). La forma de encontrar eso es preguntarle al usuario sobre ellos.

Naturalmente, solo debe preguntar acerca de las convenciones que realmente importan en el contexto, y puede considerar almacenar las preferencias, una vez expresadas por el usuario, en una cookie, almacenamiento HTML5, en una base de datos de usuario o en otro lugar.

Los navegadores generalmente permiten al usuario especificar una lista de idiomas preferidos, que se enviarán en los encabezados Accept-Language. Sin embargo, esto se relaciona solo con un aspecto del concepto de configuración regional, es desconocido para la mayoría de los usuarios y se sabe que tiene valores predeterminados incorrectos muy a menudo.

Cuestiones relacionadas