5 puntos por GN⁺ 2025-05-20 | 1 comentarios | Compartir por WhatsApp
  • La configuración de idioma basada en IP es una función basada en una premisa equivocada
  • La dirección IP solo indica la ubicación, pero no refleja la preferencia lingüística real del usuario
  • El encabezado Accept-Language transmite con precisión la información sobre preferencias de idioma
  • El idioma de la UI debe configurarse con base en una señal confiable: el encabezado del navegador
  • El principio más importante es respetar la elección de idioma del usuario y su experiencia

Límites de la configuración de idioma inferida por IP

  • Seguir determinando el idioma de uso con geolocalización por IP (GeoIP) sigue siendo una suposición equivocada
  • La dirección IP solo proporciona información sobre la ubicación de la solicitud
  • No permite saber qué idioma prefiere o entiende realmente el usuario
  • Falla con frecuencia en situaciones como VPN, viajes al extranjero, residencia en otro país o países con múltiples idiomas oficiales
  • Este enfoque no es inteligente: provoca incomodidad y confusión

La brecha entre la cantidad de idiomas oficiales y la realidad

  • Los países y la información de IP no tienen una relación 1:1 con el idioma
    • Belgium tiene 3, Switzerland 4, India 22 y Canada oficialmente 2; en la práctica, todos son países multilingües
  • El usuario puede vivir en ese país, estar de visita o simplemente hacer que su tráfico pase por ahí por casualidad
  • Obligar a mostrar un solo idioma de UI basándose solo en la información del país es un error

Un ejemplo de mala ingeniería

  • Depender de datos erróneos es una forma perezosa de desarrollar
  • La excusa de “los sitios web grandes también lo hacen así” no es válida
  • Si no se puede manejar correctamente, es mejor no hacer nada

El valor del encabezado Accept-Language

  • Muchos usuarios sufren molestias porque, por ejemplo al usar VPN, se les fuerza un idioma nuevo
  • Todos los navegadores envían el encabezado Accept-Language
    • La preferencia de idioma se define según la configuración del sistema operativo o del navegador del usuario
    • Si el usuario quiere, puede configurar o cambiar este valor directamente
    • Ejemplo: Accept-Language: en-US,en;q=0.9,de;q=0.8
  • Este encabezado ofrece información precisa, gratuita y ya integrada, sin necesidad de licencias ni mantenimiento adicional

La forma correcta de manejar el idioma

  • Igual que la resolución de pantalla o el color, el idioma también debe respetar el entorno del usuario
  • Es común que se asigne un idioma absurdo: mostrar inglés a un angloparlante en Francia, neerlandés a un francófono en Bruselas, o chino a alguien que usa una VPN de Hong Kong
  • Esto genera quejas, abandono del servicio e intentos de encontrar una solución temporal tras navegar la UI
  • Estos errores ocurren porque se usa información de IP no confiable como base para decidir el idioma

Soluciones prácticas

  • Leer Accept-Language
  • Respetar ese valor
  • Permitir que el usuario cambie el idioma directamente si lo desea (la opción puede guardarse en una cookie o en un parámetro de URL)
  • Usar la información de GeoIP solo para moneda, envíos y requisitos legales, y nunca para el idioma

Conclusión

  • Si el software lo usan personas, no se debe adivinar la preferencia del usuario
  • Lo recomendable es implementarlo correctamente o, de plano, no ofrecer una función de selección de idioma

1 comentarios

 
GN⁺ 2025-05-20
Comentarios de Hacker News
  • Me parece un problema realmente molesto cuando los sitios web ignoran el encabezado Accept-Language. Los sitios multilingües a menudo incluso traducen el botón para cambiar de idioma o la lista de idiomas al idioma actual, lo que genera confusión; en este sentido, creo que Wikipedia es el modelo estándar a seguir. Wikipedia usa un ícono multilingüe claro, una lista que muestra el nombre de cada idioma en ese mismo idioma y, en la parte superior, muestra los idiomas recomendados. No se debería adivinar de antemano el idioma del usuario. Ayuda hacerlo como Wikipedia

    • Odio cuando entro a la página que quería desde un motor de búsqueda y de repente aparece un modal para elegir país, y al seleccionarlo me redirige a la página principal del sitio local. Algunos sitios tienen botón para cerrar (X), pero muchos ni eso, y es desesperante

    • La lista de idiomas de Wikipedia no parece estar necesariamente en "orden alfabético". Por ejemplo, a veces aparecen idiomas recomendados como "中文" e "Italiano", y el resto parece agruparse por criterios geográficos o de escritura. Aunque no sea un verdadero orden alfabético dentro de cada idioma, Wikipedia localiza bien la experiencia. El punto importante es que, cuando muestras los nombres de los idiomas en su propio idioma, la idea de un orden alfabético "correcto" se vuelve compleja

    • Wikipedia recuerda el idioma que el usuario eligió antes y lo muestra arriba de todo. Eso sí es una verdadera experiencia de usuario

    • Me pasó que la app de YouTube cambió de repente el idioma a amárico. La documentación de soporte de Google te dice dónde está el botón de English, pero si no conoces el amárico, esa explicación no sirve para nada. Ni siquiera la app de traducción del iPhone reconocía ese idioma. Si hubiera existido solo un ícono multilingüe universal, habría sido fácil resolverlo en una situación así

    • Irónicamente, incluso Universal Language Selector (U.S.L) termina recomendando idiomas sobre todo a partir de la información del país basada en la IP del usuario. Muchas veces ese método no es preciso. Según el FAQ de U.S.L, primero determinan el país de origen por IP y luego recomiendan los principales candidatos de idioma

  • No me gusta el diseño que asume que todo el mundo usa un solo idioma. Yo puedo leer sin problema en cuatro idiomas y normalmente prefiero el original antes que una traducción. La predicción de idioma basada en IP falla muy seguido. Si ya configuré los idiomas que admito, deberían respetarlo. En YouTube, el doblaje automático con IA se aplica por defecto y termino escuchándolo medio segundo para luego volver atrás y desactivarlo otra vez. No toma mucho tiempo, pero es una experiencia realmente irritante

    • El doblaje con IA de YouTube tiene una calidad pésima. Me tomó cinco minutos darme cuenta a duras penas de que la voz del video era en realidad el audio principal. También odio que traduzcan el título del video. Estoy viendo un video hablado en inglés, pero el título aparece en un idioma cualquiera

    • Aunque configure en Google que hablo español, YouTube traduce automáticamente todo al inglés. Quiero ver contenido en idioma original para mejorar mi español, pero YouTube hace que eso se sienta difícil

  • La función de YouTube que traduce automáticamente los títulos de los videos a mi idioma configurado me molesta muchísimo. Entiendo inglés, así que no necesito que me lo traduzcan

    • Si un texto está en un idioma que no entiendo, es muy probable que ese video originalmente no estuviera pensado para mí. La mayoría de los videos internacionales se ofrecen en inglés, así que si el autor hubiera querido, probablemente ya lo habría traducido. Además, un título de video tiene muy poco contexto, así que ni siquiera se puede traducir bien. Una vez vi un video en portugués titulado "Vamos assistir uma conexão com o passado" que en realidad era "Let's play A Link to the Past"; para averiguar el título en inglés tuve que volver a traducirlo e inferirlo. Este tipo de función puede mejorar la accesibilidad, pero al menos debería haber una opción para desactivarla

    • Puede que el algoritmo de YouTube fomente el uso de esta función e incluso la recompense en nombre de la accesibilidad del contenido, pero prefiero un título en inglés antes que un horrible título en noruego traducido por máquina. En mi experiencia, cuando aparecen estos títulos traducidos por máquina, configuro que no me recomienden ese canal

    • Mi computadora es alemana, pero está configurada en inglés. Aun así, YouTube me pone voces traducidas por máquina o traduce de forma rara videos y anuncios en alemán al inglés. Muchas veces se siente realmente extraño y torpe

    • El problema no es solo que traduzcan los títulos, sino también las pistas de audio. Cuando un youtuber que veo seguido ofrece pistas de audio hechas por fans en varios idiomas, siempre tengo que volver manualmente al idioma original. Con la traducción automática muchas veces se pierden juegos de palabras y matices culturales. A veces, para cambiar la pista de idioma, incluso hay que reiniciar el video desde el principio, y también hay conflictos con extensiones del navegador. Ojalá hubiera una interfaz que no pusiera estas traducciones como valor predeterminado y permitiera activarlas libremente

    • Ahora incluso en Google, Kagi y otros, los resultados de búsqueda de Reddit aparecen traducidos. Yo pensaba que la respuesta que buscaba estaba escrita en mi idioma, pero en realidad era una publicación en inglés traducida por máquina

  • Ante todo, se debería evitar poner la traducción automática como valor predeterminado en cualquier caso. Basta con mostrar claramente la lista de idiomas realmente traducidos. El botón de traducir ya existe en el navegador, así que el usuario puede aplicarlo por su cuenta. El inglés no es ni mi primera ni mi segunda lengua, pero lo leo sin problema. Quiero evitar el esfuerzo de buscar el botón del original en inglés entre un montón de traducción automática basura. En otros idiomas locales esto pasa menos; curiosamente, parece ocurrir mucho más con el inglés. Si se va a usar traducción automática, creo que hace falta algún tipo de validación real, como probar una vez el resultado para ver si coincide con la intención

    • Reddit me muestra contenido traducido automáticamente al francés, pero el estilo propio de Reddit es casi imposible de trasladar incluso para una persona. Aunque no supieras nada de inglés, estas traducciones automáticas no valen la pena leerlas. Además, según el dispositivo o la app, ver el original o cambiar de idioma puede ser difícil de encontrar, y fuera de eso Reddit insiste demasiado con que instales la app

    • La traducción automática ha mejorado bastante desde hace años, al punto de que incluso un nativo a veces no nota que es una traducción

  • Lo que más me incomoda de todo esto es Google. Google sabe quién soy, si estoy viajando, y hasta cuál es mi idioma preferido (inglés), y aun así en algunas páginas sigue mostrándome contenido en el idioma de la región. Así como usa mi información para rastrearme, me gustaría que la usara más para mejorar la experiencia del usuario

    • Soy usuario de catalán, pero aunque el español nunca ha estado configurado en mi cuenta de Google ni como idioma del sistema o del navegador, siempre me lo fuerzan. Vivo en Estados Unidos, y aun así cuando busco cosas relacionadas con Cataluña, me muestran primero la Wikipedia en español. Ese comportamiento del buscador siempre me ha parecido malo. Es un problema tanto para personas que no saben español, como mis hijos, como para las regiones catalanohablantes que no son España. En particular, Google Gemini considera peligroso el contenido en catalán y bloquea conversaciones. Antes Google era realmente sensible a la diversidad, pero ahora ya no

    • Últimamente Google deja reseñas de Maps y otros contenidos en el idioma local sin traducirlos al inglés. Parece asumir que, como estuviste bastante tiempo en ese lugar, entonces conoces el idioma del país, pero muchas veces de verdad necesitas inglés. Pasa lo mismo con los resultados de búsqueda. Usar el idioma local solo significa que quieres informarte sobre la situación de esa región, y Google no está reflejando bien ese patrón de uso

    • He discutido esto directamente con un desarrollador de Google. Él dijo que, debido al proceso de doble renderizado, Google todavía no puede usar la información del usuario en la página principal para reflejar las preferencias de idioma, pero eso no me convence porque el encabezado Accept-Language ya viene incluido en la solicitud inicial

    • Google sabe que vivo en Reino Unido y que uso inglés. Sin embargo, si inicio sesión en la TV de un hotel en España y veo videos de YouTube en inglés, me muestra anuncios en español. Siento que lo hacen a propósito por los anunciantes, aun sabiendo que es un idioma que no entiendo

    • Cada vez que uso un dispositivo o navegador nuevo, Google y sus servicios empiezan en hebreo. Siempre lo cambio a inglés, pero tengo que hacerlo una y otra vez, y aunque sí puedo leerlo, prefiero el inglés porque es más universal

  • Todos los navegadores pueden enviar el encabezado Accept-Language para indicar los idiomas preferidos del usuario, e incluso el propio usuario puede modificarlo si le interesa. Pero Accept-Language no resuelve todo. La razón es que la mayoría de las personas multilingües no tienen un orden absoluto de preferencia, sino preferencias según el tema. Por ejemplo, aunque manejes bien el francés, no necesariamente quieres una traducción al francés de noticias en inglés. Los administradores de sitios no deberían forzar funciones complejas; basta con ofrecer una interfaz de cambio de idioma clara y rápida. Wikipedia hace esto bien

    • En realidad, más importante que funciones como Accept-Language es ofrecer buenas traducciones, no medias tintas de traducción automática. Para la UI y el contenido propio, conviene mantener traducciones oficiales; en cambio, el contenido generado por usuarios debería mostrarse de forma opcional mediante el botón de traducir del navegador o algo similar, no con traducción automática por defecto. Recomiendo usar Accept-Language para elegir el idioma inicial y, al mismo tiempo, ofrecer una opción clara para cambiarlo. Cada versión idiomática de Wikipedia funciona como un sitio separado donde el contenido se reescribe por separado

    • Accept-Language también permite asignar ponderaciones por idioma (q value). Los sitios web deberían permitir que el usuario anule los idiomas solicitados por el navegador, y los navegadores también deberían ofrecer opciones por sitio como "valor predeterminado del sitio", "idioma del sistema" o "solicitar inglés". Lo ideal sería que el sitio publique claramente la lista de idiomas que admite, por ejemplo en manifest.json, y que la selección de idioma se maneje del lado del cliente

    • Es débil asumir que los usuarios configuran Accept-Language según el idioma que más cómodamente les resulta en la práctica. Como la mayoría de los sitios ni siquiera lo soportan bien, es poco probable que la gente piense en esa configuración con mucha estrategia

  • En un sitio gubernamental implementé un sistema que elegía el idioma predeterminado usando Accept-Language para soportar multilenguaje y accesibilidad. Pero el PM ignoró esa decisión y fijó EN (inglés) como único valor por defecto. El auditor de accesibilidad exigió que se usara Accept-Language, y cuando descubrió que habían revertido la implementación, llamó la atención con fuerza. Al final, gracias a estas tonterías absurdas, terminé teniendo unas semanas más de contrato

  • También quiero hablar de mi propia frustración lingüística. Tengo familiares que solo hablan japonés en Apple TV. El país de mi cuenta de Apple es Finland. Quería ver The Martian con mi familia, pero como las pistas de audio solo muestran los idiomas admitidos en el país de la cuenta, no era posible elegir el doblaje en japonés. No puedes cambiar el país de la cuenta si tienes una suscripción activa de Apple TV. Al final no pudimos verlo en familia

    • Supongo que probablemente se deba a un problema de licencias por región. Ese doblaje en ese idioma quizá no está licenciado para usarse en Finlandia

    • En Netflix pasó algo parecido. En Finlandia, para ver Kim's Convenience había que poner el idioma de la cuenta en inglés. Incluso si usabas subtítulos en inglés, con la UI en finlandés ni siquiera podías acceder a ese contenido

  • Tengo experiencia desarrollando un sistema que, a partir de Accept-Language, ofrecía la traducción más cercana para facilitar el acceso al usuario. Por ejemplo, si no había portugués de Portugal, se servía automáticamente portugués de Brasil. Técnicamente funcionaba bien y fue divertido implementarlo, pero en la práctica la mayoría de los usuarios quería inglés sin importar Accept-Language, y aunque había una opción para cambiar de idioma en el pie de página, no era lo bastante visible. Así que ahora lo cambiamos para preguntar directamente, y la satisfacción de los usuarios subió bastante

    • ¿Preguntar directamente significa que cada vez que entras al sitio sin cookies guardadas aparece obligatoriamente un popup para elegir idioma? Ese tipo de popup es inconsistente, y ya me siento agradecido si al menos tiene una X para cerrarlo. En 95 de cada 100 casos, si hice clic para entrar a un idioma, con eso basta; y si hace falta, sería suficiente con ofrecer la selección de idioma arriba a la derecha o en el pie de página. Preferiría que no hubiera popups ni modales

    • Está bien usar Accept-Language como predeterminado y además darle al usuario la posibilidad de elegir. Estoy a favor de quitar los íconos en el diseño del cambio de idioma, pero me parece una lástima agrupar varias regiones bajo un solo idioma

    • La mayoría de los usuarios deja el idioma predeterminado del sistema tal como está, ni sabe cómo cambiarlo y simplemente se acostumbra

  • Cuando estás en el extranjero, este problema es realmente absurdo, e incluso en tu propio país las versiones localizadas de cosas como documentación de programación tienen diferencias en el contenido y peor calidad en la traducción. En el escenario ideal, quiero ver el original en inglés. Últimamente además cada vez aparecen más resultados traducidos por máquina en las búsquedas. Reddit también adoptó recientemente este enfoque. Si hago una búsqueda en un idioma distinto del inglés a propósito, es porque quiero encontrar información propia de ese idioma

    • Parece que el equipo de Reddit diseñó la función asumiendo solo a usuarios monolingües de su propio país. En todo el mundo hay mucha gente que entiende varios idiomas, así que no había necesidad de hacerlo así

    • También me enfurecí con la función de cambio automático por idioma en la documentación de MongoDB. En los resultados de búsqueda aparecía en inglés, pero en cuanto abrías la página, el JS la cambiaba a portugués de Brasil. Luego, cuando terminaba de cargar del todo, volvía otra vez al inglés, pero la URL seguía siendo /pt-br/. Encima, la calidad de la traducción era claramente automática. Yo uso portugués de Portugal, así que esas diferencias sutiles me molestan todavía más