
# 언어와 오른쪽에서 왼쪽으로 쓰기

최종 사용자 페이지(호스팅 로그인, 계정 포털, 이메일)는 30개 언어로 제공됩니다. 이 중 3개 언어는 오른쪽에서 왼쪽으로 쓰는 언어입니다: 아랍어(`ar`), 페르시아어(`fa`), 히브리어(`he`). 대시보드와 이 문서는 8개 언어로 제공됩니다: 터키어, 영어, 프랑스어, 독일어, 한국어, 일본어, 이탈리아어, 스페인어.

## 언어 선택 방식

호스팅 페이지는 다음 소스에서 순서대로 언어를 선택합니다. 각 소스는 페이지가 번역된 언어와 대조합니다. 일치하는 항목이 없으면 다음 소스를 확인합니다:

1. OIDC 인가 요청의 `ui_locales` 매개변수(순서가 있는 목록, 처음 10개 항목).
2. 브라우저의 `Accept-Language` 헤더.

두 소스 모두 일치하지 않으면 영어(`en`)를 사용합니다. 지역 태그는 기본 언어로 대체됩니다(`de-AT`는 `de`로). 이 값은 대조에만 사용되며 페이지에 그대로 복사되지 않습니다.

환경에서 사용 가능한 언어는 OpenID 제공자 메타데이터의 `ui_locales_supported`와 `/fapi/v1/environment` 응답의 `locales`로 공개되므로, 애플리케이션은 해당 언어만 제공할 수 있습니다. 호스팅 페이지는 아직 선택 범위를 이 목록으로 좁히지 않으며, 환경의 기본 언어도 아직 대체 언어로 사용되지 않습니다. 그때까지 대체 언어는 항상 영어입니다.

아직 제공되지 않음(계획 §70): 선택한 언어를 `idp_locale` 쿠키에 저장하는 언어 선택기와 로그인한 사용자의 `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)을 참조하십시오.
