
# Lingue e scrittura da destra a sinistra

Le pagine per l'utente finale (login ospitato, portale account, email) sono disponibili in 30 lingue. Tre di queste si scrivono da destra a sinistra: arabo (`ar`), persiano (`fa`) ed ebraico (`he`). La dashboard e questa documentazione sono disponibili in 8 lingue: turco, inglese, francese, tedesco, coreano, giapponese, italiano e spagnolo.

## Come viene scelta la lingua

Le pagine ospitate scelgono la lingua da queste fonti, in quest'ordine. Ogni fonte viene confrontata con le lingue in cui la pagina è tradotta; se nessuna corrisponde, si prova la fonte successiva:

1. Il parametro `ui_locales` della richiesta di autorizzazione OIDC, come elenco ordinato (le prime 10 voci).
2. L'intestazione `Accept-Language` del browser.

Se nessuna fonte corrisponde, viene usato l'inglese (`en`). I tag di regione ricadono sulla lingua base (`de-AT` diventa `de`). I valori vengono solo confrontati, mai copiati nella pagina.

Le lingue abilitate per un ambiente sono pubblicate come `ui_locales_supported` nei metadati dell'OpenID Provider e come `locales` nella risposta di `/fapi/v1/environment`, così la tua applicazione può offrire solo quelle. Le pagine ospitate non limitano ancora la scelta a questo elenco, e la lingua predefinita dell'ambiente non viene ancora usata come ripiego; fino ad allora il ripiego è sempre l'inglese.

Non ancora disponibile (piano §70): un selettore di lingua che ricorda la scelta in un cookie `idp_locale`, e l'uso del `locale` dell'utente autenticato. Finché non saranno rilasciati, la lingua viene scelta di nuovo a ogni richiesta.

## Pagine da destra a sinistra

- Ogni pagina ospitata e il portale account riportano `<html lang=… dir=…>`; `dir` è `rtl` per `ar`, `fa` e `he`. I template email riportano lo stesso `dir` sull'elemento radice.
- Il CSS personalizzato accetta solo proprietà di direzione logiche, come `margin-inline-start`, `padding-inline-end` e `border-inline-start`, e `text-align: start`. Le proprietà di direzione fisiche come `margin-left` vengono rifiutate con `physical_property`, e i valori `left` e `right` con `physical_value`. Le proprietà che spostano un elemento sopra un altro, inclusi `position` e la famiglia `inset`, non sono affatto accettate.
- I campi per il codice monouso e il codice di recupero sono sempre disposti da sinistra a destra; i campi identificativi usano `dir="auto"`, così un indirizzo mantiene la propria direzione.
- Il nome dell'applicazione nella schermata di consenso è isolato con `<bdi>`, così un nome da sinistra a destra non interrompe una frase da destra a sinistra. Gli altri nomi, come i nomi delle organizzazioni nel selettore di organizzazione, non sono ancora isolati.

## Caratteri di controllo bidi

- I nomi visualizzati forniti dal cliente e mostrati nella schermata di consenso, come il nome dell'applicazione, vengono privati dei caratteri di controllo, dei caratteri di formattazione invisibili (inclusi i controlli bidi U+202A–U+202E e U+2066–U+2069) e dei separatori di riga o di paragrafo, così un nome non può riordinare o falsificare il testo che lo circonda.
- Le sostituzioni di testo personalizzate nel branding rifiutano i controlli bidi U+202A–U+202E e U+2066–U+2069 con il codice di errore di campo `bidi_control_character`, e gli altri caratteri di controllo con `control_character` (`422 validation_failed`; la voce `errors[]` punta al testo).
- I valori di testo inseriti nelle email, come il nome dell'applicazione, vengono rifiutati se contengono caratteri di controllo o di formattazione invisibili; il zero-width joiner e il non-joiner (U+200D, U+200C) sono consentiti perché le scritture persiana e indiche ne hanno bisogno.

## Codici, date e numeri

I codici monouso e i codici di recupero sono mostrati con cifre ASCII in tutte le lingue, perché l'utente potrebbe digitarli su un altro dispositivo. L'orario di un evento di sicurezza in un'email usa il formato di data e ora CLDR della lingua dell'email e il fuso orario del destinatario (UTC quando non è noto); una lingua senza dati CLDR per date mostra l'orario come `YYYY-MM-DD HH:MM UTC`.

## Font per altre scritture

L'elenco dei font consentiti include le famiglie Noto Sans per arabo, ebraico, giapponese, coreano, cinese semplificato, thai e devanagari. Una famiglia per il cinese tradizionale non è ancora nell'elenco (non verificata). Vedi [Personalizza le pagine di login](/docs/guides/branding) per font e token.
