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:
41
frontend/src/messages/es.json
Normal file
41
frontend/src/messages/es.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"header": {
|
||||
"search": "Buscar",
|
||||
"login": "Iniciar sesión",
|
||||
"logout": "Cerrar sesión",
|
||||
"menu": "Menú",
|
||||
"myReviews": "Mis reseñas",
|
||||
"favorites": "Favoritos"
|
||||
},
|
||||
"actions": {
|
||||
"save": "Guardar",
|
||||
"cancel": "Cancelar",
|
||||
"delete": "Eliminar",
|
||||
"edit": "Editar",
|
||||
"confirm": "Aceptar",
|
||||
"close": "Cerrar",
|
||||
"loading": "Cargando...",
|
||||
"submit": "Enviar"
|
||||
},
|
||||
"filter": {
|
||||
"title": "Filtro",
|
||||
"cuisine": "Tipo de cocina",
|
||||
"price": "Rango de precios",
|
||||
"region": "Región",
|
||||
"channel": "Canal",
|
||||
"reset": "Restablecer"
|
||||
},
|
||||
"restaurant": {
|
||||
"rating": "Calificación",
|
||||
"address": "Dirección",
|
||||
"phone": "Teléfono",
|
||||
"website": "Sitio web",
|
||||
"closed": "Cerrado permanentemente",
|
||||
"tempClosed": "Cerrado temporalmente"
|
||||
},
|
||||
"review": {
|
||||
"title": "Reseñas",
|
||||
"write": "Escribir una reseña",
|
||||
"noReviews": "Aún no hay reseñas"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user