이 페이지와 원하는 AI 어시스턴트를 사용하여 문서를 요약합니다
Intlayer MCP 서버를 통해 ChatGPT, DeepSeek, Cursor, VSCode 등에서 직접 문서를 검색할 수 있습니다.
MCP 서버 문서 보기버전 기록
- 문서 업데이트v5.5.112025. 11. 19.
- 히스토리 초기화v5.5.102025. 6. 29.
이 페이지의 콘텐츠는 AI를 사용하여 번역되었습니다.
영어 원본 내용의 최신 버전을 보기이 문서를 개선할 아이디어가 있으시면 GitHub에 풀 리퀘스트를 제출하여 자유롭게 기여해 주세요.
문서에 대한 GitHub 링크문서의 Markdown을 클립보드에 복사
Intlayer를 사용하여 Vite 및 Svelte 웹사이트 번역하기 | 국제화(i18n)
목차
Intlayer란 무엇인가요?
Intlayer는 현대 웹 애플리케이션에서 다국어 지원을 간소화하기 위해 설계된 혁신적인 오픈 소스 국제화(i18n) 라이브러리입니다.
Intlayer를 사용하면 다음을 할 수 있습니다:
- 컴포넌트 수준에서 선언적 사전을 사용하여 번역을 쉽게 관리할 수 있습니다.
- 메타데이터, 라우트, 콘텐츠를 동적으로 현지화할 수 있습니다.
- 자동 생성된 타입으로 TypeScript 지원을 보장하여 자동 완성 및 오류 감지를 향상시킵니다.
- 동적 로케일 감지 및 전환과 같은 고급 기능을 활용할 수 있습니다.
Vite와 Svelte 애플리케이션에서 Intlayer 설정 단계별 가이드
GitHub에서 애플리케이션 템플릿을 확인하세요.
1단계: 의존성 설치
npm을 사용하여 필요한 패키지를 설치하세요:
npm install intlayer svelte-intlayernpm install vite-intlayer --save-devintlayer
구성 관리, 번역, 콘텐츠 선언, 트랜스파일링 및 CLI 명령어를 위한 국제화 도구를 제공하는 핵심 패키지입니다.
svelte-intlayer Intlayer를 Svelte 애플리케이션과 통합하는 패키지입니다. Svelte 국제화를 위한 컨텍스트 프로바이더와 훅을 제공합니다.
vite-intlayer Intlayer를 Vite 번들러와 통합하기 위한 Vite 플러그인과, 사용자의 선호 로케일 감지, 쿠키 관리, URL 리디렉션 처리를 위한 미들웨어를 포함합니다.
2단계: 프로젝트 구성
애플리케이션의 언어를 구성하기 위한 설정 파일을 생성합니다:
코드를 클립보드에 복사
import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // 다른 로케일들 ], defaultLocale: Locales.ENGLISH, },};export default config;이 구성 파일을 통해 로컬라이즈된 URL, 미들웨어 리디렉션, 쿠키 이름, 콘텐츠 선언의 위치 및 확장자 설정, 콘솔에서 Intlayer 로그 비활성화 등 다양한 설정을 할 수 있습니다. 사용 가능한 모든 매개변수 목록은 구성 문서를 참조하세요.
Step 3: Vite 구성에 Intlayer 통합하기
intlayer 플러그인을 구성에 추가하세요.
코드를 클립보드에 복사
import { defineConfig } from "vite";import { svelte } from "@sveltejs/vite-plugin-svelte";import { intlayer } from "vite-intlayer";// https://vitejs.dev/config/export default defineConfig({ plugins: [svelte(), intlayer()],});intlayer() Vite 플러그인은 Intlayer를 Vite와 통합하는 데 사용됩니다. 이 플러그인은 콘텐츠 선언 파일의 빌드를 보장하고 개발 모드에서 이를 모니터링합니다. 또한 Vite 애플리케이션 내에서 Intlayer 환경 변수를 정의하며, 성능 최적화를 위한 별칭(alias)도 제공합니다.
4단계: 콘텐츠 선언하기
번역을 저장하기 위해 콘텐츠 선언을 생성하고 관리하세요:
코드를 클립보드에 복사
import { t, type Dictionary } from "intlayer";const appContent = { key: "app", content: { title: t({ en: "Hello World", fr: "Bonjour le monde", es: "Hola mundo", }), },} satisfies Dictionary;export default appContent;콘텐츠 선언은 애플리케이션 내 어디서든 contentDir 디렉토리(기본값: ./src)에 포함되기만 하면 정의할 수 있습니다. 그리고 콘텐츠 선언 파일 확장자(기본값: .content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx})와 일치해야 합니다.
자세한 내용은 콘텐츠 선언 문서를 참조하세요.
5단계: 코드에서 Intlayer 사용하기
코드를 클립보드에 복사
<script> import { useIntlayer } from "svelte-intlayer"; const content = useIntlayer("app");</script><div><!-- 간단한 콘텐츠로 렌더링 --><h1>{$content.title}</h1><!-- 에디터를 사용하여 편집 가능한 콘텐츠로 렌더링 --><h1><svelte:component this={$content.title} /></h1><!-- 문자열로 콘텐츠 렌더링 --><div aria-label={$content.title.value}></div>(선택 사항) 6단계: 콘텐츠 언어 변경하기
코드를 클립보드에 복사
<script lang="ts">import { getLocaleName } from 'intlayer';import { useLocale } from 'svelte-intlayer';// 로케일 정보와 setLocale 함수 가져오기const { locale, availableLocales, setLocale } = useLocale();// 로케일 변경 처리const changeLocale = (event: Event) => { const target = event.target as HTMLSelectElement; const newLocale = target.value; setLocale(newLocale);};</script><div> <select value={$locale} on:change={changeLocale}> {#each availableLocales ?? [] as loc} <option value={loc}> {getLocaleName(loc)} </option> {/each} </select></div>(선택 사항) 7단계: 마크다운 렌더링
Intlayer는 Svelte 애플리케이션에서 마크다운 콘텐츠를 직접 렌더링하는 것을 지원합니다. 기본적으로 마크다운은 일반 텍스트로 처리됩니다. 마크다운을 풍부한 HTML로 변환하려면 @humanspeak/svelte-markdown 또는 다른 마크다운 파서를 통합할 수 있습니다.
intlayer 패키지를 사용하여 마크다운 콘텐츠를 선언하는 방법은 마크다운 문서를 참조하세요.
코드를 클립보드에 복사
<script> import { setIntlayerMarkdown } from "svelte-intlayer"; setIntlayerMarkdown((markdown) => // 마크다운 콘텐츠를 문자열로 렌더링합니다 return markdown; );</script><h1>{$content.markdownContent}</h1>content.markdownContent.metadata.xxx 속성을 사용하여 마크다운 프론트매터 데이터에도 접근할 수 있습니다.
(선택 사항) 8단계: intlayer 에디터 / CMS 설정하기
intlayer 에디터를 설정하려면 intlayer 에디터 문서를 따라야 합니다.
intlayer CMS를 설정하려면 intlayer CMS 문서를 따라야 합니다.
병행하여, Svelte 애플리케이션에서는 레이아웃이나 애플리케이션의 루트에 다음 라인을 추가해야 합니다:
코드를 클립보드에 복사
import { useIntlayerEditor } from "svelte-intlayer";useIntlayerEditor();(선택 사항) 7단계: 애플리케이션에 지역화된 라우팅 추가하기
Svelte 애플리케이션에서 지역화된 라우팅을 처리하려면, svelte-spa-router와 Intlayer의 localeFlatMap을 함께 사용하여 각 로케일에 대한 라우트를 생성할 수 있습니다.
먼저, svelte-spa-router를 설치하세요:
npm install svelte-spa-router그런 다음, 라우트를 정의하기 위해 Router.svelte 파일을 생성하세요:
코드를 클립보드에 복사
<script lang="ts">import { localeFlatMap } from "intlayer";import Router from "svelte-spa-router";import { wrap } from "svelte-spa-router/wrap";import App from "./App.svelte";const routes = Object.fromEntries( localeFlatMap(({locale, urlPrefix}) => [ [ urlPrefix || '/', wrap({ component: App as any, props: { locale, }, }), ], ]));</script><Router {routes} />main.ts 파일을 업데이트하여 App 대신 Router 컴포넌트를 마운트하세요:
코드를 클립보드에 복사
import { mount } from "svelte";import Router from "./Router.svelte";const app = mount(Router, {typescript fileName="src/main.ts" target: document.getElementById("app")!,});export default app;마지막으로, App.svelte를 업데이트하여 locale prop을 받고 useIntlayer와 함께 사용하세요:
코드를 클립보드에 복사
<script lang="ts">import type { Locale } from 'intlayer';import { useIntlayer } from 'svelte-intlayer';import Counter from './lib/Counter.svelte';import LocaleSwitcher from './lib/LocaleSwitcher.svelte';export let locale: Locale;$: content = useIntlayer('app', locale);</script><main> <div class="locale-switcher-container"> <LocaleSwitcher currentLocale={locale} /> </div> <!-- ... 앱의 나머지 부분 ... --></main>서버 사이드 라우팅 구성 (선택 사항)
병행하여, intlayerProxy를 사용하여 애플리케이션에 서버 사이드 라우팅을 추가할 수도 있습니다. 이 플러그인은 URL을 기반으로 현재 로케일을 자동으로 감지하고 적절한 로케일 쿠키를 설정합니다. 로케일이 지정되지 않은 경우, 플러그인은 사용자의 브라우저 언어 설정을 기반으로 가장 적합한 로케일을 결정합니다. 로케일이 감지되지 않으면 기본 로케일로 리디렉션합니다.
intlayerProxy를 프로덕션에서 사용하려면 vite-intlayer 패키지를 devDependencies에서 dependencies로 변경해야 합니다.
코드를 클립보드에 복사
import { defineConfig } from "vite";import { svelte } from "@sveltejs/vite-plugin-svelte";import { intlayer, intlayerProxy } from "vite-intlayer";typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"import { defineConfig } from "vite";import { svelte } from "@sveltejs/vite-plugin-svelte";import { intlayer, intlayerProxy } from "vite-intlayer";// https://vitejs.dev/config/export default defineConfig({ plugins: [svelte(), intlayer(), intlayerProxy()],});(선택 사항) 8단계: 로케일이 변경될 때 URL 변경하기
사용자가 언어를 전환하고 URL을 그에 맞게 업데이트할 수 있도록 LocaleSwitcher 컴포넌트를 만들 수 있습니다. 이 컴포넌트는 intlayer의 getLocalizedUrl과 svelte-spa-router의 push를 사용합니다.
코드를 클립보드에 복사
<script lang="ts">import { getLocaleName, getLocalizedUrl } from "intlayer";import { useLocale } from "svelte-intlayer";import { push } from "svelte-spa-router";export let currentLocale: string | undefined = undefined;// 로케일 정보 가져오기const { locale, availableLocales } = useLocale();// 로케일 변경 처리const changeLocale = (event: Event) => { const target = event.target as HTMLSelectElement; const newLocale = target.value; const currentUrl = window.location.pathname; const url = getLocalizedUrl( currentUrl, newLocale); push(url);};</script><div class="locale-switcher"> <select value={currentLocale ?? $locale} onchange={changeLocale}> {#each availableLocales ?? [] as loc} <option value={loc}> {getLocaleName(loc)} </option> {/each} </select></div>Git 구성
Intlayer가 생성하는 파일은 Git 저장소에 커밋하지 않도록 무시하는 것이 좋습니다.
이를 위해 .gitignore 파일에 다음 지침을 추가할 수 있습니다:
# Intlayer가 생성하는 파일 무시.intlayerVS Code 확장 프로그램
Intlayer 개발 경험을 향상시키기 위해 공식 Intlayer VS Code 확장 프로그램을 설치할 수 있습니다.
이 확장 프로그램은 다음을 제공합니다:
- 번역 키에 대한 자동 완성 기능.
- 누락된 번역에 대한 실시간 오류 감지.
- 번역된 콘텐츠의 인라인 미리보기.
- 번역을 쉽게 생성하고 업데이트할 수 있는 빠른 작업.
확장 프로그램 사용 방법에 대한 자세한 내용은 Intlayer VS Code 확장 프로그램 문서를 참조하세요.