์ด ํ์ด์ง์๋ ์ ํ๋ฆฌ์ผ์ด์ ํ ํ๋ฆฟ์ด ์ ๊ณต๋ฉ๋๋ค.
์ด ํ์ด์ง๋ ํ ํ๋ฆฟ์ ๋ผ์ด๋ธ ๋ฐ๋ชจ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
๋ฒ์ ๊ธฐ๋ก
- "Update Solid useIntlayer API usage to direct property access"v8.9.02026. 5. 4.
- "Update compiler options, add FilePathPattern support"v8.2.02026. 3. 9.
- "Initial release"v8.1.62026. 2. 23.
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
๊ธฐ์กด Vite ๋ฐ React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌํ์ ๋ค๊ตญ์ด(i18n)ํํ๋ ๋ฐฉ๋ฒ (2026 ๊ฐ์ด๋)
์ฒ์๋ถํฐ Vite ๋ฐ React ํ๋ก์ ํธ์ ๊ตญ์ ํ(i18n)๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค. ํ์ง๋ง ์ด๋ฏธ ๋จ์ผ ์ธ์ด๋ก ๊ตฌ์ถ๋์ด ๋ฐฐํฌ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌํ์ ๋ค๊ตญ์ด๋ฅผ ์ ์ฉํด์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
react-i18next๋ react-intl ๊ฐ์ ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ณธ ๊ฐ๋ฐ์๋ผ๋ฉด ๊ทธ ๋ฒ๊ฑฐ๋ก์์ ์ ์๊ณ ์์ต๋๋ค:
- ์๋ฐฑ ๊ฐ์ JSX ๋ฐ TSX ํ์ผ์์ ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด์ ์ผ์ผ์ด ์ฐพ์๋ด๊ธฐ.
- ์ค์ฒฉ๋ JSON ๋์
๋๋ฆฌ๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ๋ฒ์ญ ํค(
components.header.title๋ฑ)๋ฅผ ์์๋ก ์๋ช ํ๊ธฐ. - UI ํ
์คํธ๋ฅผ ๋ฒ๊ฑฐ๋ก์ด ํ
(
t('...'))์ผ๋ก ๊ต์ฒดํ๊ธฐ. - ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํ , ์ํ ๊ด๋ฆฌ ๋ฐ ์ธ์ด ์ ํ ๋ก์ง์ ์ฌ๊ตฌ์ฑํ๊ธฐ.
2026๋ ์๋ ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค. Intlayer๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ํ ์คํธ ์ถ์ถ, AI ๋ฒ์ญ ๋ฐ ๋งค๋๋ฌ์ด Vite ํตํฉ์ ํตํด ๋จ ๋ช ๋ถ ๋ง์ ๊ธฐ์กด Vite ๋ฐ React ์ฑ์ ๋ค๊ตญ์ด๋ฅผ ๋์ ํ ์ ์์ต๋๋ค.
Vite ๋ฐ React์ ๋ํ ๋จ๊ณ๋ณ ๊ธฐ์ ๊ฐ์ด๋๋ฅผ ์ฐพ๊ณ ๊ณ์ ๊ฐ์? ์ ์ฉ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์: Intlayer๋ก Vite ๋ฐ React ๋ฒ์ญํ๊ธฐ.
๋ชฉ์ฐจ
์ฌํ ์ ์ฉ์ ๋๋ ๋ง: ๊ธฐ์กด ์ฑ์ ๋ค๊ตญ์ด๋ฅผ ์ถ๊ฐํ๊ธฐ ํ๋ ์ด์
๊ธฐ์กด Vite ๋ฐ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตญ์ ํ๋ฅผ ์ ์ฉํ ๋ ๊ฐ๋ฐ์๋ ์ธ ๊ฐ์ง ํฐ ์ฅ์ ๋ฌผ์ ์ง๋ฉดํฉ๋๋ค:
- ์ฝ๋๋ฒ ์ด์ค ์ค์ผ: ๋ฌธ์์ด์ ์๋์ผ๋ก JSON ๋์ ๋๋ฆฌ์ ์ถ์ถํ๋ ค๋ฉด ๊ฑฐ์ ๋ชจ๋ ์ปดํฌ๋ํธ ํ์ผ์ ์์ ํด์ผ ํฉ๋๋ค. ์ด๋ ๋๊ท๋ชจ Git diff, ๋ณํฉ ์ถฉ๋ ์ํ ๋ฐ ํ๋ฉด ๊นจ์ง ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํฉ๋๋ค.
- ๋ฒ์ญ ํค ๊ด๋ฆฌ ๋ถ๋ด: ํ
์คํธ ์กฐ๊ฐ๋ง๋ค
dashboard.hero.ctaButton๊ณผ ๊ฐ์ ํค๋ฅผ ์๋ช ํ๋ ๊ฒ์ ๊ฐ๋ฐ ์๋๋ฅผ ๋ฆ์ถ๊ณ ๋ฌธ๊ตฌ๊ฐ ๋ฐ๋ ๋๋ง๋ค ์ธ์ง์ ๋ถ๋ด์ ์ค๋๋ค. - ์ง๋ฃจํ ๋ฒ์ญ ์์ : ๋ฌธ์์ด์ ์ถ์ถํ ํ 5๊ฐ, 10๊ฐ ๋๋ 20๊ฐ ์ธ์ด๋ก ๋์ ๋๋ฆฌ๋ฅผ ์ฑ์ฐ๋ ค๋ฉด ๋์๋ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๋ ๊ฐ๋น์ผ ์ธ๋ถ ๋ฒ์ญ ์๋น์ค๊ฐ ํ์ํฉ๋๋ค.
Intlayer๋ ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ ์๋ ์ถ์ถ, ์ปดํฌ๋ํธ ๋จ์ ์ ์ธ์ ๋์ ๋๋ฆฌ, ๊ทธ๋ฆฌ๊ณ Vite์์ ์๋ฒฝํ ํตํฉ์ ํตํด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ํด๊ฒฐํฉ๋๋ค.
์๋ ์ฝํ ์ธ ์ถ์ถ (์๋ ๋ฌธ์์ด ํ์ ๋ถํ์)
JSX์์ ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด์ ์ผ์ผ์ด ๋ณต์ฌํ ํ์ ์์ด, Intlayer๋ ๋ ๊ฐ์ง ํธ๋ฆฌํ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค:
์ต์
A: CLI ์ถ์ถ ๋๊ตฌ (npx intlayer extract)
์ฝ๋๋ฒ ์ด์ค์์ ๋ฐ๋ก Intlayer์ ์ถ์ถ ๋๊ตฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ด ๋ช
๋ น์ด๋ React ์ปดํฌ๋ํธ๋ฅผ ํ์ฑํ๊ณ ์ฌ์ฉ์์๊ฒ ํ์๋๋ ํ
์คํธ๋ฅผ ๊ฐ์งํ์ฌ ์ปดํฌ๋ํธ ํ์ผ ๋ฐ๋ก ์์ ์ฝํ
์ธ ์ ์ธ ํ์ผ(.content.ts)์ ์๋ ์์ฑํฉ๋๋ค. ์ปดํฌ๋ํธ ๋ก์ง์ ์ ์ธ์ ์ด๊ณ ๋ช
ํํ๋ฉฐ ํ์
์์ ํ๊ฒ ์ ์ง๋๋ฉฐ, ๋ฒ์ญ ํค๋ฅผ ์์ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค.
์ต์ B: Intlayer ์ปดํ์ผ๋ฌ (๋น๋ ํ์ ์๋ ์ถ์ถ)
์ค์ ์์ Intlayer ์ปดํ์ผ๋ฌ๋ฅผ ํ์ฑํํ๋ฉด ๊ธฐ๋ณธ ์ธ์ด์ ์ผ๋ฐ ํ ์คํธ๋ก ์ปดํฌ๋ํธ๋ฅผ ํ์์ฒ๋ผ ๊ณ์ ์์ฑํ ์ ์์ต๋๋ค. ๋น๋ ์ ์ปดํ์ผ๋ฌ๊ฐ ํ ์คํธ๋ฅผ ์ถ์ถํ๊ณ ์ง์ญํ๋ ์ฝํ ์ธ ๋ฅผ ์๋์ผ๋ก ์ฃผ์ ํฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
๋ฐฑ๊ทธ๋ผ์ด๋์์ Intlayer๊ฐ ๋์ ๋๋ฆฌ๋ฅผ ๋น๋ํ๊ณ ์ปดํฌ๋ํธ๋ฅผ ์ง์ญํ๋ ์ฝํ ์ธ ์ ์๋์ผ๋ก ์ฐ๊ฒฐํ๋ฏ๋ก ์๋ ๋ฆฌํฉํ ๋ง ๋จ๊ณ๊ฐ ์์ ํ ์๋ต๋ฉ๋๋ค.
์ด ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ์ src/App.content.ts ์ ์ธ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ ํธํ๋ LLM์ ํ์ฉํ AI ์๋ ๋ฒ์ญ
์ฝํ ์ธ ๊ฐ ์ถ์ถ๋ ํ ์์ญ ๊ฐ ์ธ์ด๋ก ๋ฒ์ญํ๋ ๋ฐ ๋ฉฐ์น ์ฉ ๊ฑธ๋ฆด ํ์๊ฐ ์์ต๋๋ค. Intlayer์๋ ์์ฒด API ํค๋ฅผ ์ฌ์ฉํ์ฌ OpenAI, Anthropic, DeepSeek, Mistral๊ณผ ์ง์ ์ฐ๋๋๋ AI ๋ฒ์ญ CLI๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
intlayer.config.ts์์ ์ง์ํ ๋ก์ผ์ผ๊ณผ AI ์ ๊ณต์๋ฅผ ์ค์ ํฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
npx intlayer fill์ ์คํํ๋ฉด ์ค์ ๋ ๋ชจ๋ ๋ก์ผ์ผ์ ๋ํด ๊ณ ํ์ง ๋ฒ์ญ์ด ์ฝํ
์ธ ์ ์ธ ํ์ผ์ ์ฑ์์ง๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Intlayer๊ฐ ๋ชจ๋ธ์ applicationContext๋ฅผ ์ ๊ณตํ๋ฏ๋ก ์์ฑ๋ ๋ฒ์ญ์ ์ผ๋ฐ ๊ธฐ๊ณ ๋ฒ์ญ๋ณด๋ค ๊ธฐ์ ์ ๋งฅ๋ฝ, ๋ธ๋๋ ๋ณด์ด์ค ๋ฐ ๋ฌธ๋ฒ์ ๋ํ
์ผ์ ํจ์ฌ ๋ ์ ํํ๊ฒ ์ ์งํฉ๋๋ค.
๋ฐฐํฌ ์ ๋๋ฝ๋ ํ ์คํธ๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Vite ํตํฉ ๋ฐ Provider ์ค์
Vite์ Intlayer๋ฅผ ํตํฉํ๋ ๊ฒ์ vite.config.ts์ ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๊ณ ๋ฃจํธ ์ปดํฌ๋ํธ๋ฅผ IntlayerProvider๋ก ๊ฐ์ธ๋ ๊ฒ๋ง์ผ๋ก ์๋ฃ๋ฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Intlayer v9๋ถํฐ ์ปดํ์ผ๋ฌ๋intlayer()ํ๋ฌ๊ทธ์ธ์ ๋ด์ฅ๋์ด ์์ดintlayer.config.ts์compiler.enabled๋ฅผ ์ค์ ํ๋ฉด ์๋์ผ๋ก ํ์ฑํ๋ฉ๋๋ค.
๋ฃจํธ ์ปดํฌ๋ํธ์์ ์ ํ๋ฆฌ์ผ์ด์
์ IntlayerProvider๋ก ๊ฐ์ธ์ค๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
๋์ ์ธ์ด ์ ํ
useLocale ํ
์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ด๋์์๋ ๊ฐํธํ๊ฒ ์ธ์ด๋ฅผ ์ ํํ ์ ์์ต๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
๋ค๊ตญ์ด SEO (Sitemap ๋ฐ Robots.txt)
Intlayer๋ ์ ์ Vite ๋ฐฐํฌ ํ๊ฒฝ์ ์ํด ํฌ๋กค๋ฌ ์นํ์ ์ธ sitemap.xml ๋ฐ robots.txt๋ฅผ ์์ฑํ๋ generateSitemap ๋ฐ getMultilingualUrls์ ๊ฐ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
package.json์ prebuild ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ์ฌ vite build ์ ์ ์คํ๋๋๋ก ์ค์ ํฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฌ์ธต ๊ฐ์ด๋: ๋จ๊ณ๋ณ ์ค์ ์ด ์ค๋น๋์ จ๋์?
์ด ๊ฐ์ด๋๋ 2026๋ ์ ๋๊ท๋ชจ ๋ฆฌํฉํ ๋ง ์์ด ๊ธฐ์กด Vite ๋ฐ React ์ฑ์ ๋ค๊ตญ์ดํํ๋ ์ ๋ฐ์ ์ธ ๊ฐ๋ ์ ์๊ฐํ์ต๋๋ค.
์๊ฒฉํ TypeScript ํ์ ์์ ์ฑ, ๋์ ๋์ ๋๋ฆฌ ๋ฐ ๋น์ฃผ์ผ ์๋ํฐ๋ฅผ ํฌํจํ ๋ชจ๋ ์ค์ ๋จ๊ณ๋ฅผ ์์ธํ ํ์ธํ๋ ค๋ฉด ๊ณต์ ๊ธฐ์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์:
๐ Intlayer๋ฅผ ํ์ฉํ Vite ๋ฐ React ๋ฒ์ญ ์ ์ฒด ๊ฐ์ด๋
์์ฃผ ๋ฌป๋ ์ง๋ฌธ (FAQ)
๋ค. npx intlayer extract๋ฅผ ์คํํ์ฌ ํ๋์ฝ๋ฉ๋ ํ
์คํธ๋ฅผ ์ง์ญํ๋ ์ฝํ
์ธ ์ ์ธ ํ์ผ๋ก ์๋ ์ถ์ถํ๊ฑฐ๋, Intlayer ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ์ ์ปดํฌ๋ํธ๋ฅผ ์๋ ๋ณํํ๋ฉด์ ํ์ค JSX๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Intlayer๋ ์ปดํฌ๋ํธ๋ณ ๋์ ๋๋ฆฌ ์ ์์ ๋น๋ ํ์ ๋งคํฌ๋ก ์ต์ ํ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฑฐ๋ํ JSON ํ์ผ์ ํ ๋ฒ์ ๋ถ๋ฌ์ค๋ ๋์ ํ์ฌ ํ๋ฉด์ ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฒ๋ค์ ํฌํจ๋ฉ๋๋ค. ๋์ ๋์ ๋๋ฆฌ๋ฅผ ํตํด ์ธ์ด๋ณ ์ง์ฐ ๋ก๋ฉ๋ ๊ฐ๋ฅํฉ๋๋ค.
๋ค. Intlayer CLI์ npx intlayer fill ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์ ๋ AI ์ ๊ณต์(OpenAI, Anthropic, Mistral, DeepSeek)์ ์ฐ๋ํ์ฌ ํ๋ก์ ํธ ์ ์ฒด์์ ๋๋ฝ๋ ์ธ์ด ๋ฒ์ญ์ ๋ฌธ๋งฅ์ ๋ง๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
๋ค. Intlayer๋ react-i18next ๋ฐ react-intl์ ์ํ ํธํ ์ด๋ํฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ธฐ์กด JSON ๋ฒ์ญ ํ์ผ์ ๋๊ธฐํํ ์ ์๋ ์ ์ฉ ํ๋ฌ๊ทธ์ธ(sync-json)๋ ์ ๊ณตํฉ๋๋ค.
๋๊ธ
์์ง ๋๊ธ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ก ์๊ฒฌ์ ๋๋ ๋ณด์ธ์.
