Автор:
    БозданиС:2025-08-23ПослСднСС обновлСниС:2025-10-29

    Π˜Π½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Vue.js (i18n) с vue-i18n ΠΈ Intlayer

    www.youtube.com

    Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Intlayer?

    Intlayer, это инновационная, с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, разработанная для устранСния нСдостатков Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ i18n. Она ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ соврСмСнный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ Π² прилоТСниях Vue.js ΠΈ Nuxt.

    Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ сравнСниС с vue-i18n Π² нашСм Π±Π»ΠΎΠ³Π΅ vue-i18n vs. Intlayer.

    ΠŸΠΎΡ‡Π΅ΠΌΡƒ стоит ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚ΡŒ Intlayer с vue-i18n?

    Π₯отя Intlayer прСдоставляСт ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ i18n (см. нашС руководство ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Vue.js), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ с vue-i18n ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

    1. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ кодовая Π±Π°Π·Π°: Π£ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ рСализованная систСма vue-i18n, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ постСпСнно ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с Intlayer.
    2. ВрСбования наслСдия: Π’Π°Ρˆ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ совмСстимости с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ процСссами vue-i18n.
    3. Знакомство ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: Π’Π°ΡˆΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»Π° ΠΊ vue-i18n, Π½ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ.
    4. ИспользованиС возмоТностСй Intlayer: Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Intlayer, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ дСкларация ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, автоматизация ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°, тСстированиС ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

    Для этого Intlayer ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ для vue-i18n, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваши JSON-ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ Π² CLI ΠΈΠ»ΠΈ CI/CD ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ…, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

    Π­Ρ‚ΠΎ руководство ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄Π½ΡƒΡŽ систСму Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Intlayer, сохраняя ΠΏΡ€ΠΈ этом ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с vue-i18n.

    ПошаговоС руководство ΠΏΠΎ настройкС Intlayer с vue-i18n

    1. Установка зависимостСй

      УстановитС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

      bash
      npx intlayer init --interactive
      
      Ρ„Π»Π°Π³ --interactive Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ intlayer-cli init, Ссли Π²Ρ‹ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ ИИ-Π°Π³Π΅Π½Ρ‚ΠΎΠΌ.
      Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Π²Π°ΡˆΡƒ срСду ΠΈ установит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. НапримСр:
      bash
      npm install intlayer @intlayer/sync-json-plugin --save-dev
      

      ОбъяснСниС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

      • intlayer: Основная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΈ управлСния ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ
      • @intlayer/sync-json-plugin: Плагин для синхронизации Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Intlayer с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ JSON vue-i18n
    2. РСализация ΠΏΠ»Π°Π³ΠΈΠ½Π° Intlayer для ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ JSON

      Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Intlayer для опрСдСлСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π»ΠΎΠΊΠ°Π»Π΅ΠΉ:

      Если Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JSON-ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ для vue-i18n, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ syncJSON:

      intlayer.config.ts
      import { Locales, type IntlayerConfig } from "intlayer";
      import { syncJSON } from "@intlayer/sync-json-plugin";
      
      const config: IntlayerConfig = {
        internationalization: {
          locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
          defaultLocale: Locales.ENGLISH,
        },
        plugins: [
          syncJSON({
            format: "vue-i18n",
            source: ({ key, locale }) => `./src/locales/${locale}/${key}.json`,
          }),
        ],
      };
      
      export default config;
      

      Плагин syncJSON автоматичСски ΠΎΠ±Π΅Ρ€Π½Π΅Ρ‚ JSON. Он Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ JSON-Ρ„Π°ΠΉΠ»Ρ‹ Π±Π΅Π· измСнСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ содСрТимого.

      Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ JSON сосущСствовал с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Intlayer (.content Ρ„Π°ΠΉΠ»Ρ‹), Intlayer Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

      plaintext
      1. Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ ΠΊΠ°ΠΊ JSON, Ρ‚Π°ΠΊ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΡ… Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Intlayer.
      2. Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ JSON ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Intlayer Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ слияниС всСх словарСй. Π’ зависимости ΠΎΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° (всС настраиваСтся).

      Если измСнСния вносятся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CLI для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° JSON ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· CMS, Intlayer ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ JSON-Ρ„Π°ΠΉΠ» с Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°ΠΌΠΈ.

      Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС подробностСй ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π΅ syncJSON, поТалуйста, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° syncJSON.

    ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Git

    Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ сгСнСрированныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· систСмы контроля вСрсий:

    .gitignore
    # Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, сгСнСрированныС Intlayer
    .intlayer
    

    Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ автоматичСски ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² процСссС сборки ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ добавлСния Π² ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

    Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ VS Code

    Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° установитС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Intlayer для VS Code:

    Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ VS Code

    Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ VS Code

    ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

    Пока Π½Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Π‘ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΊΡ‚ΠΎ подСлится своими мыслями.

    ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ сообщСния

    ПослСдниС сообщСния