5 puntos por GN⁺ 2025-05-20 | 1 comentarios | Compartir por WhatsApp
  • Si un servicio web decide el idioma mostrado con geolocalización por IP, usuarios con VPN, de viaje, viviendo en el extranjero o en países multilingües pueden ver un idioma que no desean
  • País e idioma no tienen una relación 1:1: Belgium usa 3 idiomas, Switzerland 4, India 22 idiomas oficiales, y Canada es oficialmente bilingüe
  • El navegador envía el encabezado Accept-Language según la configuración del SO o del navegador; un ejemplo es Accept-Language: en-US,en;q=0.9,de;q=0.8
  • Una mejor implementación es priorizar Accept-Language y recordar el idioma que el usuario cambió manualmente con cookies o parámetros en la URL
  • GeoIP debería usarse para áreas donde la ubicación sí importa, como moneda, envíos o requisitos legales, y no para la selección de idioma, para distorsionar menos la preferencia del usuario

La geolocalización por IP no indica la preferencia de idioma

  • Una dirección IP solo muestra desde dónde llegó la solicitud; no dice qué idioma quiere o entiende el usuario
  • Con VPN, viajes, residencia en el extranjero o países con varios idiomas oficiales, la selección de idioma basada en IP falla con facilidad
  • País e idioma no se corresponden de forma simple
    • Belgium: 3 idiomas oficiales
    • Switzerland: 4 idiomas oficiales
    • India: 22 idiomas oficiales
    • Canada: oficialmente bilingüe y, de manera no oficial, un entorno multilingüe
  • A los usuarios de VPN se les puede mostrar un idioma aleatorio cada vez que cambia su IP, y hay casos en que al entrar a Google aparece un idioma que no entienden
  • Si se prioriza una base de datos de IP incorrecta por encima de la información de idioma del navegador, el usuario termina recibiendo un idioma de interfaz que no quiere

Se debe priorizar el Accept-Language del navegador

  • Todos los navegadores envían el encabezado Accept-Language con los idiomas preferidos del usuario
  • Este valor se basa en la configuración del SO o del navegador, no en la ubicación ni en la IP
  • Ejemplo:
    • Accept-Language: en-US,en;q=0.9,de;q=0.8
  • Un flujo de manejo razonable es simple
    • Leer Accept-Language
    • Respetar ese valor
    • Permitir que el usuario cambie el idioma si lo necesita
    • Recordar esa elección en cookies o parámetros de la URL
  • Incluso si se necesita GeoIP, lo adecuado es limitarlo a áreas como moneda, envíos o requisitos legales, no al idioma

1 comentarios

 
GN⁺ 2025-05-20
Opiniones de Hacker News
  • Que no se respete Accept-Language es realmente irritante.
    Peor aún, muchos sitios multilingües traducen incluso el botón para cambiar de idioma y la lista de idiomas al idioma actual, un diseño tonto que arruina el propósito mismo.
    Wikipedia lo hace bien. El botón para cambiar de idioma es claro con un ícono multilingüe universal, la lista de idiomas muestra el nombre de cada idioma en ese mismo idioma, por lo general los deja en orden alfabético y sube arriba los candidatos más probables.
    Por ejemplo, una página de Wikipedia en inglés muestra idiomas recomendados como Deutsch, Français, Nederlands. Si uno asume el idioma a la fuerza, todos terminan cansándose; basta con hacerlo como Wikipedia.

    • También da rabia cuando entras a la página que querías desde un motor de búsqueda, aparece un modal de selección de país y, en cuanto eliges el país, te manda a la página principal del sitio de esa región.
      Algunos tienen botón para cerrar, pero muchos no, y eso lo vuelve más molesto.
    • Lo de “orden alfabético” es discutible. Hoy vi la lista de idiomas en el artículo destacado de la Wikipedia en inglés y aparecían 中文 e Italiano como recomendaciones; el resto estaba agrupado por regiones geográficas y no parecía estar exactamente en orden alfabético.
      En la parte de Europa parece haber un grupo de alfabetos cirílicos, pero Қазақша aparece después de Українська; no es correcto ni según el kazajo, y también puede ser inesperado para alguien que no conoce la Қ. Los idiomas chinos tampoco parecen estar ordenados por número de trazos, y el coreano está debajo.
      La localización de Wikipedia es excelente, pero esto es un pequeño agregado sobre lo ambiguo que puede ser el “orden alfabético” cuando los nombres de los idiomas se muestran en su propio idioma.
    • Wikipedia también recuerda la selección anterior y la sube arriba. Eso sí es experiencia de usuario: algo que realmente ayuda y no fastidia.
    • Como ejemplo perfecto de lo malo, una vez la app de YouTube en iPhone cambió de repente a amárico.
      El documento de soporte de Google https://support.google.com/youtube/answer/87604 explicaba en inglés qué botones había que tocar, pero yo no sabía amárico y en ese momento ni siquiera sabía qué idioma era. La traducción del iPhone tampoco reconocía ese idioma etíope.
      Fue una situación incómoda que se habría evitado fácilmente con un solo ícono multilingüe universal.
    • Este problema tiene dos niveles. Si aparece otro idioma europeo, normalmente uno puede buscar más o menos la palabra equivalente a “English” y cambiarlo, así que no es tan grave.
      Pero si aparece un sistema de escritura desconocido, como el bengalí, ahí sí se vuelve un problema.
      Por eso, en todos los menús de selección de idioma puede ser buena idea incluir inglés y chino sin localizar, como vía de escape. Casi todos los usuarios web podrían reconocerlos lo suficiente como para tantear el menú y encontrar su idioma real.
  • También odio la “función” de YouTube que traduce automáticamente los títulos de los videos al idioma configurado. Puedo entender inglés, no necesito esas traducciones automáticas y son realmente molestas.

    • Esto es mucho peor que simplemente “entiendo inglés”.
      Si no sé el idioma, probablemente ese video no sea para mí. Los videos dirigidos a una audiencia internacional casi siempre están en inglés, o al menos el creador ya los tradujo por su cuenta.
      Los títulos son frases cortas y les falta contexto para traducir bien. Una vez vi en portugués un título como Vamos assistir uma conexão com o passado, que traducido literalmente sería “veamos una conexión con el pasado”; tuve que hacer una traducción inversa en mi cabeza para darme cuenta de que el título original era Let's play A Link to the Past.
      El material en línea también sirve para practicar un segundo idioma, así que preferiría que no subestimaran mi capacidad. Como mínimo, déjenme leer el original; si lo necesito, puedo usar Google Translate o un diccionario.
      Admito que esta función amplía el acceso al contenido en línea, pero si empeora la experiencia, al menos deberían permitir desactivarla.
    • Soy alemán, pero tengo la computadora configurada en inglés, y a veces YouTube traduce automáticamente videos o anuncios en alemán y me pone frases muy raras con voces de máquina poco naturales.
      Cosas como Lidl is worth it, ja!.
    • No solo los títulos: las pistas de audio también son un problema.
      Varios YouTubers que veo seguido están ampliando idiomas con pistas de audio traducidas hechas por fans, y a veces el inglés es una de ellas. Cada vez que veo esos videos, los juegos de palabras o significados ocultos del idioma original se pierden en la traducción, así que tengo que cambiar manualmente al idioma original.
      Como a YouTube no le gustan Firefox ni las extensiones relacionadas con YouTube, muchas veces el video empieza antes de que se carguen todos los controles, así que incluso tengo que rebobinar después de cambiar la pista de idioma.
      En otra respuesta enlazaron una extensión que ayuda, así que pienso probarla, pero molesta que en la configuración de YouTube no exista un simple interruptor de “usar siempre el idioma original”. Si quiero audio traducido, puedo activarlo yo, y como manejo varios idiomas hasta cierto punto, eso rara vez aplica al contenido que veo.
      Si fuera para dificultar el bloqueo de anuncios o para empujar publicidad, al menos lo entendería, pero esto es simplemente una “comodidad” mal implementada. Aun así, seguro algún PM recibió felicitaciones.
    • Parece que el algoritmo de YouTube recompensa a quienes usan esta función y aumentan la “accesibilidad del contenido”.
      Pero si me muestran un título en noruego mal traducido por máquina en lugar de un título en inglés que puedo leer, por experiencia eso es una señal de que el canal es un canal de baja calidad que persigue al algoritmo, así que termino pulsando “No recomendar este canal”.
    • Ahora los resultados de Reddit en Google y Kagi también aparecen traducidos, así que uno cree haber encontrado una respuesta relevante en su idioma, pero en realidad resulta ser una traducción automática de una publicación en inglés.
  • No me gusta este diseño porque parte de la suposición implícita de que “todas las personas entienden un solo idioma”
    Puedo leer tu idioma cómodamente y, por lo general, prefiero el original a una mala localización. Por eso, si intentas adivinar mi idioma preferido con base en la IP, casi seguro te vas a equivocar
    Ya estoy indicando qué idiomas puedo usar mediante la configuración de idioma del navegador; no hay razón para suponer que el usuario no es lo bastante inteligente como para configurarla bien
    El doblaje con IA activado por defecto en YouTube es aún peor. En más o menos la mitad de los videos que veo, tengo que abrirlos, entrar a la configuración, desactivar el doblaje con IA, rebobinar hasta el inicio y volver a empezar. No toma mucho tiempo, pero es tremendamente molesto

    • El doblaje con IA de YouTube es realmente horrible. Me tomó 5 minutos darme cuenta de que el audio que estaba escuchando no era un anuncio raro en otra pestaña, sino que venía del propio video
      También odio que los títulos aparezcan traducidos. Es muy raro ver un video en el que se habla en inglés pero el título está en otro idioma
    • Aunque en Google tengo configurado el español como uno de los idiomas que conozco, sigue traduciéndolo todo automáticamente al inglés
      No hablo español con fluidez, pero una buena forma de llegar a dominarlo es consumir contenido en el idioma original, y YouTube lo hace más difícil
  • Lo más irritante es Google. Sabe quién soy, sabe que estoy viajando y sabe que mi preferencia de idioma es el inglés, pero en ciertas páginas todavía me muestra el idioma según mi ubicación
    Ya que permití que Google me rastree, me gustaría que lo usara no solo para anuncios, sino también para una buena experiencia de usuario

    • A los usuarios de catalán se les impone el español aunque no tengan el español asociado en ningún lado: ni en la cuenta de Google, ni en el idioma del sistema, ni en el idioma del navegador
      Aunque vivo en Estados Unidos, Google intenta darme resultados en español incluso en búsquedas relacionadas con el catalán. Por ejemplo, prefiere Wikipedia en español. El comportamiento del buscador ha subido y bajado con los años, pero nunca ha sido bueno
      Es un gran problema para mis hijos, que no entienden español, y también para las zonas catalanohablantes que no están en España, incluida Andorra
      Gemini marcaba fácilmente el contenido en catalán como inseguro y bloqueaba la continuación de la conversación. Pasaba incluso con prompts como “resúmeme este artículo”; quizá haya mejorado recientemente
      Antes, Google era un ejemplo de gran empresa responsable y sensible a la diversidad del mundo. Aún valoro el esfuerzo de muchos equipos, pero parece claro que ya no es una prioridad
    • Google es, de forma extraña, el peor en este problema
      Últimamente parece haber decidido que traducir automáticamente al inglés las reseñas de Maps en el idioma local está mal. Traduce al inglés todos los demás idiomas, pero como vivo en esa zona, asume que también sé el idioma local y que no necesito inglés
      Lo mismo pasa con los resultados de búsqueda. Como llevo mucho tiempo ahí, da por hecho que quiero la Wikipedia en el idioma local. Solo busco en el idioma local porque, para encontrar información local, tengo que hacerlo así, pero lo interpreta como una señal de preferencia
      Esto aplica a toda la tendencia de que “el software debe adivinar inteligentemente todas las preferencias”. Cuesta entender por qué Google sigue haciéndolo cuando falla de forma tan consistente, salvo por una arrogancia corporativa equivocada
    • Una vez discutí este problema con un desarrollador de Google
      Me dijo que, por eficiencia, el renderizado del contenido tiene etapas, y que cuando se construye la estructura de la página principal todavía no se tiene la información del usuario. Pero incluso en esa etapa el encabezado Accept-Language debería estar disponible de inmediato, así que no me parece lógico
    • La peor experiencia fue llegar a un país nuevo y que Play Store no me mostrara apps locales, porque mi cuenta de Google estaba vinculada a mi país anterior
      Cambiar el país no era fácil, y tenía que renunciar al país anterior y a sus apps. Como suelo ir y venir, terminé comprando un segundo teléfono y creando una cuenta para el país nuevo
    • Google sabe que vivo en el Reino Unido y que hablo inglés, pero si inicio sesión en la TV de una habitación de hotel en España y veo videos de YouTube en inglés, me muestra anuncios en español
      Me da risa porque se siente como si siguiera haciéndolo para poder cobrarle al anunciante, aunque debería saber perfectamente que no los entiendo
  • Un principio mucho más importante es no traduzcas automáticamente el contenido al idioma del usuario
    Basta con mostrar el idioma en el que realmente existen los datos. Si el usuario quiere, es lo bastante inteligente como para pulsar el botón “Traducir” del navegador, y probablemente esa traducción sea mejor
    El inglés no es mi lengua materna ni mi segunda lengua, pero lo entiendo lo suficiente como para usarlo a diario en el trabajo. No quiero tener que hurgar entre un montón de basura traducida automáticamente para encontrar el botón que me permita leer la versión original en inglés
    Curiosamente, este problema ocurre sobre todo con el inglés. Los sitios en otros idiomas normalmente no hacen eso, y ese solo hecho ya es una señal suficiente de que a los visitantes extranjeros no les gusta
    Si vas a usar traducción automática en un sitio web, antes de publicar deberías hacer una traducción de ida y vuelta para todos los idiomas. Traduce, pega el resultado de nuevo y vuelve a traducirlo al idioma original; así verás más o menos qué era lo que ibas a publicar. Es mejor no hacerlo

    • Odio que Reddit traduzca automáticamente al francés. El estilo particular de cada usuario ya sería difícil o imposible de traducir bien incluso para una persona, y aun así lo traducen automáticamente
      Aunque no supiera inglés, no creo que valiera la pena leer ese contenido traducido
      La función para cambiar el idioma o ver el original es difícil de encontrar, y varía según si usas la app, la web móvil o la web de escritorio
      Que se esfuercen tanto en hacerte descargar la app es otro problema aparte
    • La traducción automática se volvió lo bastante buena desde hace algunos años como para que ni siquiera los hablantes nativos la noten
  • La suposición de que “todos los navegadores envían el encabezado Accept-Language, indican el idioma preferido según la configuración del sistema operativo o del navegador del usuario, y el usuario puede cambiarlo si quiere” también está rota.
    Para empezar, Accept-Language es una lista ordenada, pero las personas que usan varios idiomas a diario muchas veces no tienen un orden absoluto de preferencia, sino preferencias según el tema.
    Aunque un sitio de noticias en inglés tenga una versión traducida al francés, uno podría querer la versión en inglés aunque domine mejor el francés.
    Por eso el usuario termina indicando el idioma más práctico, no su preferencia real. Por ejemplo, los sitios locales que no están en inglés suelen hacer menos trucos que los sitios internacionales en inglés, así que si se configura el idioma solo en inglés, los primeros fuerzan la visualización en inglés y la mayoría de los demás sitios se ven poco afectados.
    En esos casos, incluso ayuda que un sitio francés ignore todas las preferencias y, por defecto, empuje la versión en francés.
    Al final, lo que quisiera es que los operadores de sitios no intenten hacerse los inteligentes y ofrezcan una interfaz muy clara y rápida para cambiar a otra versión. Wikipedia lo hace bastante bien.

    • La solución no es desechar el útil encabezado Accept-Language, sino no ofrecer traducciones a medio hacer.
      Si se trata de un sitio web multilingüe, solo debería ofrecer conjuntos de traducciones completos y verificados. Traducir la UI y el contenido propio a algunos idiomas puede tener sentido para una empresa según su público objetivo, pero hay que mantener todo eso y mantenerlo sincronizado.
      El contenido de los usuarios no debería tocarse. No debería traducirse automáticamente, salvo que sea como función de ayuda bajo un botón del estilo “Se detectó español. Haz clic para ver una traducción automática al inglés”, y de hecho incluso eso sería mejor dejárselo al navegador.
      Basta con elegir el idioma mediante Accept-Language y ofrecer además una forma de cambiarlo.
      En realidad, Wikipedia no ofrece traducciones del mismo contenido de esa manera. Cada idioma es una instancia separada y, salvo por los textos de la UI de MediaWiki, no son traducciones del mismo artículo, sino artículos distintos en otros idiomas con partes que se solapan. La versión en neerlandés de la entrada Language no afirma ser una traducción neerlandesa del mismo texto, y está deliberadamente en un subdominio y una ruta distintos.
    • Técnicamente, Accept-Language permite asignar a cada idioma un “valor de calidad” o peso: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/...
      Creo que hay mucho margen de mejora tanto del lado de los navegadores como de los sitios web.
      Los sitios web deberían permitir que el usuario sobrescriba el idioma solicitado por el navegador. Los navegadores también deberían permitir elegir por sitio opciones como “valor predeterminado del sitio”, “solicitar el idioma predeterminado del sistema”, “solicitar inglés”, “solicitar chino”, “solicitar español”, etc.
      La mejor forma sería que el sitio exponga la lista de idiomas que admite. Por ejemplo, podría estar en manifest.json: https://developer.mozilla.org/en-US/docs/Web/Progressive_web... El formato podría ser algo como Map>.
      La selección de idioma debería hacerse del lado del cliente, no del servidor.
    • Accept-Language no es una lista ordenada, sino una lista parcialmente ordenada.
      Si quieres la versión en inglés aunque un sitio de noticias en inglés tenga una traducción al francés, basta con poner ambos idiomas con la misma prioridad.
    • No sé de dónde sale la suposición de que los usuarios indican el idioma más práctico y no su preferencia real.
      Viendo la realidad de que muchos sitios, quizá casi todos, no respetan el encabezado Accept-Language, es difícil creer que los usuarios estén haciendo ese cálculo de teoría de juegos en su cabeza al elegir esta configuración.
  • Una vez me tocó un proyecto para implementar accesibilidad y soporte multilingüe en un sitio vinculado al gobierno.
    Usamos Accept-Language para elegir el idioma predeterminado entre los idiomas soportados, pero el PM revirtió esa decisión y forzó el inglés como predeterminado.
    El auditor de accesibilidad marcó “uso de Accept-Language” como un punto rojo en el informe de auditoría y, al enterarse de que al principio se había implementado así y luego se había revertido, reprendió duramente a la empresa.
    Gracias a eso y a decisiones tontas similares, terminamos trabajando varias semanas más en el contrato.

  • Ya que parece un espacio para desahogarse sobre quejas de idioma, también tengo una queja sobre Apple TV.
    Tengo familia que solo habla japonés y mi cuenta de Apple es de Finlandia. Intentamos ver juntos The Martian, pero aunque claramente existía una pista de audio con doblaje al japonés, no se podía seleccionar.
    Directamente no muestra opciones que no estén relacionadas con el país de la cuenta, y para saltarse eso hay que cambiar toda la cuenta de Apple a otro país.
    Pero si tienes una suscripción activa de Apple TV, tampoco puedes hacer ese cambio. En consecuencia, mi familia no pudo ver Apple TV junta.

    • Probablemente sea un problema de licencias. Puede que el doblaje japonés no tenga permiso para reproducirse en Finlandia. En ese caso, la estupidez viene de la ley de copyright o de los abogados.
    • Netflix también tenía algo parecido de raro en Finlandia.
      Si no recuerdo mal, hay una configuración de idioma de la cuenta, y para ver Kim's Convenience había que configurarla en inglés. No hace falta VPN ni fingir estar en otro país, pero si no configuras el idioma correcto, oculta el contenido.
      Pasaba incluso cuando uno veía el contenido con subtítulos en inglés desde la UI en finlandés.
  • Cuando estás en el extranjero es realmente absurdo, y aun estando en tu país de origen, en casos en los que la versión localizada no es equivalente, como con la documentación de programación, resulta molesto.
    Incluso en el caso ideal, es muy probable que prefieras el original en inglés, y en la práctica muchas veces es traducción automática, lo que lo vuelve mucho peor.
    Otra cosa extremadamente irritante que se ve cada vez más últimamente es que en los resultados de búsqueda aparezcan versiones traducidas automáticamente del contenido. Reddit ahora lo hace, y es terrible.
    Una de las principales razones para usar términos de búsqueda que no están en inglés es obtener resultados que no estén en inglés. Por ejemplo, cuando buscas información sobre temas que no aplican a todo el mundo.

    • Casi puedo escuchar al equipo de producto de Reddit imaginándose a sí mismos como usuarios monolingües y tarareando el himno de Estados Unidos mientras crean esta función.
      El resto del mundo puede entender bien varios idiomas.
    • Últimamente me he frustrado bastante con la documentación de Mongo.
      No he probado si se basa en la ubicación o en Accept-Language, pero su comportamiento realmente provoca enojo.
      Si hago una búsqueda web, aparece el resultado de la versión en inglés; al abrirlo, en cuanto se carga JavaScript cambia a PT-BR, y unos segundos después, cuando la página termina de cargar por completo, vuelve al inglés, dejando el slug /pt-br/ en la URL.
      Es demasiado evidente que la traducción no fue hecha ni revisada por una persona. Además, yo uso PT-PT, así que las diferencias con PT-BR lo hacen todavía más irritante.
  • Hace tiempo hice un pequeño sistema que parseaba Accept-Language, ponderaba las prioridades del usuario y elegía, entre lo que ofrecíamos, el idioma más cercano a su preferencia.
    Por ejemplo, si teníamos traducción al portugués de Brasil pero no al portugués de Portugal, a un usuario que pedía este último le ofrecíamos el primero, pero si había una coincidencia exacta con menor prioridad, usábamos esa.
    Técnicamente funcionaba bien, el código era limpio y además fue divertido hacerlo.
    Pero desde la perspectiva del usuario, la mayoría simplemente quería inglés, sin importar el encabezado Accept-Language. Se podía cambiar desde el pie de página, pero parece que no era lo bastante visible.
    Ahora simplemente preguntamos, y los usuarios están más satisfechos.

    • Si “preguntar” significa mostrar primero un muro de selección de idioma cada vez que visitas el sitio sin cookies, es un sufrimiento frecuente.
      Es difícil saber cómo quedarte en la página en la que hiciste clic. No queda claro si el botón “continue” aplica el valor preseleccionado o si solo cierra el popup y sigue mostrando la página actual.
      Si es lo primero, tampoco sé si el valor preseleccionado es el idioma de la página actual u otro idioma, y termino preguntándome si debo adivinar el locale actual, seleccionarlo y luego cerrar el popup. Incluso pienso si podría eliminar el modal con las herramientas de desarrollador y saltármelo. Hasta un pequeño botón de cerrar es un lujo en estos muros de idioma.
      95 de cada 100 veces estoy bien con el idioma en el que venía la página que abrí. Si necesito información de envíos regionales u opciones de pago de la versión alemana, buscaré el selector de idioma arriba a la derecha o en el pie de página.
      Creo que la web sería mucho más feliz si solo estuviera en uno de esos dos lugares y no aparecieran popups de JavaScript todo el tiempo.
    • Aun así, me gustaría dejar Accept-Language como valor predeterminado, pero lo clave es preguntarle al usuario.
      Me interesa el patrón para ofrecer opciones. Es bueno que este artículo rechace los íconos, pero no me gusta la forma en que reduce varias regiones a un solo idioma: https://usersnap.com/blog/design-language-switch/
    • Es probable que muchas personas tengan este valor configurado como valor predeterminado del OS, que simplemente se hayan acostumbrado y que ni siquiera sepan cómo cambiarlo.