
# Idiomas y escritura de derecha a izquierda

Las páginas para el usuario final (inicio de sesión alojado, portal de la cuenta, correos electrónicos) están disponibles en 30 idiomas. Tres de ellos se escriben de derecha a izquierda: árabe (`ar`), persa (`fa`) y hebreo (`he`). El panel de control y esta documentación están disponibles en 8 idiomas: turco, inglés, francés, alemán, coreano, japonés, italiano y español.

## Cómo se elige el idioma

Las páginas alojadas eligen el idioma a partir de estas fuentes, en este orden. Cada fuente se compara con los idiomas a los que está traducida la página; si ninguno coincide, se prueba la siguiente fuente:

1. El parámetro `ui_locales` de la solicitud de autorización OIDC, como lista ordenada (las primeras 10 entradas).
2. La cabecera `Accept-Language` del navegador.

Si ninguna fuente coincide, se usa inglés (`en`). Las etiquetas de región recurren al idioma base (`de-AT` pasa a `de`). Los valores solo se comparan, nunca se copian en la página.

Los idiomas habilitados para un entorno se publican como `ui_locales_supported` en los metadatos del OpenID Provider y como `locales` en la respuesta de `/fapi/v1/environment`, de modo que su aplicación pueda ofrecer solo esos. Las páginas alojadas todavía no limitan su elección a esa lista, y el idioma predeterminado del entorno todavía no se usa como alternativa; hasta entonces, la alternativa es siempre el inglés.

No disponible todavía (plan §70): un selector de idioma que recuerde la elección en una cookie `idp_locale`, y el uso del `locale` del usuario con sesión iniciada. Hasta que se publiquen, el idioma se vuelve a elegir en cada solicitud.

## Páginas de derecha a izquierda

- Cada página alojada y el portal de la cuenta incluyen `<html lang=… dir=…>`; `dir` es `rtl` para `ar`, `fa` y `he`. Las plantillas de correo llevan el mismo `dir` en su elemento raíz.
- El CSS personalizado acepta únicamente propiedades de dirección lógicas, como `margin-inline-start`, `padding-inline-end` y `border-inline-start`, y `text-align: start`. Las propiedades de dirección físicas, como `margin-left`, se rechazan con `physical_property`, y los valores `left` y `right` con `physical_value`. Las propiedades que desplazan un elemento sobre otro, incluidas `position` y la familia `inset`, no se aceptan en absoluto.
- Los campos de código de un solo uso y de código de recuperación siempre se disponen de izquierda a derecha; los campos de identificadores usan `dir="auto"`, de modo que una dirección conserva su propia dirección.
- El nombre de la aplicación en la pantalla de consentimiento se aísla con `<bdi>`, de modo que un nombre de izquierda a derecha no rompe una frase de derecha a izquierda. Otros nombres, como los nombres de organización del selector de organizaciones, todavía no se aíslan.

## Caracteres de control bidireccionales

- Los nombres para mostrar proporcionados por el cliente que aparecen en la pantalla de consentimiento, como el nombre de la aplicación, se depuran: se eliminan los caracteres de control, los caracteres de formato invisibles (incluidos los controles bidi U+202A–U+202E y U+2066–U+2069) y los separadores de línea o de párrafo, de modo que un nombre no pueda reordenar ni falsificar el texto que lo rodea.
- Las sustituciones de texto personalizadas en la personalización rechazan los controles bidi U+202A–U+202E y U+2066–U+2069 con el código de error de campo `bidi_control_character`, y otros caracteres de control con `control_character` (`422 validation_failed`; la entrada de `errors[]` apunta al texto).
- Los valores de texto insertados en los correos electrónicos, como el nombre de la aplicación, se rechazan si contienen caracteres de control o de formato invisibles; el unificador y el no unificador de ancho cero (U+200D, U+200C) están permitidos porque los idiomas persas y los de escritura índica los necesitan.

## Códigos, fechas y números

Los códigos de un solo uso y los códigos de recuperación se muestran con dígitos ASCII en todos los idiomas, porque el usuario puede escribirlos en otro dispositivo. La hora de un evento de seguridad en un correo usa el formato de fecha y hora CLDR del idioma del correo y la zona horaria del destinatario (UTC si no se conoce); un idioma sin datos de fecha CLDR muestra la hora como `YYYY-MM-DD HH:MM UTC`.

## Tipografías para otros sistemas de escritura

La lista de tipografías permitidas incluye las familias Noto Sans para árabe, hebreo, japonés, coreano, chino simplificado, tailandés y devanagari. Una familia para chino tradicional todavía no está en la lista (no verificado). Consulte [Personalice sus páginas de inicio de sesión](/docs/guides/branding) para ver las tipografías y los tokens.
