작가:
이 문서를 원하는 AI 어시스턴트에 참조하세요ChatGPTClaudeDeepSeekGoogle AI modeGeminiPerplexityMistralGrok
이 페이지와 원하는 AI 어시스턴트를 사용하여 문서를 요약합니다
버전 기록
- "문서 초기화"v9.4.02026. 8. 24.
이 페이지의 콘텐츠는 AI를 사용하여 번역되었습니다.
영어 원본 내용의 최신 버전을 보기문서 수정
이 문서를 개선할 아이디어가 있으시면 GitHub에 풀 리퀘스트를 제출하여 자유롭게 기여해 주세요.
문서에 대한 GitHub 링크생성:2026-08-24마지막 업데이트:2026-09-29
복사
문서의 Markdown을 클립보드에 복사
intlayer Elysia 플러그인 문서
Elysia용 intlayer 플러그인은 사용자 로케일을 감지하고 라우트 컨텍스트에 intlayer 객체를 주입합니다. 또한 요청 컨텍스트 내에서 전역 번역 함수를 사용할 수 있게 합니다.
사용법
src/index.ts
코드 복사
코드를 클립보드에 복사
플러그인은 전역derive를 통해 컨텍스트를 등록하며, Elysia는 이를Partial<{ intlayer: IntlayerContext }>로 타이핑합니다..use(intlayer())이후에 등록된 라우트에서는 런타임에 값이 항상 존재하므로,strict모드의 TypeScript를 만족시키려면 non-null 어서션(intlayer!.t) 또는 옵셔널 체이닝을 사용하세요.
동일한 헬퍼는 독립 export로도 제공되므로, 라우트 컨텍스트를 구조 분해하지 않고도 호출할 수 있습니다:
src/index.ts
코드 복사
코드를 클립보드에 복사
설명
이 플러그인은 다음 작업을 수행합니다:
- 로케일 감지: 클라이언트가 명시적으로 설정한 로케일을 스토리지(쿠키, 헤더)에서 읽고, 그다음
Accept-Language헤더에서 협상된 로케일로 폴백합니다. - 컨텍스트 주입: Elysia 라우트 컨텍스트에
intlayer속성을 추가합니다 (아래 라우트 컨텍스트 표 참조). - 사전 준비: 플러그인이 생성될 때
prepareIntlayer를 호출하므로, 앱이 부팅될 때 사전이 빌드됩니다.
라우트 컨텍스트
테이블의 모든 내용 표시
테이블을 모달로 열어 모든 데이터를 명확하게 확인
| 속성 | 타입 | 설명 |
|---|---|---|
locale | Locale | 이 요청에 사용할 로케일이며, locale_storage가 locale_detected보다 우선합니다. |
locale_storage | Locale (선택) | 쿠키 또는 헤더를 통해 클라이언트가 명시적으로 요청한 로케일. |
locale_detected | Locale | 요청 헤더에서 협상된 로케일. |
defaultLocale | Locale | intlayer.config.ts에 폴백으로 설정된 로케일. |
t | TranslateFunction | 번역 함수. |
getIntlayer | typeof getIntlayer | 키로 사전을 가져오는 함수. |
getDictionary | typeof getDictionary | 사전 객체를 처리하는 함수. |
독립 헬퍼는 플러그인이 처리하는 요청 외부에서 호출되면 설정된 기본 로케일로 폴백합니다.
로케일 결정 순서
기본적으로 플러그인은 다음 순서로 로케일을 결정합니다:
INTLAYER_LOCALE쿠키.x-intlayer-locale헤더.Accept-Language헤더 협상.- 설정된
defaultLocale.
bash
코드 복사
코드를 클립보드에 복사
설정
플러그인은 intlayer.config.ts 파일을 읽습니다. 로케일 감지에 사용되는 쿠키와 헤더를 커스터마이즈할 수 있습니다:
intlayer.config.ts
코드 복사
코드를 클립보드에 복사
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
defaultLocale: Locales.ENGLISH,
},
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
설정에 대한 자세한 내용은 설정 문서를 참고하세요.
