> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# i18n 모듈

모든 표면이 공유하는 로케일 계약.

## 시작하기 전에

파일 → 폴더 열기를 사용하여 Visual Studio Code에서 다운로드한 supastack 프로젝트를 연 다음 터미널 → 새 터미널을 선택합니다. 저장소 루트는 package.json, 앱 및 패키지가 포함된 폴더입니다. 아래 명령을 실행하고 터미널을 열어 두십시오. 명령이 인식되지 않으면 계속하기 전에 도구 설치 가이드를 완료하세요.

먼저 플랫폼 튜토리얼을 읽어보세요. 서버는 브라우저 또는 전화 요청에 응답하는 앱 프로세스입니다. 웹은 apps/web/.env.local를 읽고, Expo는 apps/mobile/.env.local를 읽고, 데이터베이스 마이그레이션 명령은 루트 .env를 읽습니다. 데이터베이스 없는 /dashboard 데모는 Postgres를 마이그레이션해야 하는 실제 /auth 계정과 별개입니다. 전화 또는 데스크톱 전용 결제에는 별도로 실행되는 웹 백엔드가 필요합니다.

[도구 설치 및 코드 받기](https://supastack.dev/ko/docs/web/before-you-start.md)

[명령, 파일 및 구성 알아보기](https://supastack.dev/ko/docs/web/terminal-basics.md)

[웹 첫 실행 튜토리얼 완료](https://supastack.dev/ko/docs/web/ship-in-5-minutes.md)

```
corepack pnpm --filter @supastack/web dev
```


## 설치 및 설정

packages/i18n은 로케일 집합과 해석 계약을 소유합니다: SUPPORTED_LOCALES, DEFAULT_LOCALE, LOCALE_COOKIE, isAppLocale, resolveLocale, localePath, getDictionary. 웹 라우트, 모바일 문자열, 트랜잭셔널 메일이 모두 같은 패키지를 통해 읽습니다.

해석 순서는 경로 접두사 → 쿠키 → Accept-Language → 기본값입니다. localePath(locale, path)는 정규 href를 만듭니다 — 기본 로케일은 접두사 없이, 그 외는 /{locale}/… — 그리고 프록시 레이어가 이를 강제합니다.

```
import { getDictionary, localePath, resolveLocale } from "@supastack/i18n";

const locale = resolveLocale([pathLocale, cookie, acceptLanguage]);
const copy = getDictionary(locale).marketing;
```


## 구현 워크플로

사용자에게 보이는 문자열은 먼저 사전 타입에 추가한 뒤 모든 로케일에 추가하세요 — 번역 완결성 스위트는 누락된 키와 번역되지 않은 영어에서 실패합니다.

로케일로 제품 로직을 분기하지 마세요; 사전은 프레젠테이션입니다. 날짜, 숫자, 복수형은 문자열 템플릿 대신 해석된 로케일의 Intl API로 포맷하세요.


## 검증 및 문제 해결

키를 건드린 후 i18n 패키지 테스트와 site-content 완결성 스위트를 실행하세요. 로케일 접두사 라우트, 언어 전환기, 쿠키를 지운 상태의 Accept-Language 감지를 스팟 체크하세요.


## 다음

[워크스페이스](https://supastack.dev/ko/docs/modules/workspaces.md)
