feat(i18n): #352 다국어 뼈대 ko/en/ja/es

- next-intl 5.x 도입
- src/i18n/config.ts: LOCALES 상수, detectBrowserLocale, LOCALE_LABELS(국기/네이티브명)
- src/i18n/LocaleProvider.tsx: NextIntlClientProvider wrap + localStorage tasteby_locale 저장
- src/messages/{ko,en,ja,es}.json: 초기 30개 키 (header/actions/filter/restaurant/review 5 카테고리)
- src/components/LanguageSwitcher.tsx: 헤더용 드롭다운 (국기 + native, ARIA listbox, 44px 터치)
- providers.tsx: LocaleProvider로 AuthProvider 감싸기
- page.tsx 헤더에 LanguageSwitcher 배치

설계서: docs/design/352-i18n-skeleton/README.md (Approved)

언어 선택 근거:
- ko: 기본
- en: 글로벌 1순위
- ja: 일본 사용자 + 한국 음식 관광
- es: 5억 화자, 라틴아메리카 + 스페인 확장

미번역 키는 ko fallback. URL 라우팅(/en/)/SEO meta/사용자 콘텐츠 번역은 후속.

Refs: #352
This commit is contained in:
joungmin
2026-06-15 15:58:21 +09:00
parent fda2d76514
commit 6cbf7feaf5
12 changed files with 1164 additions and 4 deletions

View File

@@ -0,0 +1,41 @@
{
"header": {
"search": "Search",
"login": "Sign In",
"logout": "Sign Out",
"menu": "Menu",
"myReviews": "My Reviews",
"favorites": "Favorites"
},
"actions": {
"save": "Save",
"cancel": "Cancel",
"delete": "Delete",
"edit": "Edit",
"confirm": "OK",
"close": "Close",
"loading": "Loading...",
"submit": "Submit"
},
"filter": {
"title": "Filter",
"cuisine": "Cuisine",
"price": "Price Range",
"region": "Region",
"channel": "Channel",
"reset": "Reset"
},
"restaurant": {
"rating": "Rating",
"address": "Address",
"phone": "Phone",
"website": "Website",
"closed": "Permanently Closed",
"tempClosed": "Temporarily Closed"
},
"review": {
"title": "Reviews",
"write": "Write a Review",
"noReviews": "No reviews yet"
}
}