다국어와 접근성
16개 서비스 언어와 초급 학습자 병행 설명, RTL·긴 문자열 검증 기준입니다.
언어 선택
첫 실행 언어는 기기 시스템 언어를 사용한다. 첫 화면 우측 상단에서 언제든 앱 언어를 바꿀 수 있으며, 선택한 언어는 재실행 후에도 유지한다.
현재 앱은 한국어·영어·일본어·중국어 간체·중국어 번체·스페인어·프랑스어· 독일어·포르투갈어·러시아어·베트남어·태국어·인도네시아어·아랍어·힌디어· 튀르키예어 16개 언어를 제공한다. 모든 언어는 같은 302개 UI 키 계약을 가지며 화면 코드의 언어별 임시 분기와 영어 fallback을 허용하지 않는다.
한국어 학습 설명
초급 학습자에게 한국어 설명만 제공하지 않는다. 문법과 표현 설명은 사용자 언어를 기본으로 제공하고, 한국어 원문과 예문을 병행해 비교할 수 있게 한다. K1-01 문법의 한국어 병행 설명도 Flutter 상수가 아니라 MSSQL의 승인된 한국어 번역을 같은 API 응답으로 받는다.
K0와 K1-01~12의 레슨·학습 목표·활동·문법·문항·선택지는 한국어 원문과
15개 사용자 언어 번역을 라이브 DB에 저장한다. 외부 번역 API나 런타임
자동 번역은 사용하지 않는다. 한국어 학습 표현과 정답이 사용자 언어로
번역되어 사라지지 않도록 PRESERVE_KOREAN 계약과 시드 검증을 적용한다.
번역 제작 상태와 검수자 유형은 운영·관리자용 메타데이터다. 앱 화면에는 번역문만 표시하며 내부 상태, 시드 코드, 개발 문구는 반환하지 않는다. 스토어에서 완전 지원 언어로 선언하기 전에는 언어별 원어민 화용 검수와 승인 기록을 추가한다.
긴 문자열
버튼, 앱바, 카드와 바텀 내비게이션은 영어보다 긴 번역을 기준으로 설계한다. 320dp 화면과 텍스트 확대 200%에서도 렌더 예외가 없어야 하며 학습자가 주요 버튼까지 스크롤해 도달할 수 있어야 한다.
RTL과 한국어 학습 영역
아랍어 UI의 탐색·목록·설명은 RTL을 따르되 한글 자모, 음절 조합식,
한국어 예문과 발화는 LTR 경계 안에서 표시한다. 이 경계를 지키지 않으면
ㄱ + ㅏ → 가의 요소 순서가 뒤집히므로 좌표 기반 회귀 테스트를 함께 둔다.
접근성
- 충분한 색 대비와 명확한 포커스 상태
- 아이콘 단독 버튼의 접근성 라벨
- 필기 가이드의 색상 외 형태 단서
- 음성 콘텐츠의 transcript
- 모션 감소 설정 존중
- 스크롤과 키보드 탐색 지원
