2010-01-10 13 views
7

título es bastante claro.Sitio web que reconoce la ubicación del usuario/IP y cambia lang. basado en ese

Mis sitios web constan de versiones en inglés y en español. Puede ir al sitio principal, que está en español, haciendo clic en http://www.chrishonn.com y a la versión traducida, que está en inglés, en http://en.chrishonn.com. En el índice de cada página hay un enlace (en la parte inferior) que permite al usuario pasar de un sitio a otro.

Sin embargo, me preguntaba cómo grandes sitios como Google, Yahoo !, y otros sitios web de marcas reconocen la ubicación geográfica/IP del usuario para que, dependiendo de eso, el idioma del sitio esté adaptado (es decir, desde China y visita www.google.com, se le redirigirá a www.google.cn).


he indicado en cada página de mi sitio web de la lengua:

<meta http-equiv="content-language" content="en"> 

Ese ejemplo es, por supuesto, de una de las http://en.chrishonn.com sitios, que están en Inglés.

Espero que alguien pueda echarme una mano. Gracias (si me perdí algo, por favor avíseme).

+3

Si elige ofrecer diferentes idiomas según la ubicación geográfica, considere ofrecer una opción para anular la mejor estimación de la ubicación geográfica. Parece común para las personas en países multilingües -Holland y Suiza nombrar solo dos- que la gente prefiera otro idioma que el idioma oficial de su país. –

+0

En cualquier caso, hay un enlace para cambiar entre inglés y español. – Hobhouse

+0

O personas que visitan su sitio desde un país diferente en vacaciones y quieren leerlo en su idioma nativo. –

Respuesta

10

En cuanto a Google, su ubicación se determina desde su dirección IP. Una solicitud a google.com desde fuera de EE. UU. Devuelve un HTTP/1.1 302 Found que lo redirecciona al dominio específico de su país.

As also discussed on another post, este tipo de redirecciones pueden hacer que el SEO sea complicado y complicado. Sugiero leer el artículo de Matt Cutt (un ingeniero de software de Google) sobre cómo maneja Google 302 Redirect: SEO advice: discussing 302 redirects.

Diferentes motores de búsqueda manejan la redirección 302 de una manera diferente. Con 302 redireccionamientos, puede arriesgarse a que su dominio original sea ignorado por los motores de búsqueda.


Si desea determinar la ubicación de los usuarios de su dirección IP, hay muchos servicios off-the-shelf que básicamente Mapa mayoría de rangos de IPs correspondientes a los países. Es posible que desee comprobar:


Otra técnica popular es analizar la cabecera HTTP Accept-Language, que contiene información sobre las preferencias de idioma del usuario. Los navegadores convencionales permiten que estas preferencias de idioma sean modificadas por el usuario. Usted puede leer más sobre esta técnica a partir de:


+0

, creo que solo está copiando y pegando las respuestas de otras preguntas en SO (¡incluso las suyas propias!). – dusoft

+1

Bien hecho para notar :) Sí, copié una parte de una respuesta que di a otra pregunta sobre un tema similar. –

+0

Edité la publicación con la referencia. En caso de que alguien más sienta el deja-vu :) –

1

algún sitio web de uso IP basada en dirección de ubicación geográfica, algunos nos Acepta el encabezado de la lengua (puede ser fijado en el navegador).De todos modos, desde el punto de vista de la usabilidad, siempre permita que las personas cambien el idioma y nunca muestren contenido diferente en la misma IP (a Google y otros motores de búsqueda no les gusta y sería malo desde el punto de vista de SEO).

1

Estos sitios a menudo usan herramientas que genéricamente se denominan "software de geolocalización".

Uno de los paquetes más populares es la base de datos gratuita GeoLite Country ofrecida por MaxMind. Esto se integrará en su aplicación y proporcionará búsquedas de IP a país. Con Apache, tendrá algunas variables de entorno establecidas llamadas GEOIP_COUNTRY_CODE y GEOIP_COUNTRY_NAME.

Toda su aplicación tiene que hacer después de que decida dónde debe estar su usuario o qué configuraciones deberían tener de forma predeterminada en función del país, y redirigir o producir adecuadamente.

+0

Muchas gracias. Estoy descargando GeoLite Country ahora mismo. También verificará cómo habilitarlo, ya que soy bastante nuevo en este tipo de bases de datos. – Hobhouse

12

En lugar de detectar la ubicación de la dirección IP (a menudo no confiable debido a NAT y proxying), puede verificar el idioma predeterminado en el que está configurado el navegador. Existen complementos de JQuery para admitir esto, como http://keith-wood.name/localisation.html, o usan el código del lado del servidor para leer el encabezado de solicitud HTTP "HTTP_ACCEPT_LANGUAGE" para determinar si desea mostrar el sitio ES o EN.

+4

+1 para Accept-Language, que es ** una forma ** mucho más adecuada para elegir un idioma que la geolocalización (incluso si la geolocalización fuera 100% precisa). Sin embargo, solo debe hacerse en el lado del servidor. Aceptar idioma no está disponible en el lado del cliente; en su lugar solo obtienes 'navegador. [usuario] Idioma'. Sin embargo, esta configuración tiene que ver con el lenguaje de instalación que, a diferencia de Accept-Language, no es fácilmente configurable por el usuario. En consecuencia, nunca debe usarse, y este complemento que lo usa. – bobince

+0

Hubiera hecho esto, de hecho: por su simplicidad y hubiera tomado menos tiempo. Sin embargo, muchas personas (cuenten conmigo) usan otro idioma en nuestro (s) navegador (es)/sistema operativo (s) que el idioma que realmente hablamos, o el idioma oficial del país. – Hobhouse

+3

@crozer: ¿no debería interesarle más el idioma que solicita el usuario para buscar datos en lugar de su ubicación? Creo que el encabezado 'Aceptar 'es el más indicativo de los deseos del usuario. –

0

Puede hacer una solicitud GET a esta URL: https://api.teletext.io/api/v1/geo-ip y le responderá con información de algunos países en formato JSON. Ver https://teletext.io/help/geo-location-service para el uso.

Si desea implementarlo usted mismo: configuré esto utilizando AWS Cloudfront, Cloudfront agrega un encabezado (Cloudfront-Viewer-Country) a su solicitud antes de enviarla al servidor de origen que puede usar. Asegúrese de incluir en la lista blanca el encabezado en su distribución de Cloudfront.

0

He creado la distribución en la nube y White ha enumerado el encabezado CloudFront-Viewer-Country. Pero cuando accedí al objeto usando esta distribución, no lo vi en el encabezado de la solicitud.

+0

Advertencia: no es una respuesta para el problema – darkomen

Cuestiones relacionadas