Skip to main content

sonamu.config.ts μ„€μ •

sonamu.config.tsμ—μ„œ i18n μ˜΅μ…˜μ„ ν™œμ„±ν™”ν•©λ‹ˆλ‹€:

디렉토리 ꡬ쑰

i18n을 ν™œμ„±ν™”ν•˜λ©΄ api/src/i18n/ 디렉토리가 ν•„μš”ν•©λ‹ˆλ‹€:

λ”•μ…”λ„ˆλ¦¬ 파일 생성

defaultLocale λ”•μ…”λ„ˆλ¦¬ (ko.ts)

ν‚€ 넀이밍 ꢌμž₯ νŒ¨ν„΄: "도메인.ν•­λͺ©" ν˜•μ‹μ˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ ν‚€λ₯Ό μ²΄κ³„μ μœΌλ‘œ 관리할 수 있고 IDE μžλ™μ™„μ„±λ„ νŽΈλ¦¬ν•©λ‹ˆλ‹€. - "common.*" - 곡톡 UI - "error.*" - μ—λŸ¬ λ©”μ‹œμ§€ - "validation.*" - 검증 λ©”μ‹œμ§€ - "entity.*" - Entity κ΄€λ ¨

λ‹€λ₯Έ locale λ”•μ…”λ„ˆλ¦¬ (en.ts)

defineLocale은 sd.generated.tsμ—μ„œ export되며, defaultLocale의 ν‚€λ₯Ό κΈ°μ€€μœΌλ‘œ νƒ€μž… 체크λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

Locale μ„€μ •

ν”„λ‘ νŠΈμ—”λ“œ (ν΄λΌμ΄μ–ΈνŠΈ)

sd.generated.tsμ—λŠ” ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ locale 관리λ₯Ό μœ„ν•œ setLocaleκ³Ό getCurrentLocale ν•¨μˆ˜κ°€ ν¬ν•¨λ©λ‹ˆλ‹€:
sonamu.shared.ts의 axios interceptorκ°€ λͺ¨λ“  API μš”μ²­μ— Accept-Language 헀더λ₯Ό μžλ™μœΌλ‘œ μΆ”κ°€ν•©λ‹ˆλ‹€:
λ”°λΌμ„œ setLocale("en")을 ν˜ΈμΆœν•œ λ’€μ˜ λͺ¨λ“  API μš”μ²­μ€ Accept-Language: en 헀더λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

λ°±μ—”λ“œ (μ„œλ²„)

μš”μ²­λ³„λ‘œ locale을 μ„€μ •ν•˜λ €λ©΄ λ―Έλ“€μ›¨μ–΄μ—μ„œ Contextλ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€:
ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ setLocale()둜 locale을 μ„€μ •ν•˜λ©΄, axios interceptorκ°€ Accept-Language 헀더λ₯Ό μžλ™ μ „λ‹¬ν•˜κ³ , μ„œλ²„μ˜ locale 미듀웨어가 이λ₯Ό 읽어 SD() 호좜 μ‹œ ν•΄λ‹Ή μ–Έμ–΄μ˜ λ²ˆμ—­μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. λ³„λ„μ˜ μΆ”κ°€ μ„€μ • 없이 ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ κ°„ locale이 λ™κΈ°ν™”λ©λ‹ˆλ‹€.

μ΄ˆκΈ°ν™” 확인

섀정이 μ™„λ£Œλ˜λ©΄ pnpm syncλ₯Ό μ‹€ν–‰ν•˜μ—¬ sd.generated.tsκ°€ μƒμ„±λ˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€:
μƒμ„±λœ sd.generated.tsμ—λŠ” λ‹€μŒμ΄ ν¬ν•¨λ©λ‹ˆλ‹€:
  • Entityμ—μ„œ μΆ”μΆœν•œ 라벨 (entityLabels)
  • SD() ν•¨μˆ˜
  • localizedColumn() ν•¨μˆ˜
  • defineLocale() ν•¨μˆ˜

SD ν•¨μˆ˜ μ‚¬μš©λ²•

λ”•μ…”λ„ˆλ¦¬ μž‘μ„± 및 μ‚¬μš©

Entity 라벨

μžλ™ μΆ”μΆœλ˜λŠ” 라벨