데모의 언어와 고정 업무 데이터
열 데모의 공개 언어 열은 ko, en, zh-Hans, ja, de, fr, es, pt, it, ru, ar 순서다. 각 기능이 소유한 문구 표는 같은 키마다 열한 개의 문자열을 가진다. 상품명·가상 판매처명·코스·지역·추천 이유·상태·안내·검증 표시도 해당 표에서 가져온다. 새 언어를 추가하려면 모든 표와 선택기 계약을 함께 확장해야 한다. 번역은 데모용 초안이며 원어민·업종 전문가 검수를 완료한 문구로 표시하지 않는다.
언어를 바꿀 때 유지되는 것
DemoController 한 인스턴스가 기능의 DemoFlow를 계속 소유한다. 로케일 변경은 표시 상태만 알리고 업무 세계를 다시 생성하지 않는다. 사용자가 입력한 문의·메시지는 번역하거나 다른 언어의 샘플 문장으로 덮어쓰지 않는다. 장바구니, 선택한 옵션, 날짜, 예약, 구독, 취소, 옵션 재고와 정원도 그대로 유지한다. 초기화 버튼을 눌렀을 때만 고정된 초기 세계로 돌아간다.
Widgetbook도 useMemoized의 키에 로케일·테마를 넣지 않는다. 다른 데모·시나리오·방문자/운영 콘솔을 선택하면 해당 시나리오의 독립 세계를 만들고, 로케일·테마 변경만으로는 세계를 다시 만들지 않는다. 언어와 테마 애드온을 바꾼 뒤 편집된 장바구니와 컨트롤러의 동일성을 위젯 테스트로 확인한다.
언어와 독립적인 값
| 데이터 | 처리 |
|---|---|
| 식별자·참조 번호 | 업무 ID 그대로 유지. 번역된 이름과 구분한다. |
| 금액·옵션 추가금·수량·재고·좌석 정원 | 정수로 계산하고 모든 언어에서 같은 값 유지. 통화는 KRW 샘플이다. |
| 날짜·회차·배송 주기 | 고정 기준 시각과 ISO 날짜로 계산. 언어 변경으로 재계산하지 않는다. |
| 사용자가 입력한 문장 | 공백과 원문을 보존. 표시 언어와 독립적이다. |
| 가상 상품·브랜드 콘텐츠 | 실제 업체의 현재 상품·제품 정보·안전성·인증을 추정하지 않는다. |
| 아동 정보 | 이름·생년월일 대신 월령 구간만 선택한다. |
| 판매처 위치 | 가상 지역·유형·내장 번호 도식을 사용하며 위치 권한·외부 지도를 요청하지 않는다. |
이 세계는 재고·정원·옵션 가격·상태 전이처럼 시나리오의 의미를 검증하는 고정 업무 픽스처다. 사람의 실제 이름·연락처·주소를 샘플 목록으로 만들지 않는다. 공용 호스트에서 사람 표시가 필요할 때는 seed 1295와 같은 기준 시각의 co_faker/DisplayProjector를 사용한다. 가상 상품명·판매처명은 각 기능의 열한 언어 콘텐츠 표에 있으며 현재 co_faker의 업종별 상품 생성 API를 대체하는 일반 생성기로 주장하지 않는다.
현재 실행 근거
- 커머스 문구의 모든 키에 열한 개의 비어 있지 않은 값이 있는지 검사한다.
- 침구 문의를 한국어·아랍어 혼합 문장으로 입력한 뒤 아랍어로 바꿔도 원문과 공백이 유지되는지 실제 위젯 조작으로 확인한다.
- 세 커머스 페이지는 모든 열한 언어의 360px 렌더와 768/1440px 라이트·다크 상세 화면을 검사한다.
- 열 데모의 Widgetbook 정상·오류·빈 상태와 운영 콘솔은 실제 페이지를 마운트한다.
- 골든 매트릭스의 대표 로케일은 한국어·아랍어다. 전체 언어의 모든 화면·상태를 시각 비교했다고 확장해 보고하지 않는다.
검증 결과·배포 URL은 작업의 최종 실행 기록과 함께 확인한다. 로컬 위젯 PASS, 골든 비교 PASS, 공개 URL 스모크는 서로 다른 검증이다.
네이티브 골든의 다국어 글꼴
브라우저 호스트는 원래 Pretendard와 Roboto 이름으로 등록한 번들 LocaleFallback을 함께 사용한다. 네이티브 flutter_tester는 명시된 제목 글꼴에서 브라우저의 전역 폴백 경로를 따르지 않아, 초기 아랍어 캡처에서 제목·버튼 글자가 비어 있음을 직접 확인했다. 단순 캡처 PASS를 다국어 표시 검증으로 대신하지 않았다.
기능 소유 test/src/golden/fonts/의 네 가지 테스트 전용 얼굴은 기존 Pretendard 기본 글리프와 기존 번들 폴백 글리프를 합친다. 프로덕션 글꼴 파일과 테마는 바꾸지 않는다. 재현 생성기 build_test_fonts.py, 입력·출력 SHA-256, OFL 라이선스를 함께 둔다. 최종 아랍어 골든에서 제목·버튼·라벨·본문이 모두 표시되는 것을 시각 확인한 뒤 기준 이미지를 만들었다.