์ด ํ์ด์ง์๋ ์ ํ๋ฆฌ์ผ์ด์ ํ ํ๋ฆฟ์ด ์ ๊ณต๋ฉ๋๋ค.
์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
๋ฒ์ ๊ธฐ๋ก
- "Solid useIntlayer API ์ฌ์ฉ๋ฒ์ ์ง์ ์์ฑ ์ก์ธ์ค๋ก ์
๋ฐ์ดํธ"v8.9.02026. 5. 4.
- "init ๋ช
๋ น์ด ์ถ๊ฐ"v7.6.02025. 12. 31.
- "ํ์คํ ๋ฆฌ ์ด๊ธฐํ"v7.6.02025. 12. 31.
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Intlayer๋ฅผ ์ฌ์ฉํ์ฌ Fastify ๋ฐฑ์๋ ์น์ฌ์ดํธ ๋ฒ์ญํ๊ธฐ | ๊ตญ์ ํ (i18n)
fastify-intlayer๋ Fastify ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ๊ฐ๋ ฅํ ๊ตญ์ ํ(i18n) ํ๋ฌ๊ทธ์ธ์ผ๋ก, ํด๋ผ์ด์ธํธ์ ๊ธฐ๋ณธ ์ค์ ์ ๋ฐ๋ผ ํ์งํ๋ ์๋ต์ ์ ๊ณตํ์ฌ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ ์ธ๊ณ์์ ์ก์ธ์คํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค.
GitHub์์ ํจํค์ง ๊ตฌํ ํ์ธํ๊ธฐ.
์ค์ ์ฌ์ฉ ์ฌ๋ก
- ์ฌ์ฉ์ ์ธ์ด๋ก ๋ฐฑ์๋ ์ค๋ฅ ํ์: ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ฌ์ฉ์์ ๋ชจ๊ตญ์ด๋ก ๋ฉ์์ง๋ฅผ ํ์ํ๋ฉด ์ดํด๋๊ฐ ๋์์ง๊ณ ๋ถ๋ง์ด ์ค์ด๋ญ๋๋ค. ์ด๋ ํ ์คํธ(toast)๋ ๋ชจ๋ฌ(modal)๊ณผ ๊ฐ์ ํ๋ก ํธ์๋ ๊ตฌ์ฑ ์์์ ํ์๋ ์ ์๋ ๋์ ์ค๋ฅ ๋ฉ์์ง์ ํนํ ์ ์ฉํฉ๋๋ค.
- ๋ค๊ตญ์ด ์ฝํ ์ธ ๊ฒ์: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฝํ ์ธ ๋ฅผ ๊ฐ์ ธ์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ๊ตญ์ ํ๋ฅผ ํตํด ์ฌ๋ฌ ์ธ์ด๋ก ํด๋น ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ ํธํ๋ ์ธ์ด๋ก ์ ํ ์ค๋ช , ๊ธฐ์ฌ ๋ฐ ๊ธฐํ ์ฝํ ์ธ ๋ฅผ ํ์ํด์ผ ํ๋ ์ ์์๊ฑฐ๋ ์ฌ์ดํธ๋ ์ฝํ ์ธ ๊ด๋ฆฌ ์์คํ ๊ณผ ๊ฐ์ ํ๋ซํผ์ ํ์์ ์ ๋๋ค.
- ๋ค๊ตญ์ด ์ด๋ฉ์ผ ์ ์ก: ํธ๋์ญ์ ์ด๋ฉ์ผ, ๋ง์ผํ ์บ ํ์ธ ๋๋ ์๋ฆผ ๋ฑ ์์ ์์ ์ธ์ด๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด๋ฉด ์ฐธ์ฌ๋์ ํจ๊ณผ๋ฅผ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค.
- ๋ค๊ตญ์ด ํธ์ ์๋ฆผ: ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์ ํธํ๋ ์ธ์ด๋ก ํธ์ ์๋ฆผ์ ๋ณด๋ด๋ฉด ์ํธ ์์ฉ๊ณผ ์ ์ง์จ์ ๋์ผ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ์ธํ๋ ํฐ์น๋ ์๋ฆผ์ ๋ ๊ด๋ จ์ฑ ์๊ณ ์คํ ๊ฐ๋ฅํ๊ฒ ๋๋ผ๊ฒ ํ ์ ์์ต๋๋ค.
- ๊ธฐํ ํต์ : SMS ๋ฉ์์ง, ์์คํ ์๋ฆผ ๋๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ ๋ฐ์ดํธ์ ๊ฐ์ ๋ฐฑ์๋์ ๋ชจ๋ ํต์ ํํ๋ ์ฌ์ฉ์์ ์ธ์ด๋ก ์ ๊ณต๋จ์ผ๋ก์จ ๋ช ํ์ฑ์ ๋ณด์ฅํ๊ณ ์ ๋ฐ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๋ฐฑ์๋๋ฅผ ๊ตญ์ ํํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌธํ์ ์ฐจ์ด๋ฅผ ์กด์คํ ๋ฟ๋ง ์๋๋ผ ๊ธ๋ก๋ฒ ์์ฅ์ ์๊ตฌ์ ๋ ์ ๋ถ์ํ๊ฒ ๋์ด ์๋น์ค๋ฅผ ์ ์ธ๊ณ๋ก ํ์ฅํ๋ ๋ฐ ์ค์ํ ๋จ๊ณ๊ฐ ๋ฉ๋๋ค.
์์ํ๊ธฐ
GitHub์์ ์ ํ๋ฆฌ์ผ์ด์ ํ ํ๋ฆฟ์ ํ์ธํ์ธ์.
์ค์น
fastify-intlayer ์ฌ์ฉ์ ์์ํ๋ ค๋ฉด npm์ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ์ค์นํ์ธ์.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
--interactiveํ๋๊ทธ๋ ์ ํ ์ฌํญ์ ๋๋ค. AI ์์ด์ ํธ์ธ ๊ฒฝ์ฐintlayer-cli init๋ฅผ ์ฌ์ฉํ์ธ์.
์ด ๋ช ๋ น์ ํ๊ฒฝ์ ๊ฐ์งํ๊ณ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ค์
ํ๋ก์ ํธ ๋ฃจํธ์ intlayer.config.ts๋ฅผ ์์ฑํ์ฌ ๊ตญ์ ํ ์ค์ ์ ๊ตฌ์ฑํ์ธ์.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [
Locales.ENGLISH,
Locales.FRENCH,
Locales.SPANISH_MEXICO,
Locales.SPANISH_SPAIN,
],
defaultLocale: Locales.ENGLISH,
},
};
export default config;
์ฝํ ์ธ ์ ์ธ
๋ฒ์ญ์ ์ ์ฅํ๊ธฐ ์ํด ์ฝํ ์ธ ์ ์ธ์ ์์ฑํ๊ณ ๊ด๋ฆฌํ์ธ์.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
import { t, type Dictionary } from "intlayer";
const indexContent = {
key: "index",
content: {
exampleOfContent: t({
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyรฉ en franรงais",
"es-ES": "Ejemplo de contenido devuelto en espaรฑol (Espaรฑa)",
"es-MX": "Ejemplo de contenido devuelto en espaรฑol (Mรฉxico)",
}),
},
} satisfies Dictionary;
export default indexContent;
์ฝํ ์ธ ์ ์ธ์contentDir๋๋ ํฐ๋ฆฌ(๊ธฐ๋ณธ๊ฐ./src)์ ํฌํจ๋์ด ์๋ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ ๊ณณ์์๋ ์ ์ํ ์ ์์ต๋๋ค. ๋ํ ์ฝํ ์ธ ์ ์ธ ํ์ผ ํ์ฅ์(๊ธฐ๋ณธ๊ฐ.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml})์ ์ผ์นํด์ผ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์ฝํ ์ธ ์ ์ธ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Fastify ์ ํ๋ฆฌ์ผ์ด์ ์ค์
fastify-intlayer๋ฅผ ์ฌ์ฉํ๋๋ก Fastify ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์ ํ์ธ์.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
import Fastify from "fastify";
import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
import dictionaryExample from "./index.content";
const fastify = Fastify({ logger: true });
// ๊ตญ์ ํ ํ๋ฌ๊ทธ์ธ ๋ก๋
await fastify.register(intlayer);
// ๋ผ์ฐํธ
fastify.get("/t_example", async (_req, reply) => {
return t({
en: "Example of returned content in English",
fr: "Exemple de contenu renvoyรฉ en franรงais",
"es-ES": "Ejemplo de contenido devuelto en espaรฑol (Espaรฑa)",
"es-MX": "Ejemplo de contenido devuelto en espaรฑol (Mรฉxico)",
});
});
fastify.get("/getIntlayer_example", async (_req, reply) => {
return getIntlayer("index").exampleOfContent;
});
fastify.get("/getDictionary_example", async (_req, reply) => {
return getDictionary(dictionaryExample).exampleOfContent;
});
// ์๋ฒ ์์
const start = async () => {
try {
await fastify.listen({ port: 3000 });
} catch (err) {
fastify.log.error(err);
process.exit(1);
}
};
start();
ํธํ์ฑ
fastify-intlayer๋ ๋ค์๊ณผ ์๋ฒฝํ๊ฒ ํธํ๋ฉ๋๋ค:
- React ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ
react-intlayer - Next.js ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ
next-intlayer - Vite ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ
vite-intlayer
๋ํ ๋ธ๋ผ์ฐ์ ๋ฐ API ์์ฒญ์ ํฌํจํ ๋ค์ํ ํ๊ฒฝ์ ๋ชจ๋ ๊ตญ์ ํ ์๋ฃจ์ ๊ณผ ์ํํ๊ฒ ์๋ํฉ๋๋ค. ํค๋๋ ์ฟ ํค๋ฅผ ํตํด ๋ก์ผ์ผ์ ๊ฐ์งํ๋๋ก ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
// ... ๊ธฐํ ๊ตฌ์ฑ ์ต์
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
๊ธฐ๋ณธ์ ์ผ๋ก fastify-intlayer๋ Accept-Language ํค๋๋ฅผ ํด์ํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ์ธ์ด๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๊ตฌ์ฑ ๋ฐ ๊ณ ๊ธ ์ฃผ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฌธ์๋ฅผ ๋ฐฉ๋ฌธํ์ธ์.
TypeScript ๊ตฌ์ฑ
fastify-intlayer๋ ๊ตญ์ ํ ํ๋ก์ธ์ค๋ฅผ ํฅ์์ํค๊ธฐ ์ํด TypeScript์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํฉ๋๋ค. TypeScript์ ์ ์ ํ์ดํ์ ๋ชจ๋ ๋ฒ์ญ ํค๊ฐ ๊ณ ๋ ค๋๋๋ก ๋ณด์ฅํ์ฌ ๋ฒ์ญ ๋๋ฝ์ ์ํ์ ์ค์ด๊ณ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํต๋๋ค.
์๋ ์์ฑ๋ ์ ํ(๊ธฐ๋ณธ๊ฐ ./types/intlayer.d.ts)์ด tsconfig.json ํ์ผ์ ํฌํจ๋์ด ์๋์ง ํ์ธํ์ธ์.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
VS Code ํ์ฅ ํ๋ก๊ทธ๋จ
Intlayer ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ ํ๋ ค๋ฉด ๊ณต์ Intlayer VS Code Extension์ ์ค์นํ ์ ์์ต๋๋ค.
VS Code Marketplace์์ ์ค์นํ๊ธฐ
์ด ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ค์์ ์ ๊ณตํฉ๋๋ค:
- ๋ฒ์ญ ํค์ ๋ํ ์๋ ์์ฑ.
- ๋ฒ์ญ ๋๋ฝ์ ๋ํ ์ค์๊ฐ ์ค๋ฅ ๊ฐ์ง.
- ๋ฒ์ญ๋ ์ฝํ ์ธ ์ ์ธ๋ผ์ธ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ.
- ๋ฒ์ญ์ ์ฝ๊ฒ ์์ฑํ๊ณ ์ ๋ฐ์ดํธํ ์ ์๋ ๋น ๋ฅธ ์์ .
ํ์ฅ ํ๋ก๊ทธ๋จ ์ฌ์ฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ Intlayer VS Code Extension ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Git ๊ตฌ์ฑ
Intlayer์์ ์์ฑ๋ ํ์ผ์ ๋ฌด์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฅผ ํตํด Git ์ ์ฅ์์ ์ปค๋ฐํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ํด .gitignore ํ์ผ์ ๋ค์ ์ง์นจ์ ์ถ๊ฐํ ์ ์์ต๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ผ๋ฐ์ ์ธ ์ต์
์ fastify-i18next ๋๋ ์ง์ ์์ฑํ ํ
๊ณผ ํจ๊ป i18next๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก, ๋ค์์คํ์ด์ค๋ณ๋ก JSON ์นดํ๋ก๊ทธ๋ฅผ ๋ก๋ํ๊ณ ์์ฒญ์ ๋ก์ผ์ผ์ ์ ์ฅํฉ๋๋ค. ๋์์ fastify-intlayer๋ฅผ ํตํ Intlayer๋ก, ํ๋ฌ๊ทธ์ธ์ ์๋์ผ๋ก ๋ฑ๋กํ๊ณ ์์ฒญ๋ณ๋ก ๋ก์ผ์ผ์ ํ์ธํ๋ฉฐ ํ๋ก ํธ์๋์ ๋์ผํ ํ์
์ ์ ์ฝํ
์ธ ๋ฅผ ๊ณต์ ํฉ๋๋ค.
๋ฐฑ์๋๋ฅผ ๊ตญ์ ํํด์ผ ํ๋ ์ด์ ๋ ์ฌ์ฉ์๊ฐ ์ฝ๋ ํ ์คํธ์ ์๋น ๋ถ๋ถ์ด ํ๋ก ํธ์๋๋ฅผ ๊ฑฐ์น์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค: API ์ค๋ฅ ๋ฉ์์ง, ํธ๋์ญ์ ์ด๋ฉ์ผ, ํธ์ ์๋ฆผ, SMS ๋ฐ PDF ๋ด๋ณด๋ด๊ธฐ ๋ฑ์ด ์ฌ๊ธฐ์ ํด๋นํฉ๋๋ค. ์ด๋ฌํ ํ ์คํธ๋ ์ธ์ ์ด ์๋ ์์ฒญ๋ณ๋ก ์์ ์์ ์ธ์ด๊ฐ ํ์ธ๋์ด์ผ ํฉ๋๋ค.
์ Intlayer์ธ๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋งค์ฐ ์ ์ต๋๋ค. ์ฌ์ ์ ์ฌ์ ์ ์ปดํ์ผ๋๋ฉฐ ์ ์ธํ ๋ก์ผ์ผ๋ง ํฌํจ๋๋ฏ๋ก ๋ถํ ์ ์นดํ๋ก๊ทธ ๋ก๋ฉ์ด๋ ์์ฒญ ๊ฒฝ๋ก์์์ ํ์ผ ์ฝ๊ธฐ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด๋ ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์ฝ๋ ์คํํธ ์๊ฐ์ ์ข์ฐํ๋ ์๋ฒ๋ฆฌ์ค ๋ฐ ์ฃ์ง ๋ฐฐํฌ ํ๊ฒฝ์์ ํนํ ์ค์ํฉ๋๋ค. ๋ฒ๋ค ์ต์ ํ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค, ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. i18next ๋ง์ด๊ทธ๋ ์ด์
๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ์ด์ ํ ์ ์์ต๋๋ค. ๋๋ ํ์ฌ API๋ฅผ ์์ ํ ์ ์งํ ์๋ ์์ต๋๋ค: ํธํ ์ด๋ํฐ(compat adapters)๋ i18next์ ์์ ํ ๋์ผํ 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 ์์ค์์ ์ฌ์ ์ ์์ฑํ๋ฏ๋ก ์ฑ์ ๋ ์์ญ์ด ์๋ ํค ๊ด๋ฆฌ ์์ด ๋จ์ผ ์ฝํ ์ธ ๋ ์ด์ด๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
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๊ท์น์ผ๋ก ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด์ ํ์ํ๊ณ , ์ ์ ์ฌ์ ํค ๋ฐ ์ฌ์ฉ๋์ง ์๋ ์ฝํ ์ธ ์ ๋ํ ์ถ๊ฐ ๊ท์น์ ์ ๊ณตํฉ๋๋ค.
