Locale Segment
app/[locale]
App Router의 다국어 페이지는 [locale] 세그먼트에서
언어를 결정한 뒤 서버 컴포넌트에서 번역 리소스를 읽는다. 상호작용이
필요한 부분만 클라이언트 컴포넌트로 분리한다.
app/[locale]
URL 세그먼트가 현재 언어와 fallback 판단의 기준이 된다.
getTranslation()
서버에서 namespace를 로드하고 t 함수를 만든다.
t('home:title')
초기 HTML에 번역된 제목과 본문을 포함해 렌더링한다.
'use client'
언어 선택, 탭, 폼처럼 상태가 필요한 UI만 클라이언트에 둔다.
alternates.languages
canonical과 hreflang을 같은 locale 규칙으로 생성한다.