์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
๋ฒ์ ๊ธฐ๋ก
- "Init history"v5.5.102025. 6. 29.
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Intlayer ๋ฌธ์
๊ณต์ Intlayer ๋ฌธ์์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค! ์ด๊ณณ์์ Next.js, React, Vite, Express ๋๋ ๊ธฐํ JavaScript ํ๊ฒฝ ๋ฑ ์ด๋์์ ์์ ํ๋ ๋ชจ๋ ๊ตญ์ ํ(i18n) ์๊ตฌ ์ฌํญ์ ์ํด Intlayer๋ฅผ ํตํฉ, ๊ตฌ์ฑ ๋ฐ ๋ง์คํฐํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ฐพ์ ์ ์์ต๋๋ค.
์๊ฐ
Intlayer๋ ๋ฌด์์ธ๊ฐ์?
Intlayer๋ JavaScript ๊ฐ๋ฐ์๋ฅผ ์ํด ํน๋ณํ ์ค๊ณ๋ ๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ฝ๋ ๋ด ์ด๋์์๋ ์ฝํ ์ธ ๋ฅผ ์ ์ธํ ์ ์๋๋ก ํด์ค๋๋ค. ๋ค๊ตญ์ด ์ฝํ ์ธ ์ ์ธ์ ๊ตฌ์กฐํ๋ ์ฌ์ ์ผ๋ก ๋ณํํ์ฌ ์ฝ๋์ ์ฝ๊ฒ ํตํฉํ ์ ์๊ฒ ํฉ๋๋ค. TypeScript๋ฅผ ์ฌ์ฉํ์ฌ Intlayer๋ ๊ฐ๋ฐ์ ๋์ฑ ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค์ด ์ค๋๋ค.
Intlayer๋ ๋ํ ์ฝํ ์ธ ๋ฅผ ์ฝ๊ฒ ํธ์งํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ํด์ฃผ๋ ์ ํ์ ์ธ ์๊ฐ์ ํธ์ง๊ธฐ(visual editor)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ํธ์ง๊ธฐ๋ ์ฝํ ์ธ ๊ด๋ฆฌ์ ์๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ ํธํ๋ ๊ฐ๋ฐ์๋ ์ฝ๋์ ๋ํด ๊ฑฑ์ ํ์ง ์๊ณ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๋ ํ์ ํนํ ์ ์ฉํฉ๋๋ค.
์ฌ์ฉ ์์
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
import { t, type Dictionary } from "intlayer";
const componentContent = {
key: "component-key",
content: {
myTranslatedContent: t({
en: "Hello World",
es: "Hola Mundo",
fr: "Bonjour le monde",
ko: "์๋
์ธ์",
}),
},
} satisfies Dictionary;
export default componentContent;
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
export const MyComponent: FC = () => {
const { myTranslatedContent } = useIntlayer("component-key");
return <span>{myTranslatedContent}</span>;
};
์ ๋์๋ค๋ณด๋ค Intlayer์ธ๊ฐ์?
next-intl์ด๋ i18next์ ๊ฐ์ ์ฃผ์ ์๋ฃจ์
๊ณผ ๋น๊ตํ์ฌ Intlayer๋ ๋ค์๊ณผ ๊ฐ์ ํตํฉ๋ ์ต์ ํ๋ฅผ ์ ๊ณตํ๋ ์๋ฃจ์
์
๋๋ค:
๊ฑฐ๋ํ JSON ํ์ผ์ ํ์ด์ง์ ๋ก๋ํ๋ ๋์ ํ์ํ ์ฝํ ์ธ ๋ง ๋ก๋ํ์ธ์. Intlayer๋ ๋ฒ๋ค ๋ฐ ํ์ด์ง ํฌ๊ธฐ๋ฅผ ์ต๋ 50%๊น์ง ์ค์ฌ์ค๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ฝํ ์ธ ์ ๋ฒ์๋ฅผ ์ ํํ๋ ๊ฒ์ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ง ๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ์ ์ฒด ์ฝํ ์ธ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฒํ ํด์ผ ํ๋ ์ ์ ์ ๋ถ๋ด ์์ด ๋จ์ผ ๊ธฐ๋ฅ(feature) ํด๋๋ฅผ ๋ณต์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค. ๋ํ Intlayer๋ ์ฝํ ์ธ ์ ์ ํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์์ ํ ํ์ ํ(fully typed)๋์ด ์์ต๋๋ค.
์ฝํ ์ธ ๋ฅผ ์ฝ๋์ ๊ฐ์ ์์น์ ๋๋ฉด ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM)์ด ํ์๋ก ํ๋ ์ปจํ ์คํธ๊ฐ ์ค์ด๋ญ๋๋ค. Intlayer์๋ ๋๋ฝ๋ ๋ฒ์ญ์ ํ ์คํธํ๊ธฐ ์ํ CLI, LSP, MCP ๋ฐ agent skills ๋ฑ๊ณผ ๊ฐ์ ์ผ๋ จ์ ๋๊ตฌ๊ฐ ํจ๊ป ์ ๊ณต๋์ด AI ์์ด์ ํธ์ ๊ฐ๋ฐ์ ๊ฒฝํ(DX)์ ํจ์ฌ ๋ ๋งค๋๋ฝ๊ฒ ๋ง๋ญ๋๋ค.
์ํ๋ LLM๊ณผ AI ์ ๊ณต์์ ๋น์ฉ์ผ๋ก CI/CD ํ์ดํ๋ผ์ธ์์ ๋ฒ์ญ์ ์๋ํํ์ธ์. Intlayer๋ ์ฝํ ์ธ ์ถ์ถ์ ์๋ํํ๋ ์ปดํ์ผ๋ฌ(compiler)๋ฅผ ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฒ์ญํ ์ ์๋๋ก ๋๋ ์น ํ๋ซํผ๋ ์ ๊ณตํฉ๋๋ค.
๊ฑฐ๋ํ JSON ํ์ผ์ ์ปดํฌ๋ํธ์ ์ฐ๊ฒฐํ๋ฉด ์ฑ๋ฅ ๋ฐ ๋ฐ์์ฑ(reactivity) ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. Intlayer๋ ๋น๋ ์(build time) ์ฝํ ์ธ ๋ก๋ฉ์ ์ต์ ํํฉ๋๋ค.
๋จ์ํ i18n ์๋ฃจ์ ์ ๋์ด, Intlayer๋ ์์ฒด ํธ์คํ ๊ฐ๋ฅํ ์๊ฐ์ ํธ์ง๊ธฐ(visual editor)์ ์์ ํ CMS๋ฅผ ์ ๊ณตํ์ฌ ๋ค๊ตญ์ด ์ฝํ ์ธ ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ์ง์ํ๋ฉฐ, ๋ฒ์ญ๊ฐ, ์นดํผ๋ผ์ดํฐ ๋ฐ ๊ธฐํ ํ์๊ณผ์ ํ์ ์ ์ํํ๊ฒ ํฉ๋๋ค. ์ฝํ ์ธ ๋ ๋ก์ปฌ ๋ฐ/๋๋ ์๊ฒฉ์ ์ ์ฅ๋ ์ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
Intlayer๋ ํ๋ ์น ๊ฐ๋ฐ์ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๋๋ก ์ค๊ณ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ๊ฐ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ฌธ์๋ก์ ๋งํฌ๊ฐ ํฌํจ๋ ์ฃผ์ ๊ธฐ๋ฅ์ ๋๋ค:
- ๊ตญ์ ํ ์ง์: ๋ด์ฅ๋ ๊ตญ์ ํ ์ง์์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธ๋ก๋ฒ ๋๋ฌ ๋ฒ์๋ฅผ ๋ํ๋๋ค.
- ์๊ฐ์ ํธ์ง๊ธฐ(Visual Editor): Intlayer๋ฅผ ์ํด ์ค๊ณ๋ ํธ์ง๊ธฐ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ ํ์ธ์. ์๊ฐ์ ํธ์ง๊ธฐ ๊ฐ์ด๋๋ฅผ ํ์ธํ์ธ์.
- ๊ตฌ์ฑ์ ์ ์ฐ์ฑ: ๊ตฌ์ฑ ๊ฐ์ด๋์ ์์ธํ ์ค๋ช ๋ ํฌ๊ด์ ์ธ ๊ตฌ์ฑ ์ต์ ์ผ๋ก ์ค์ ์ ๋ง์ถคํํ์ธ์.
- ๊ณ ๊ธ CLI ๋๊ตฌ: Intlayer์ ๋ช ๋ น์ค ์ธํฐํ์ด์ค(CLI)๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ์ธ์. CLI ๋๊ตฌ ๋ฌธ์์์ ๊ธฐ๋ฅ์ ํ์ํด ๋ณด์ธ์.
ํต์ฌ ๊ฐ๋
์ฌ์ (Dictionary)
๋ค๊ตญ์ด ์ฝํ ์ธ ๋ฅผ ์ฝ๋ ๊ทผ์ฒ์ ๋ฐฐ์นํ์ฌ ๋ชจ๋ ๊ฒ์ ์ผ๊ด๋๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๊ตฌ์ฑํ์ธ์.
์์ํ๊ธฐ
Intlayer์์ ์ฝํ ์ธ ๋ฅผ ์ ์ธํ๋ ๊ธฐ๋ณธ ์ฌํญ์ ๋ฐฐ์๋๋ค.๋ฒ์ญ(Translation)
๋ฒ์ญ์ด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ป๊ฒ ์์ฑ, ์ ์ฅ, ํ์ฉ๋๋์ง ์ดํดํฉ๋๋ค.์ด๊ฑฐ(Enumeration)
์ฌ๋ฌ ์ธ์ด์ ๊ฑธ์ณ ๋ฐ๋ณต๋๊ฑฐ๋ ๊ณ ์ ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํฉ๋๋ค.์กฐ๊ฑด(Condition)
Intlayer์์ ์กฐ๊ฑด๋ถ ๋ ผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ฝํ ์ธ ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.์ฝ์ (Insertion)
์ฝ์ ์๋ฆฌ ํ์์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๊ฐ์ ์ฝ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๊ฒฌํ์ธ์.ํจ์ ํ์นญ(Function Fetching)
ํ๋ก์ ํธ์ ์ํฌํ๋ก์ฐ์ ์ผ์นํ๋๋ก ์ฌ์ฉ์ ์ ์ ๋ ผ๋ฆฌ๋ก ์ฝํ ์ธ ๋ฅผ ๋์ ์ผ๋ก ๊ฐ์ ธ์ค๋(fetch) ๋ฐฉ๋ฒ์ ํ์ธํฉ๋๋ค.๋งํฌ๋ค์ด(Markdown)
Intlayer์์ ๋งํฌ๋ค์ด์ ์ฌ์ฉํ์ฌ ํ๋ถํ ์ฝํ ์ธ ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.ํ์ผ ์๋ฒ ๋ฉ(File embeddings)
์ธ๋ถ ํ์ผ์ Intlayer์ ์๋ฒ ๋ํ์ฌ ์ฝํ ์ธ ํธ์ง๊ธฐ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๊ฒฌํ์ธ์.์ค์ฒฉ(Nesting)
Intlayer์์ ์ฝํ ์ธ ๋ฅผ ์ค์ฒฉํ์ฌ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ดํดํฉ๋๋ค.
ํ๊ฒฝ ๋ฐ ํตํฉ
์ ํฌ๋ ์ ์ฐ์ฑ์ ์ผ๋์ ๋๊ณ Intlayer๋ฅผ ๊ตฌ์ถํ์ฌ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ์ ๋น๋ ๋๊ตฌ ์ ๋ฐ์์ ์ํํ ํตํฉ์ ์ ๊ณตํฉ๋๋ค:
- Intlayer์ Next.js 16
- Intlayer์ Next.js 15
- Intlayer์ Next.js 14 (App Router)
- Intlayer์ Next.js Page Router
- Intlayer์ React CRA
- Intlayer์ Vite + React
- Intlayer์ React Router v7
- Intlayer์ Tanstack Start
- Intlayer์ React Native ๋ฐ Expo
- Intlayer์ Lynx ๋ฐ React
- Intlayer์ Vite + Preact
- Intlayer์ Vite + Vue
- Intlayer์ Nuxt
- Intlayer์ Vite + Svelte
- Intlayer์ SvelteKit
- Intlayer์ Express
- Intlayer์ NestJS
- Intlayer์ Hono
- Intlayer์ Angular
๊ฐ ํตํฉ ๊ฐ์ด๋์๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR), ๋์ ๋ผ์ฐํ , ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง๊ณผ ๊ฐ์ Intlayer์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ํฌํจ๋์ด ์์ด ๋น ๋ฅด๊ณ SEO ์นํ์ ์ด๋ฉฐ ํ์ฅ์ฑ์ด ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์งํ ์ ์์ต๋๋ค.
๊ธฐ์ฌ ๋ฐ ํผ๋๋ฐฑ
์ ํฌ๋ ์คํ ์์ค์ ์ปค๋ฎค๋ํฐ ์ฃผ๋ ๊ฐ๋ฐ์ ํ์ ์์คํ ์ฌ๊น๋๋ค. ๊ฐ์ ์ฌํญ์ ์ ์ํ๊ฑฐ๋ ์๋ก์ด ๊ฐ์ด๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๋ฌธ์์ ๋ฌธ์ ๋ฅผ ์์ ํ๋ ค๋ฉด GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์์ Pull Request๋ฅผ ์ ์ถํ๊ฑฐ๋ Issue๋ฅผ ์ด์ด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๋ฒ์ญํ ์ค๋น๊ฐ ๋์ จ๋์? ์ค๋ ๋ฐ๋ก ๋ฌธ์๋ฅผ ์ดํด๋ณด๊ณ Intlayer ์ฌ์ฉ์ ์์ํ์ธ์. ์ฝํ ์ธ ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ์งํ๊ณ ํ์ ์์ฐ์ฑ์ ๋์ด๋ ๊ฐ๋ ฅํ๊ณ ๊ฐ์ํ๋ ๊ตญ์ ํ ์ ๊ทผ ๋ฐฉ์์ ๊ฒฝํํด ๋ณด์ธ์.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Intlayer๋ JavaScript ๋ฐ TypeScript ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ๊ตญ์ ํ(i18n) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ์ปดํฌ๋ํธ์ ์ฝํ
์ธ ๋ฅผ ์ปดํฌ๋ํธ ๋ฐ๋ก ์์ .content.ts ํ์ผ์ ์ ์ธํ๋ฉด, Intlayer๊ฐ ๋น๋ ํ์์ ์ด๋ฌํ ์ ์ธ์ ํ์
์์ ํ ์ฌ์ ์ผ๋ก ์ปดํ์ผํ๋ฉฐ ์ปดํฌ๋ํธ๋ useIntlayer์ ๊ฐ์ ํ
์ ํตํด ์ด๋ฅผ ์ฝ์ต๋๋ค. ๋ฒ์ญ, ๋ณต์ํ ๊ท์น, ์ฑ๋ณ, Markdown, ๋ก์ผ์ผ ์ธ์ ๋ผ์ฐํ
, SEO ๋ฉํ๋ฐ์ดํฐ, AI ์ง์ ๋ฒ์ญ ๋ฐ ๋น๊ฐ๋ฐ์๋ฅผ ์ํ ๋น์ฃผ์ผ ์๋ํฐ๊น์ง ์ข
ํฉ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
๋ค์์คํ์ด์ค ๊ธฐ๋ฐ ์ค์ ๋ณด๋ค ํจ์ฌ ์ ์ต๋๋ค. ํ์ด์ง๋ ๋ ๋๋งํ์ง ์๋ ์ธ์ด์ ์นดํ๋ก๊ทธ๋ฅผ ์ ๋ ๋ค์ด๋ก๋ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฒ ๋ ๋๋ง ๋งํฌ์
์ ์๋ฒ์์ ์ฝํ
์ธ ๋ฅผ ํ์ธํ๊ณ , ๋น๋ ํ์ ์ปดํ์ผ๋ฌ๋ useIntlayer ํธ์ถ์ ์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉํ๋ ์ ํํ ์ฌ์ ํญ๋ชฉ์ผ๋ก ๋์ฒดํ๋ฏ๋ก ์ฌ์ฉ๋์ง ์๋ ํค์ ์ธ์ด๋ ์ ๊ฑฐ๋ฉ๋๋ค. ๋์ ์ฌ์ ์ ํตํด ๋ก์ผ์ผ๋ณ๋ก ๋ถํ ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๋์๋ค๊ณผ ๋น๊ตํ์ ๋ Intlayer๋ ๋ฒ๋ค ๋ฐ ํ์ด์ง ํฌ๊ธฐ๋ฅผ ์ต๋ 50%๊น์ง ์ค์ฌ์ค๋๋ค. ๋ฒ๋ค ์ต์ ํ์ ๋ฒค์น๋งํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค, ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. i18next ๋ง์ด๊ทธ๋ ์ด์
๊ฐ์ด๋ ๋๋ next-intl ๋ง์ด๊ทธ๋ ์ด์
๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ์ด์ ํ ์ ์์ต๋๋ค. ๋๋ ํ์ฌ API๋ฅผ ์์ ํ ์ ์งํ ์๋ ์์ต๋๋ค: ํธํ ์ด๋ํฐ(compat adapters)๋ i18next, react-i18next, next-intl, next-i18next, react-intl, use-intl, vue-i18n ๋ฐ Lingui์ ์์ ํ ๋์ผํ API๋ฅผ ๋
ธ์ถํ๋ฉด์ Intlayer ์ฌ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ฏ๋ก, import ๊ตฌ๋ฌธ๋ง ๋ณ๊ฒฝํ๊ณ ์ปดํฌ๋ํธ ์ฝ๋๋ ๊ทธ๋๋ก ์ ์งํ ์ ์์ต๋๋ค.
๋ค. sync JSON ํ๋ฌ๊ทธ์ธ์ /messages/{locale}/{namespace}.json ํ์ผ์ ๋จ์ผ ์ง์ค ๊ณต๊ธ์(source of truth)์ผ๋ก ์ ์งํ๋ฉด์ ์๋ฐฉํฅ์ผ๋ก Intlayer ์ฌ์ ์ ์์ฑํฉ๋๋ค. sync PO ํ๋ฌ๊ทธ์ธ์ gettext ์นดํ๋ก๊ทธ์ ๋ํด ๋์ผํ ์์
์ ์ํํ๋ฉฐ, ๋ก์ผ์ผ๋ณ ํ์ผ์ ํตํด ๋ก์ผ์ผ์ ํ ํ์ผ์ ๋ชจ์ผ๋ ๋์ ์ธ์ด๋ณ๋ก ์ฝํ
์ธ ๋ฅผ ๋ถํ ํ ์๋ ์์ต๋๋ค.
์๋๋๋ค. npx intlayer extract๋ฅผ ์คํํ๋ฉด Intlayer๊ฐ ์์ค ํ์ผ์ ์ฝ๊ณ ์ฌ์ฉ์ ๋๋ฉด ๋ฌธ์์ด์ ์ถ์ถํ์ฌ ๊ฐ ์ปดํฌ๋ํธ ์์ .content ํ์ผ์ ์์ฑํ๋ฏ๋ก ์นดํ๋ก๊ทธ์ ์ผ์ผ์ด ๋ณต์ฌํ ํ์ ์์ด diff๋ง ๊ฒํ ํ๋ฉด ๋ฉ๋๋ค. extract ๋ช
๋ น์ ์ฐธ์กฐํ์ธ์.
์์ ์๋ํ๋ ํ์ดํ๋ผ์ธ์ ์ํด Intlayer ์ปดํ์ผ๋ฌ๋ ๋น๋ ํ์์ JSX, TSX, Vue ๋ฐ Svelte ์์ค์์ ๋์ผํ ์์ ์ ์ํํ์ฌ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ฌ์ ์ ์์ฑํ๊ณ HMR์ ํตํด ๋๊ธฐํํ๋ฏ๋ก ์๋์ผ๋ก ํค๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค. ์ ์ ๋ถ์์ผ๋ก ์๋ํ๋ฏ๋ก ๋ฐํ์์๋ง ์กด์ฌํ๋ ๋ฌธ์์ด์ ์ ์ธ๋๋ฉฐ, ์ฌ์ฉ์ ํ ์คํธ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ฃผ์์ด ํ์ํฉ๋๋ค.
5๊ฐ์ง ๋๊ตฌ๊ฐ ๋ชจ๋ ์ ํ ์ฌํญ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค:
- VS Code ํ์ฅ ํ๋ก๊ทธ๋จ:
useIntlayerํค์์ ์ด๋ฅผ ์ ์ธํ ์ฝํ ์ธ ํ์ผ๋ก ๋ฐ๋ก ์ด๋ํ๊ณ , ์ปดํฌ๋ํธ์์ ์ฝํ ์ธ ๋ฅผ ์ถ์ถํ๋ฉฐ, ๋ช ๋ น ํ๋ ํธ๋ ์ ์ฉ Intlayer ํญ์์ build, fill, test, push, pull์ ์คํํ ์ ์์ต๋๋ค. - LSP ์๋ฒ: LSP๋ฅผ ์ง์ํ๋ ๋ชจ๋ ์๋ํฐ์์ ์ ์๋ก ์ด๋, ๋ชจ๋ ์ฐธ์กฐ ์ฐพ๊ธฐ, ๋ฒ์ญ ๊ฐ ๋ง์ฐ์ค ์ค๋ฒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ํค ๋ฐ ํ๋ ์๋ ์์ฑ, ์ ์ธ๋์ง ์์ ํค์ ๋ํ ๊ฒฝ๊ณ ๋ฑ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ํ
i18next,react-i18next,next-intl,use-intlํธ์ถ๋ ํด์ํ๋ฏ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์ ์ฉํฉ๋๋ค. - MCP ์๋ฒ: Cursor, VS Code, Claude Desktop, Claude Code, ChatGPT์ Intlayer ๋ฌธ์์ CLI๋ฅผ ๋
ธ์ถํ์ฌ AI ์ด์์คํดํธ๊ฐ ์ต์ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํํ ๋ต๋ณํ๊ณ
intlayer fill๋ฑ์ ๋ช ๋ น์ ์ง์ ์คํํ ์ ์๊ฒ ํฉ๋๋ค. - Agent Skills:
intlayer-config,intlayer-cli,intlayer-content๋ฐ ๊ฐ ํ๋ ์์ํฌ ์ ์ฉ ์คํฌ์ ํตํด AI ์์ด์ ํธ์๊ฒ ๋ผ์ฐํ ์ค์ ๊ณผ ์ฝํ ์ธ ๋ ธ๋ ํ์ ์ ํ์ต์ํต๋๋ค. - ESLint ํ๋ฌ๊ทธ์ธ:
no-raw-text๊ท์น์ผ๋ก ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด์ ํ์ํ๊ณ , ์ ์ ์ฌ์ ํค ๋ฐ ์ฌ์ฉ๋์ง ์๋ ์ฝํ ์ธ ์ ๋ํ ์ถ๊ฐ ๊ท์น์ ์ ๊ณตํฉ๋๋ค.
