์ž‘๊ฐ€:
    ์ƒ์„ฑ:2026-06-13๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ:2026-09-27

    @intlayer/vue-i18n: vue-i18n ํ˜ธํ™˜ ์–ด๋Œ‘ํ„ฐ

    Vue ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ˜„์žฌ vue-i18n์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ปดํฌ๋„ŒํŠธ๋‚˜ translation hooks๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  Intlayer๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Intlayer๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Intlayer์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด์„œ vue-i18n์˜ API๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋ฐ˜์˜ํ•˜๋Š” compat adapter๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    ํ•ด์•ผ ํ•  ์ผ

    ์‹œ์ž‘ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ์—์„œ initialization ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”:

    bash
    npx intlayer init --interactive
    

    Initialization ์ค‘์— Intlayer๋Š” ์„ค์ • ํŒŒ์ผ (intlayer.config.ts)์„ ์„ค์ •ํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. vue-i18n imports๋ฅผ ์ž๋™์œผ๋กœ aliasํ•˜๊ธฐ ์œ„ํ•ด Vite ์„ค์ •์— Intlayer plugin์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    vite.config.ts
    import { defineConfig } from "vite";
    import vue from "@vitejs/plugin-vue";
    import vueI18nVitePlugin from "@intlayer/vue-i18n/plugin";
    
    export default defineConfig({
      plugins: [vue(), vueI18nVitePlugin()],
    });
    

    ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€

    vueI18nVitePlugin์€ bundler์— module alias๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ vue-i18n import๋Š” ํˆฌ๋ช…ํ•˜๊ฒŒ @intlayer/vue-i18n์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฉ๋‹ˆ๋‹ค.

    ๋‚ด๋ถ€์ ์œผ๋กœ adapter๋Š” ๋ณต์žกํ•œ vue-i18n ๊ตฌ๋ฌธ์„ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค:

    • Interpolation & Plurals: {name}๊ณผ list {0} interpolations์„ resolveํ•ฉ๋‹ˆ๋‹ค. Pipe plurals ("car | cars")์€ ์œ„์น˜ ์˜๋ฏธ๋ก ์— ๋”ฐ๋ผ Intlayer enumeration/plural nodes๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
    • Formats: d()์™€ n() ๊ฐ™์€ ํ•จ์ˆ˜๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Intl์„ ๋ž˜ํ•‘ํ•˜์—ฌ options์— ์ •์˜๋œ datetimeFormats์™€ numberFormats๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • Global & Local State: global.locale์€ Intlayer client์—์„œ ์ง€์›๋˜๋Š” WritableComputedRef๋กœ ๋งคํ•‘๋˜๋ฏ€๋กœ reactivity๋Š” ์ •ํ™•ํžˆ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: locale.value = 'fr').
    • Directives: v-t directive๋Š” ๋“ฑ๋ก๋˜๊ณ  ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ด์ „๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ ๊ณ„์† ๋ Œ๋”๋ง๋˜์ง€๋งŒ ์ฝ˜ํ…์ธ ๋Š” Intlayer dictionaries๋กœ ์ œ๊ณต๋˜์–ด type safety, ๋” ๋‚˜์€ bundle optimization, seamless CMS integration์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋””์—์„œ ์™”๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด JavaScript i18n์˜ ์—ญ์‚ฌ๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”.