์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
2026๋ ์๋ vue-i18n์ ๊ณ์ ์จ์ผ ํ ๊น์?
Vue ์ํ๊ณ์์ vue-i18n๋งํผ ์๋์ ์ธ ์ ์ ์จ์ ๊ธฐ๋กํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋๋ญ
๋๋ค. Vue 2 ์์ ๋ถํฐ Kazupon์ ์ฃผ๋ํ์ ์ฑ์ฅํด ์์ผ๋ฉฐ, @nuxtjs/i18n์ ๊ธฐ๋ฐ์ด์ ๋ค๊ตญ์ด ์ง์ Vue ํ๋ก์ ํธ์ ์ฌ์ค์ ํ์ค์ด์์ต๋๋ค.
๊ทธ๋ฌ๋ 2026๋
๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ๋ ๋๋ผ์ด ์ฌ์ค์ ๋๋ฌ๋์ต๋๋ค. vue-i18n์ ํ
์คํธํ ๋ชจ๋ ์ฃผ์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ ์ค ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ์ง์ญํ ๋ฐํ์์ด์์ต๋๋ค.
Vite + Vue ๊ธฐ๋ฐ์ ๊ฐ๋ฒผ์ด ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์
(31.5 KB)์ vue-i18n์ ์ถ๊ฐํ์, ํ์ด์ง๋น ํ๊ท JavaScript ํฌ๊ธฐ๊ฐ 136.4 KB๋ก 4๋ฐฐ ์ด์ ์น์์์ต๋๋ค.
๋ณธ๋ ๊ฐ๋ณ๊ณ ๊ธฐ๋ฏผํ ํ๋ ์์ํฌ๋ก ์ฌ๋๋ฐ๋ Vue์์, ์ i18n ๋๊ตฌ๋ง ์ดํ ๋ก ๋น๋ํด์ก์๊น์? ๊ทธ๋ฆฌ๊ณ ์์ ๋ฐํ์ ๋ชจ๋ธ์ ์ค๋๋ ์๋ ์ ํจํ ๊น์?
ํต์ฌ ์์ฝ
ํ ์คํธ ๋์ ์ค ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ๋ฐํ์:
ํ
์คํธ๋ฅผ ์ถ๊ฐํ๊ธฐ๋ ์ ์ ์ด๋ฏธ 24.3 KB (gzip ๊ธฐ์ค, Minified ์ 83.2 KB)์ ํฌ๊ธฐ๋ฅผ ์ฐจ์งํ์ฌ, intlayer ์ฝ์ด ๋ฐํ์(2.7 KB) ๋๋น ์ฝ 9๋ฐฐ ๋ฌด๊ฒ์ต๋๋ค.
ํ์ด์ง ํ์ด๋ก๋ 330% ์ฆ๊ฐ:
vue-i18n์ 31.5 KB์ ๋ถ๊ณผํ๋ ๊ธฐ๋ณธ Vue ํ์ด์ง๋ฅผ 136.4 KB๋ก ๋๋ ค๋์์ต๋๋ค. ๋ฐ๋ฉด Intlayer๋ 59.3 KB์ ๊ทธ์ณ 56% ๋ ๊ฐ๋ฒผ์ด ํ์ด๋ก๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ก ๋ฒ๋ค๋ง๋๋ ์ปดํ์ผ๋ฌ:
๋ฒ๋ค๋ฌ์ ํน์ ๋ณ์นญ(alias)์ ์๋ ์ค์ ํ์ง ์๋ ํ, vue-i18n์ ๋ธ๋ผ์ฐ์ ์์ ํ
์คํธ๋ฅผ ์ค์๊ฐ ํ์ฑํ๊ธฐ ์ํด ์ ์ฒด ๋ฉ์์ง ์ปดํ์ผ๋ฌ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ์ ์กํฉ๋๋ค.
์ ์ง๋ณด์ ์ถ์ธ:
์ง๋ 1๋
๊ฐ vue-i18n์ ์ฝ 259๊ฐ์ ์ปค๋ฐ์ ๊ธฐ๋กํ์ผ๋, ๋๋ถ๋ถ ๋ฒ๊ทธ ์์ ๊ณผ Vue ๋ง์ด๋ ๋ฒ์ ๋์์ ์ง์ค๋์์ต๋๋ค.
๊ณต์ ํ๋์ ๋๊ตฌ์ ๋ถ์ฌ:
๊ณต์ Language Server (LSP), AI์ฉ MCP ์๋ฒ, CLI ๊ธฐ๋ฐ ์๋ ๋ฒ์ญ ๋ฑ ์ฐจ์ธ๋ ์ํฌํ๋ก์ฐ๋ฅผ ์ํ ๋๊ตฌ๊ฐ ๋ถ์กฑํฉ๋๋ค.
์ ์ง๋ณด์ vs. ํ๋์ ๋๊ตฌ ๋น๊ต
ํ ์ด๋ธ์ ๋ชจ๋ฌ๋ก ์ด์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ช ํํ๊ฒ ํ์ธ
์ต๊ทผ 12๊ฐ์ ํ๋ ๋น๊ต:
intlify/vue-i18n: 259 ์ปค๋ฐ (Vue 3 ๋ฐ Nuxt ์ ์ง๋ณด์ ์์ฃผ).aymericzip/intlayer: 4,343 ์ปค๋ฐ (์ปดํ์ผ๋ฌ ๊ณ ๋ํ, LSP ๋๊ตฌ, AI ์์ด์ ํธ ์ฐ๋ ์์ ๋ฑ ์ง์ ๊ฐ๋ฐ).
- intlify/vue-i18n
- aymericzip/intlayer
๊ธฐ๋ณธ ๋ธ๋์น์ ์ปค๋ฐ ์, ์ถ์ฒ: GitHub API.
์ค๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค. ํ์ง๋ง ์ค๋๋ ์ ํ๋ก ํธ์๋๋ ๋น๋ ํ์ AST ๋ณํ, ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ, AI ์๋ํ์ ๊ธฐ๋ฐํ๊ณ ์์ต๋๋ค. ๋ฐํ์์ ์ข ์๋ ๊ตฌ์กฐ๋ก๋ ์ด๋ฌํ ํ์ ์ ์จ์ ํ ๋ฐ๋ผ์ก๊ธฐ ์ด๋ ต์ต๋๋ค.
์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋์์ ์๋์ง ์ดํดํ๋ ค๋ฉด JavaScript i18n์ ์ญ์ฌ๋ฅผ ์ฝ์ด๋ณด์ธ์.
npm ๋ค์ด๋ก๋
- vue-i18n
- vue-intlayer
์ถ์ฒ: npm ๋ ์ง์คํธ๋ฆฌ ๋ค์ด๋ก๋ API.
๋ค์ด๋ก๋ ์๋ ๊ฐ์ฅ ์ข์ ์๋ฃจ์ ์ด ์๋๋ผ ๊ฐ์ฅ ์ค๋๋ ์๋ฃจ์ ์ ๋ณด์์ ์ค๋๋ค. ์๋ ์ ์ ์ถ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋น์ ์ด๋ฅผ ์ ํํ ๋ชจ๋ ํ๋ก์ ํธ, ๋ชจ๋ CI ์คํ, ์ด์ ์์กดํ๋ ๋ชจ๋ ํจํค์ง์ ์ํด ์ฌ์ ํ ์ค์น๋ฉ๋๋ค. ์ด ์์น๋ ์๋ก์ด ์ ํ๋ณด๋ค ๊ด์ฑ์ ์ธก์ ํฉ๋๋ค.
AI ์ด์์คํดํธ๋ ์ด ํจ๊ณผ๋ฅผ ๋ ํค์๋๋ค. next-intl, i18next, vue-i18n์ AI๊ฐ ํ์ตํ ์ฝ๋ ๊ณณ๊ณณ์ ์์ผ๋ฏ๋ก, AI๋ ๋์์ ๋น๊ตํ์ง ์๊ณ ์ด๋ค์ ๊ธฐ๋ณธ์ผ๋ก ์ถ์ฒํฉ๋๋ค. ์ถ์ฒ์ด ๋ค์ด๋ก๋๋ฅผ ๋๋ฆฌ๊ณ , ๊ทธ ๋ค์ด๋ก๋๊ฐ ๋ค์ ์ถ์ฒ์ ๋ถ์ถ๊น๋๋ค. ๋ค์ด๋ก๋ ์๊ฐ ์๋๋ผ ๋ฒค์น๋งํฌ๋ก ๋น๊ตํ์ธ์.
Vite + Vue ์ฑ๋ฅ ์ธก์ ๊ฒฐ๊ณผ
Vite ๋ฐ Vue 3 ๊ธฐ๋ฐ 10๊ฐ ํ์ด์ง, 10๊ฐ ์ธ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ธก์ :
์ธก์ ํญ๋ชฉ
๋์ JSON ๋ก๋
๋ฐํ์์ ๋ฒ์ญ์ ์ง์ฐ ๋ก๋ํฉ๋๋ค
๋ฒ์๊ฐ ์ง์ ๋ JSON (๋ค์์คํ์ด์ฑ)
ํ์ด์ง๋ณ ๋ฒ์ญ ๋ค์์คํ์ด์ค
์ด ์ธก์ ํญ๋ชฉ์ ๋ฌด์์ธ๊ฐ์?
๊ตญ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ๋ค์ ์ด gzip ์์ถ ํฌ๊ธฐ์ ๋๋ค. ์ฌ๊ธฐ์๋ ํธ๋ฆฌ ์์ดํน ๋ฐ ๋ฏธ๋ํผ์ผ์ด์ ํ์ ํ๋ก๋ฐ์ด๋ ๋ฐ ์ฝํ ์ธ ๊ฒ์ ๋ก์ง๋ง ํฌํจ๋ฉ๋๋ค.
์ ์ค์ํ๊ฐ์?
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ์ด๊ธฐ JavaScript ํ์ด๋ก๋๊ฐ ์ค์ด๋ค์ด ํด๋ผ์ด์ธํธ์์ ๋ค์ด๋ก๋ ๋ฐ ์คํ ์๊ฐ์ด ๋นจ๋ผ์ง๋๋ค.
๋ณด๊ธฐ ํ์
ํ๋ก๋์ gzip ์์ถ์ ์ ์ฉํ์ฌ ์ค์ ๋ธ๋ผ์ฐ์ ์์ ์ธก์ ํ์ต๋๋ค. ์ธ๋ถ ์ฌํญ์ Vue ๋ฒค์น๋งํฌ ๋ฌธ์์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๊ธฐ ์ค๋ฒํค๋
๋ฒ์ญ ํ ์คํธ๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ ์ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌ๊ธฐ:
ํ ์ด๋ธ์ ๋ชจ๋ฌ๋ก ์ด์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ช ํํ๊ฒ ํ์ธ
| ๋ผ์ด๋ธ๋ฌ๋ฆฌ | Gzip ๊ธฐ์ค | Minified ๊ธฐ์ค |
|---|---|---|
vue-i18n@11.4.0 | 24.3 KB | 83.2 KB |
intlayer@8.7.12 | 2.7 KB | 7.6 KB |
vue-i18n์ ๋ฐํ์ ์์ง๋ง์ผ๋ก 24.3 KB (gzip)์ ๋ฌํด Vue ์ฝ์ด ์ ์ฒด ํฌ๊ธฐ์ ๋ง๋จน์ต๋๋ค. ๋ฐ๋ฉด Intlayer๋ ๋จ 2.7 KB๋ง ์ฐจ์งํฉ๋๋ค.
ํ์ด์ง ํฌ๊ธฐ ๋ฐ ๋ถํ์ํ ๋ฒ์ญ ๋์
ํ ์ด๋ธ์ ๋ชจ๋ฌ๋ก ์ด์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ช ํํ๊ฒ ํ์ธ
| ๊ตฌ์ฑ | ํ๊ท ํ์ด์ง JS (gz) | ํ ์ธ์ด ๋์์จ | ํ ํ์ด์ง ๋์์จ | ํ๊ท ์ปดํฌ๋ํธ (gz) |
|---|---|---|---|---|
| ๊ธฐ๋ณธ(i18n ์์) | 31.5 KB | 0.0% | 90.0% | 0.9 KB |
vue-i18n | 136.4 KB | 50.2% | 90.0% | 196.0 KB |
| Intlayer | 59.3 KB | 51.1% | 0.0% | 6.5 KB |
์ธก์ ์ฃผ์ ๊ฒฐ๊ณผ
๋์ ์๋์ ์ฆ๊ฐ์จ:
Vue ํ๋ ์์ํฌ ์์ฒด์ ๊ธฐ๋ณธ ํฌ๊ธฐ๊ฐ ์๋ ์๊ธฐ ๋๋ฌธ์(~31 KB), vue-i18n์ ๋์
ํ๋ฉด ํ์ด์ง ํ์ด๋ก๋๊ฐ 4๋ฐฐ ์ด์ ์ปค์ง๋๋ค.
ํ ํ์ด์ง๋ก์ ๋ฒ์ญ ๋ฐ์ดํฐ ๋์:
๊ธฐ๋ณธ ์ค์ ์ํ์์๋ ํน์ ๋ผ์ฐํธ์ ๋ด๋ ค์ค๋ ํ ์คํธ ๋ฐ์ดํฐ์ 90%๊ฐ ๋ค๋ฅธ ํ์ด์ง์ฉ์ ๋๋ค. Intlayer๋ ์ด๋ฅผ ์์ ํ ์ ๊ฑฐํ์ฌ ๋์์จ 0.0%๋ฅผ ๊ธฐ๋กํ์ต๋๋ค.
๊ฐ๋ณ ์ปดํฌ๋ํธ์ ๋น๋ํ:
์ฌ์ ์ด ๋ฐ๋ณต ๋ณต์ ๋๋ฉด์ vue-i18n์ ์ง์ญ ์ค์ฝํ ์ปดํฌ๋ํธ ํฌ๊ธฐ๋ ํ๊ท 196 KB๊น์ง ์น์์์ผ๋, Intlayer์์๋ 6.5 KB์ ๋ถ๊ณผํ์ต๋๋ค.
๋์๊ฐ ์ปค์ง๋ ๋ฐฉ์:
์๋ ๊ทธ๋ํ๋ 110๊ฐ์ ํ์ด์ง๋ฅผ 110๊ฐ ์ธ์ด๋ก ๋ฒ์ญํ ์ด๋ก ์์ ์ฑ(ํ์ด์ง๋น ์ฝ 30KB์ ํ
์คํธ)์ ์ฝํ
์ธ ์ฉ๋์ ์ถ์ ํ ๊ฒ์
๋๋ค. ๋ก์ผ์ผ๋ณ ๋์ ๋ก๋ฉ์ ์ธ์ด ์ถ์ ์์ ๊ณ , ์ปดํฌ๋ํธ๋ ๋ผ์ฐํธ ๋จ์๋ก ์ฝํ
์ธ ๋ฅผ ์ค์ฝํํ๋ฉด ํ์ด์ง ์ถ์ด ์์ด์ง๋ฉฐ, ๋ ๊ฐ์ง๋ฅผ ๊ฒฐํฉํ์ ๋๋ง ์ฉ๋์ด ์ผ์ ํ๊ฒ ์ ์ง๋ฉ๋๋ค.

vue-i18n์ด ๋ฌด๊ฑฐ์ด ์ด์
๋ธ๋ผ์ฐ์ ๋ก ์ ์ก๋๋ AST ์ปดํ์ผ๋ฌ
vue-i18n์ ์์ฒด ๋ฉ์์ง ํ์ ์ปดํ์ผ๋ฌ๋ฅผ ๋ด์ฅํ๊ณ ์์ต๋๋ค. ๋ณต์ํ ๊ท์น์ด๋ ๋ณ์ ์นํ ๋ก์ง์ด ๋ธ๋ผ์ฐ์ ๋ฐํ์์์ AST(์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ)๋ก ์ค์๊ฐ ๋ณํ๋ฉ๋๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ๋ฒ๋ค๋ฌ์์ vue-i18n/dist/vue-i18n.runtime.esm-bundler.js๋ก ๋ณ์นญ์ ์ง์ ํ๊ณ @intlify/unplugin-vue-i18n์ ํตํด ์ฌ์ ์ปดํ์ผ์ ์ํํด์ผ ํ์ง๋ง, ๋ง์ ํ๋ก์ ํธ์์ ์ด ๊ณผ์ ์ด ์๋ต๋ฉ๋๋ค.
๋ชจ๋๋ฆฌ์ ๊ธฐ๋ฅ ๊ตฌ์กฐ
๋ ์ง ๋ฐ ์ซ์ ํฌ๋งคํฐ, ๋งํฌ๋ ๋ฉ์์ง, ๋ ๊ฑฐ์ Options API ์ง์ ๋ธ๋ฆฌ์ง($t, v-t), ๋ฐ์ํ ํ๋ก์๊ฐ ๋ชจ๋ ํฌํจ๋์ด ์์ต๋๋ค. <script setup> ๋ด์์ ๋จ์ ํ
์คํธ๋ง ํ์ํ๊ณ ์ถ๋๋ผ๋ ์ ์ฒด ์์คํ
์ด ํจ๊ป ๋ก๋๋ฉ๋๋ค.
๋์ ํค๋ก ์ธํ ํธ๋ฆฌ ์์ดํน ์ฐจ๋จ
"home.hero.title" ํค๊ฐ ๋ฐํ์์ ํ๊ฐ๋๋ฏ๋ก ๋ฒ๋ค๋ฌ๋ ์ค์ ๋ก ์ฐ์ด๋ ํ
์คํธ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค. ์ฐ์ด์ง ์๋ ๋ฌธ๊ตฌ๋ ๋ฒ๋ค์ ๋จ์ ์๊ฒ ๋ฉ๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Intlayer ์ปดํ์ผ๋ฌ๋ ์ปดํฌ๋ํธ๊ฐ ์ ๊ทผํ๋ ํ๋กํผํฐ๋ฅผ ๋ช ํํ ํ์ ํ์ฌ ํด๋ผ์ด์ธํธ ๋ฒ๋ค ์์ฑ ์ ์ ๋ฏธ์ฌ์ฉ ๋ฒ์ญ์ ์์ ํ๊ฒ ๋ฐฐ์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฒ๋ค ์ต์ ํ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ฐ๋ฐ์ ๊ฒฝํ (DX) ๋น๊ต
๊ฒฉ๋ฆฌ๋ JSON ํด๋ vs. ์ปดํฌ๋ํธ์ ํจ๊ป ๋ฐฐ์น
vue-i18n์์๋ ํ
์คํธ๊ฐ ๋ฉ๋ฆฌ ๋จ์ด์ง locales/ ๋๋ ํฐ๋ฆฌ์ ๋จธ๋ญ
๋๋ค. Intlayer๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ ํ์ผ ๋ฐ๋ก ์์ ์ฝํ
์ธ ํ์ผ์ ์ ์ธํ ์ ์์ต๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Hero.vue๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ด๋ํ๋ฉด ํด๋น ์ฝํ
์ธ ์ ์ธ ํ์ผ๋ ์์ฐ์ค๋ฝ๊ฒ ํจ๊ป ๊ด๋ฆฌ๋ฉ๋๋ค.
์๋ํฐ ์๋์์ฑ vs. ์๊ฒฉํ ์์ ์ฑ ๋ณด์ฅ
DefineLocaleMessage๋ฅผ ํตํด ๊ธฐ๋ณธ ์คํค๋ง ๊ธฐ์ค์ ์๋์์ฑ์ ์ง์๋ฉ๋๋ค. ํ์ง๋ง ๋ชจ๋ ์ธ์ด์ ์๊ฒฐ์ฑ์ ๋ณด์ฅํ์ง๋ ๋ชปํฉ๋๋ค. ko.json์์ ํค๋ฅผ ์ง์๋ TypeScript ๋น๋๊ฐ ๋ฉ์ถ์ง ์์ต๋๋ค.
Intlayer๋ ์ฌ์ ์ ์๊ฒฉํ๊ฒ ๊ฒ์ฆํฉ๋๋ค. strictMode๋ฅผ ํ์ฑํํ๋ฉด ์ด๋ค ์ธ์ด์์๋ ๋ฒ์ญ์ด ๋๋ฝ๋ ๊ฒฝ์ฐ ์ฆ๊ฐ ๋น๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
IDE ๋ฐ AI ๋๊ตฌ ์ง์
ํ ์ด๋ธ์ ๋ชจ๋ฌ๋ก ์ด์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ช ํํ๊ฒ ํ์ธ
| ๊ธฐ๋ฅ | vue-i18n | Intlayer |
|---|---|---|
| VS Code ํ์ฅ ํ๋ก๊ทธ๋จ | ์๋ํํฐ (i18n Ally) | โ ๊ณต์ ํ์ฅ ํ๋ก๊ทธ๋จ |
| Language Server (LSP) | โ ์์ | โ ์ ์ฉ LSP |
| AI์ฉ MCP ์๋ฒ | โ ์์ | โ ๋ด์ฅ MCP ์๋ฒ |
| ์์ด์ ํธ ์คํฌ ์ธํธ | โ ์์ | โ ์์จ ์์ด์ ํธ ์คํฌ |
| ์ธ์ปจํ ์คํธ ๋น์ฃผ์ผ CMS | โ ์์ | โ ๋ฌด๋ฃ ์คํ์์ค CMS |
๋ฒ์ญ ์ํฌํ๋ก์ฐ
vue-i18n์๋ ์์ฒด์ ์ธ ๋ฒ์ญ ์์ฑ ๋ช
๋ น์ด๊ฐ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ ํ์ผ์ Crowdin์ด๋ Phrase ๊ฐ์ ์ธ๋ถ ํ๋ซํผ์ผ๋ก ๋ด๋ณด๋ด์ผ ํฉ๋๋ค.
Intlayer๋ ์์ ํ ๋ค์ดํฐ๋ธ ๋๊ตฌ๋ฅผ ๊ธฐ๋ณธ ์ ๊ณตํฉ๋๋ค.
๋ก์ปฌ AI ์๋ ์ฑ์ฐ๊ธฐ (intlayer fill):
์์ ํ OpenAI, Anthropic, Mistral, Gemini API ํค๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฝ๋ ๋ฒ์ญ์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
์์ฒด ํธ์คํ ๋น์ฃผ์ผ CMS:
Intlayer CMS๋ฅผ ์ฐ๋ํ๋ฉด ๊ธฐํ์๋ ๋ง์ผํฐ๊ฐ ์น UI์์ ๋ฌธ๊ตฌ๋ฅผ ์ง์ ์์ ํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ Git์ ์ปค๋ฐํ ์ ์์ต๋๋ค.
์คํ์์ค ๋ผ์ด์ ์ค:
๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ Apache 2.0 ๋ผ์ด์ ์ค๋ก ์ ๊ณต๋ฉ๋๋ค.
์ง๊ธ๋ vue-i18n์ด ์ ํจํ ๊ฒฝ์ฐ๋?
๋ผ์ฐํ
๊ตฌ์กฐ๊ฐ @nuxtjs/i18n๊ณผ ๊น๊ฒ ์ฝํ ์๋ค๋ฉด ์์คํ
์ ์ ๋ฉด ๊ฐํธํ๋ ๊ฒ์ด ๋ถ๋ด์ค๋ฌ์ธ ์ ์์ต๋๋ค.
๊ณ ๋๋ก ์ค์ฒฉ๋ ๋ฉ์์ง ๋งํฌ๋ ๋ณต์กํ ์ซ์/๋ ์ง ๊ท์น์ ํญ๋๊ฒ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ.
๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์ฑ๋ฅ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฒฐ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์๋ ๊ฒฝ์ฐ.
๊ธฐ์กด vue-i18n ์ค์ ์ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ ์์๊น์?
Intlayer๋ vue-i18n ๋ฐ @nuxtjs/i18n์ ํจ์ ์๊ทธ๋์ฒ(useI18n, $t, <i18n-t>)๋ฅผ ๊ทธ๋๋ก ์ฌํํ๋ ๋๋กญ์ธ ํธํ์ฑ ํจํค์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ
ํ๋ฆฟ์ด๋ Composable์ ๋ค์ ์์ฑํ์ง ์๊ณ ๋ ์ปดํ์ผ๋ฌ ๊ธฐ๋ฐ์ ๊ฐ๋ฒผ์ด ์ํคํ
์ฒ๊ฐ ์ ๊ณตํ๋ ํํ์ ๋๋ฆด ์ ์์ต๋๋ค.
์ค์ ์ ๋จ ํ ์ค์ ๋ช ๋ น์ด๋ก ์๋ฃ๋ฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ด ๋ํํ CLI๋ ๋ค์ ์์ ์ ์๋์ผ๋ก ์ํํฉ๋๋ค:
@intlayer/vue-i18n๋๋@intlayer/nuxt-i18nํธํ์ฑ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.- Vite ๋๋ Nuxt ๋ฒ๋ค๋ฌ ๋ณ์นญ(alias)์ ์ค์ ํ์ฌ ๊ธฐ์กด ์ํฌํธ ๋ฐ ํ
ํ๋ฆฟ ํ๊ทธ๊ฐ Intlayer๋ก ์ํํ๊ฒ ๋ผ์ฐํ
๋๋๋ก ์ฐ๊ฒฐํ๋ฏ๋ก,
vue-i18n์package.json์์ ์์ ํ๊ฒ ์ ๊ฑฐํ ์ ์์ต๋๋ค. - ์๋ํฐ ๋ด ์ธ์ด ์๋ฒ(LSP) ์ง๋จ์ ์ฆ์ ํ์ฑํํ๊ณ , ํด๋ผ์ด์ธํธ ๋ฒ๋ค์์ 24KB ํฌ๊ธฐ์ AST ํ์๋ฅผ ์์ ํ ์ ๊ฑฐํ๋ฉฐ, ๋๋์ ์ธ ๋ฆฌํฉํ ๋ง ์์ด ๋ก์ปฌ AI ๋ฒ์ญ ์ํฌํ๋ก์ฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
๋จ๊ณ๋ณ ์ธ๋ถ ๋ด์ฉ์ ๋ค์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์:
- ์ฌ์ด ํธํ์ฑ:
vue-i18nํธํ์ฑ ๋ ์ด์ด ๋๋@nuxtjs/i18nํธํๆง ๋ ์ด์ด๋ฅผ ์ด์ฉํด ๊ธฐ์กด ํ ํ๋ฆฟ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์ ์งํ ์ ์์ต๋๋ค. - ๋จ๊ณ๋ณ ์ด์ ๊ฐ์ด๋: JSON ํ์ผ์ ๊ตฌ์กฐํ๋ ์ฌ์ ์ผ๋ก ๋ณํํ๋ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์: vue-i18n ๋ง์ด๊ทธ๋ ์ด์ , @nuxtjs/i18n ๋ง์ด๊ทธ๋ ์ด์ .
- ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ:
vue-i18n์ ๋ฐํ์์ผ๋ก ์ ์งํ๋ฉด์, Intlayer์ vue-i18n์ ํจ๊ป ํ์ฉํ์ฌ ์๊ฒฉํ ํ์ ๊ฒ์ฌ์ ๋ก์ปฌ AI ๋ฒ์ญ๋ง ๋จผ์ ๋์ ํ ์๋ ์์ต๋๋ค.
๋ฌด๋ฃ i18n SEO ์ค์บ๋๋ฅผ ํตํด ํ์ฌ ์น์ฌ์ดํธ์ ๋ฒ๋ค ๋์์ ํฌ๊ธฐ๋ฅผ ๋ถ์ํด ๋ณด์ธ์:
๊ด๋ จ ๊ธ ๋ณด๊ธฐ
๋๊ธ
์์ง ๋๊ธ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ก ์๊ฒฌ์ ๋๋ ๋ณด์ธ์.
