
# 言語と右から左への表記

エンドユーザー向けページ（ホスト型ログイン、アカウントポータル、メール）は30言語で利用できます。そのうち3言語は右から左へ書かれます：アラビア語（`ar`）、ペルシア語（`fa`）、ヘブライ語（`he`）。ダッシュボードとこのドキュメントは8言語で利用できます：トルコ語、英語、フランス語、ドイツ語、韓国語、日本語、イタリア語、スペイン語。

## 言語の選択方法

ホスト型ページは次の順に言語を選択します。各ソースはページが翻訳されている言語と照合され、一致しない場合は次のソースが試されます：

1. OIDC認可リクエストの `ui_locales` パラメータ（順序付きリスト、先頭10件）。
2. ブラウザの `Accept-Language` ヘッダー。

どちらも一致しない場合は英語（`en`）が使用されます。地域タグは基本言語にフォールバックします（`de-AT` から `de`）。これらの値は照合のみに使われ、ページにそのままコピーされることはありません。

環境で有効な言語は、OpenID Providerメタデータの `ui_locales_supported` と、`/fapi/v1/environment` レスポンスの `locales` として公開されるため、アプリケーションはこれらの言語だけを提示できます。ホスト型ページはまだこのリストに選択を絞り込んでおらず、環境のデフォルト言語もフォールバックとしてはまだ使用されません。それまでフォールバックは常に英語です。

まだ利用できない機能（計画 §70）：`idp_locale` Cookieで選択を記憶する言語セレクタ、およびサインイン済みユーザーの `locale` の使用。これらが提供されるまで、言語はリクエストごとに選択し直されます。

## 右から左へのページ

- すべてのホスト型ページとアカウントポータルは `<html lang=… dir=…>` を持ち、`ar`、`fa`、`he` では `dir` が `rtl` になります。メールテンプレートは、ルート要素に同じ `dir` を持ちます。
- カスタムCSSは論理方向プロパティのみを受け付けます。例：`margin-inline-start`、`padding-inline-end`、`border-inline-start`、`text-align: start`。`margin-left` などの物理方向プロパティは `physical_property` で、値 `left` と `right` は `physical_value` で拒否されます。`position` や `inset` 系など、要素を別の要素の上に移動させるプロパティは、そもそも受け付けられません。
- ワンタイムコードとリカバリーコードのフィールドは常に左から右に配置されます。識別子のフィールドは `dir="auto"` を使用するため、アドレスは自身の方向を保ちます。
- 同意画面のアプリケーション名は `<bdi>` で分離されるため、左から右のアプリケーション名が右から左の文を崩すことはありません。組織ピッカーの組織名など、その他の名前はまだ分離されていません。

## 双方向制御文字

- 同意画面に表示される、アプリケーション名などの顧客提供の表示名からは、制御文字、不可視の書式文字（双方向制御文字 U+202A–U+202E および U+2066–U+2069 を含む）、行区切り・段落区切りが除去されるため、名前によって周囲の文字列の順序が変わったり、なりすましが起きたりすることはありません。
- ブランディングのカスタムテキスト上書きでは、双方向制御文字 U+202A–U+202E および U+2066–U+2069 はフィールドエラーコード `bidi_control_character` で、その他の制御文字は `control_character` で拒否されます（`422 validation_failed`。`errors[]` のエントリがテキストを指します）。
- メールに挿入されるテキスト値（アプリケーション名など）は、制御文字または不可視の書式文字を含む場合は拒否されます。ペルシア語やインド系文字には必要なため、ゼロ幅接合子と非接合子（U+200D、U+200C）は許可されます。

## コード、日付、数値

ワンタイムコードとリカバリーコードは、ユーザーが別のデバイスで入力する可能性があるため、すべての言語でASCII数字で表示されます。メール内のセキュリティイベントの時刻は、メールの言語のCLDR日付・時刻形式と受信者のタイムゾーン（不明な場合はUTC）を使用します。CLDRの日付データがない言語では、時刻は `YYYY-MM-DD HH:MM UTC` で表示されます。

## その他の文字体系のフォント

許可されているフォント一覧には、アラビア語、ヘブライ語、日本語、韓国語、簡体字中国語、タイ語、デーヴァナーガリー文字向けのNoto Sansファミリーが含まれます。繁体字中国語のファミリーはまだ一覧に含まれていません（未検証）。フォントとトークンについては [ログインページのブランディング](/docs/guides/branding) を参照してください。
