Plataforma

Idioma del navegador y localización de aplicaciones

Usa las preferencias de idioma del navegador como una pista de localización, sin tratarlas como identidad ni sustituir la elección explícita.

Documentación

Quieres la documentación estructurada de Plataforma?

Este artículo forma parte de la biblioteca editorial. Para pasos de configuración, material de referencia y actualizaciones continuas, entra en la sección de docs.

Las preferencias de idioma del navegador pueden ayudar a elegir una primera traducción, pero son solo una pista. navigator.language indica la preferencia principal y navigator.languages puede ofrecer una lista ordenada. Ningún valor demuestra dónde vive una persona, su nacionalidad ni el idioma que quiere para cada tarea. La aplicación debe negociar un idioma compatible, mostrar un selector y conservar una alternativa legible.

Qué significan los valores de Navigator

La interfaz Navigator expone preferencias configuradas por la persona o por el navegador. MDN Navigator.language describe la etiqueta principal y WHATWG Navigator.languages describe la lista de preferencias. Una etiqueta como fr-CA expresa una preferencia lingüística y regional para el contenido, no una ubicación física.

La lista puede estar vacía, tener un solo elemento o cambiar después de un ajuste del navegador. Una aplicación debe tratarla como entrada para una selección temporal y no como un perfil permanente. El atributo lang del documento es distinto: ayuda a lectores de pantalla y debe actualizarse cuando cambia el idioma visible.

Negociar idiomas compatibles

Define una lista finita de locales realmente traducidos. Normaliza las etiquetas, prueba primero la coincidencia más específica y después el idioma padre. Si existen fr-CA, fr y en, una solicitud canadiense puede usar fr-CA, otra solicitud francesa puede usar fr y las demás pueden usar en. No inventes una traducción ni confundas una región con otra.

Un orden práctico es: elección explícita guardada, primer valor compatible de navigator.languages, navigator.language si la lista no está disponible y, por último, un idioma predeterminado estable. Esta secuencia funciona también en vistas integradas con menos información. El valor predeterminado debe ser una experiencia completa, no claves sin traducir.

La internacionalización distingue idioma, escritura y región. W3C Internationalization explica por qué esas partes de una etiqueta no son intercambiables. Si falta una variante, informa del idioma alternativo y ofrece el selector.

Mantener la elección de la persona

La selección automática sirve para la primera visita, pero nunca debe impedir leer la interfaz. El selector debe mostrar nombres traducidos, tener un valor actual claro y funcionar con teclado. Guarda el locale solo después de una elección explícita y restáuralo antes de consultar una nueva preferencia del navegador. Indica si la elección afecta la página, la cuenta o visitas futuras.

Durante la carga de recursos conserva el contenido y el foco. No borres formularios ni borradores al cambiar de idioma. Si falla un paquete, conserva el último idioma legible y ofrece reintentar. Una preferencia lingüística no es consentimiento para mensajes promocionales, transferencia de datos ni una decisión jurídica.

Cargar recursos sin perder contenido

Versiona los recursos y comprueba que cada clave necesaria existe. Durante una transición muestra el texto anterior en vez de una clave interna. Evita unir fragmentos de frases: el orden gramatical y las reglas de plural cambian entre idiomas. Usa Intl para fechas, números y listas, pero guarda los datos en forma canónica y no deduzcas país fiscal o moneda a partir del idioma.

Actualiza lang, títulos, descripciones, enlaces alternativos y dirección del documento. Prueba textos largos, escritura de derecha a izquierda y combinaciones de números y código. Las URL localizadas deben conservar la misma intención; una traducción ausente no debe enviar una URL válida a una página sin relación.

Probar preferencias, reserva y accesibilidad

Prueba una lista vacía, una región no compatible, una etiqueta con escritura y un navegador que solo expone navigator.language. Cambia la preferencia después de una elección explícita y comprueba que esta permanece. Borra la elección y verifica que la negociación vuelve a ser predecible.

Prueba red lenta, respuesta interrumpida y caché obsoleta. Conserva la entrada, anuncia el progreso y ofrece reintentar. Recorre el selector con teclado, comprueba el foco y verifica que el lector de pantalla recibe el nuevo lang. Revisa plurales, separadores decimales, expansión de texto y zoom.

Privacidad y límites

Las preferencias pueden contribuir a una configuración reconocible cuando se combinan con otros datos. Si solo necesitas un locale, no envíes la lista completa a analítica. No uses etiquetas para inferir residencia o un atributo sensible. Si existe una traducción remota, explica qué servicio recibe el texto, su retención y la acción que inicia la transferencia. La falta de un recurso local nunca debe subir contenido privado sin confirmación.

Documenta qué locales están completos y cuáles usan una reserva. Mantén accesible la alternativa y revisa cualquier cambio de almacenamiento, sincronización o empaquetado.

Para fechas y números, separa la decisión de locale de los datos almacenados con la guía de formato Intl. Consulta también opciones de privacidad del navegador.

La misma regla se aplica a avisos, archivos generados y registros de soporte: cambia las etiquetas, no los datos ni los permisos.

Explica el alcance de cada selector y ofrece una reserva clara cuando falta un recurso.

Una etiqueta de idioma puede incluir escritura y región; esas partes deben conservarse al negociar.

La negociación debe ser determinista para que un informe de soporte pueda reproducirse sin guardar toda la lista del navegador.

La autenticación y la recuperación deben seguir siendo comprensibles si el paquete elegido aún no se cargó.

Las rutas renderizadas en servidor y cliente deben aplicar la misma prioridad a la elección guardada.

La calidad incluye títulos, etiquetas, avisos, texto alternativo y reglas de plural, no solo palabras traducidas.

Cuando falta una locale, ofrece elegir otra, continuar con el idioma predeterminado o reintentar.

Revisa la negociación si cambian los controles de privacidad, las vistas integradas o los datos de internacionalización.

El idioma predeterminado debe permitir leer y completar la tarea sin esperar otra descarga.

El cambio de idioma no debe borrar datos introducidos ni cambiar permisos ya concedidos.

Los mensajes de error también necesitan traducción o una alternativa comprensible.

Las fechas y cantidades almacenadas deben conservar su significado original.

La dirección del texto y el atributo lang forman parte de la accesibilidad.

Una preferencia del navegador no reemplaza una decisión consciente de compartir contenido.

Las preferencias del navegador se negocian con recursos compatibles y la elección explícita prevalece.

Mantén la elección comprensible en cada locale y explica cómo volver al idioma predeterminado, tanto en móvil como en escritorio.

La misma orientación se aplica a navegadores móviles y de escritorio.

Mapa de afirmaciones y fuentes

Fuentes públicas

#Navigator.language#Localización#Internacionalización#Accesibilidad

Lleva BotBrowser de la investigación a producción

Usa estas guías para entender el modelo y después avanzar hacia validación multiplataforma, contextos aislados y despliegue de navegador preparado para escalar.