feat: add internationalization message platform
This commit is contained in:
@@ -534,8 +534,9 @@ Radix는 overlay와 primitive composition을 중심으로 평가할 수 있다.
|
||||
|
||||
## 9. 국제화 계약
|
||||
|
||||
디자인 시스템 primitive는 한국어 문구를 내부 기본값으로 숨기지 않는다.
|
||||
접근성 label이나 오류 문구가 필요하면 명시적인 prop 또는 message key를 받는다.
|
||||
RP-08에서 디자인 시스템 primitive의 닫기, alert, toast, 글자 수 같은 기본
|
||||
문구는 `useLocale()` typed catalog로 이동했다. 제품 의미를 가진 label은 여전히
|
||||
명시적인 prop으로 받으며 primitive가 feature message key를 소유하지 않는다.
|
||||
|
||||
필수 국제화 기반:
|
||||
|
||||
@@ -551,6 +552,17 @@ Radix는 overlay와 primitive composition을 중심으로 평가할 수 있다.
|
||||
- pseudo-locale
|
||||
- RTL story와 E2E smoke
|
||||
|
||||
현재 구현 위치와 실패 정책:
|
||||
|
||||
- `presentation/i18n/catalog.ts`: 137개 canonical common key와 locale parity
|
||||
- `message-contract.ts`: key별 interpolation, fallback과 compatibility alias
|
||||
- `formatters.ts`: UTC-default date, number, relative time, list, plural/select
|
||||
- `locale-provider.tsx`: document `lang/dir`과 React consumer API
|
||||
- missing key/parameter와 formatter 예외: 빈 문자열이나 raw key 대신 안전한
|
||||
fallback
|
||||
- `en-XA`: 긴 문자열/320px reflow, `ar-EG`: logical layout/RTL keyboard smoke
|
||||
- backend raw message와 translated HTML: 정적 negative gate에서 거절
|
||||
|
||||
금지 패턴:
|
||||
|
||||
- 번역 문장 중간에 JSX 문자열을 연결한다.
|
||||
@@ -559,7 +571,7 @@ Radix는 overlay와 primitive composition을 중심으로 평가할 수 있다.
|
||||
- route title, navigation label, toast message를 JSX literal로 분산한다.
|
||||
- 번역 누락 시 빈 문자열을 렌더링한다.
|
||||
|
||||
Storybook toolbar에서 최소한 다음 조합을 전환할 수 있어야 한다.
|
||||
RP-10의 Storybook toolbar에서 최소한 다음 조합을 전환할 수 있어야 한다.
|
||||
|
||||
- `ko-KR`, light
|
||||
- `en-US`, light
|
||||
|
||||
Reference in New Issue
Block a user