Author:
    Creation:2025-04-18Last update:2025-06-29

    Intlayer рдореЗрдВ рдкреНрд░рддрд┐-рд╕реНрдерд╛рди рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рдгрд╛ рдХреА рдШреЛрд╖рдгрд╛

    Intlayer рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╕рдорд░реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ:

    • рд╕рднреА рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓
    • рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ (рдкреНрд░рддрд┐-рд╕реНрдерд╛рди рдкреНрд░рд╛рд░реВрдк)

    рдпрд╣ рд▓рдЪреАрд▓рд╛рдкрди рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ:

    • рдЕрдиреНрдп i18n рдЯреВрд▓реНрд╕ рд╕реЗ рдЖрд╕рд╛рди рдорд╛рдЗрдЧреНрд░реЗрд╢рди
    • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрд╡рд╛рдж рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
    • рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдЧрдарди, рдЕрд▓рдЧ-рдЕрд▓рдЧ, рд╕реНрдерд╛рди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ

    рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдИ рдЕрдиреБрд╡рд╛рдж

    рдпрд╣ рдкреНрд░рд╛рд░реВрдк рдЖрджрд░реНрд╢ рд╣реИ:

    • рдХреЛрдб рдореЗрдВ рддреНрд╡рд░рд┐рдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдПред
    • CMS рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдПред

    рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдпрд╣ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдирд╛ рдФрд░ CMS рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

    hello-world.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      content: {
        multilingualContent: t({
          en: "Title of my component",
          es: "T├нtulo de mi componente",
        }),
      },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    
    рдорд╣рддреНрд╡рдкреВрд░реНрдг: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ locale рдлрд╝реАрд▓реНрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред рдпрд╣ Intlayer рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕ рднрд╛рд╖рд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред
    рдЕрдиреБрд╢рдВрд╕рд┐рдд: рдпрд╣ рдкреНрд░рд╛рд░реВрдк рддрдм рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк Intlayer рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рдпрд╛ рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд░рд╣реЗ рд╣реЛрдВред

    рдкреНрд░рддрд┐-рд▓реЛрдХреЗрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЧреНрд▓реЛрдмрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

    рдЖрдк рдЕрдкрдиреА intlayer.config.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдХрд░ рдкреНрд░рддрд┐-рд▓реЛрдХреЗрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЧреНрд▓реЛрдмрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    ts
    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      dictionary: {
        locale: Locales.ENGLISH,
      },
    };
    
    export default config;
    

    рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рднреА рдкреНрд░рддрд┐-рд▓реЛрдХреЗрд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдЬреЗрдирд░реЗрдЯ рдХреА рдЬрд╛рдПрдВрдЧреАред рдЗрд╕рдореЗрдВ extract рдХрдорд╛рдВрдб рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .content рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЬрдирд░реЗрд╢рди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП Compiler рдпрд╛ Extract рджреЗрдЦреЗрдВред)

    рдкреНрд░рддрд┐-рд╕реНрдерд╛рди рдкреНрд░рд╛рд░реВрдк

    рдпрд╣ рдкреНрд░рд╛рд░реВрдк рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм:

    • рдЖрдк рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
    • рдЖрдк рдорд╢реАрди рдпрд╛ рдорд╛рдирд╡ рдЕрдиреБрд╡рд╛рдж рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣реЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

    рдЖрдк рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реНрдерд╛рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рднреА рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдерд╛рди рдлрд╝реАрд▓реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ:

    hello-world.es.content.ts
    import { t, Locales, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      locale: Locales.SPANISH, // рдорд╣рддреНрд╡рдкреВрд░реНрдг
      content: { multilingualContent: "T├нtulo de mi componente" },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    
    рдорд╣рддреНрд╡рдкреВрд░реНрдг: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ locale рдлрд╝реАрд▓реНрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред рдпрд╣ Intlayer рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕ рднрд╛рд╖рд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред

    рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг

    рдЖрдк рдПрдХ рд╣реА рд╕рд╛рдордЧреНрд░реА рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдШреЛрд╖рдгрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

    • рдЕрдкрдиреА рдореВрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдереИрддрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ index.content.tsред
    • рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ index.fr.content.ts рдпрд╛ index.content.jsonред

    рдпрд╣ рд╕реЗрдЯрдЕрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм:

    • рдЖрдк рдХреЛрдб рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд╛рдордЧреНрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
    • рдЖрдк рдмрд╛рдж рдореЗрдВ CMS рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдореГрджреНрдз рдпрд╛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред
    bash
    .
    тФФтФАтФА Components
        тФФтФАтФА MyComponent
            тФЬтФАтФА index.content.ts
            тФЬтФАтФА index.content.json
            тФФтФАтФА index.ts
    

    рдЙрджрд╛рд╣рд░рдг

    рдпрд╣рд╛рдБ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рд╣реИ:

    Components/MyComponent/index.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      locale: Locales.ENGLISH,
      content: {
        multilingualContent: "рдореЗрд░реЗ рдШрдЯрдХ рдХрд╛ рд╢реАрд░реНрд╖рдХ",
        projectName: "рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ",
      },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    
    Components/MyComponent/index.content.json
    {
      "$schema": "https://intlayer.org/schema.json",
      "key": "hello-world",
      "content": {
        "multilingualContent": {
          "nodeType": "translation",
          "translation": {
            "fr": "Titre de mon composant",
            "es": "T├нtulo de mi componente"
          }
        }
      }
    }
    

    Intlayer рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрднрд╛рд╖реА рдФрд░ рдкреНрд░рддрд┐-рд╕реНрдерд╛рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рддрд╛ рд╣реИред

    Components/MyComponent/index.ts
    import { getIntlayer, Locales } from "intlayer";
    
    const intlayer = getIntlayer("hello-world"); // рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХрд▓ ENGLISH рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ ENGLISH рд╕рд╛рдордЧреНрд░реА рд▓реМрдЯрд╛рдПрдЧрд╛
    
    console.log(JSON.stringify(intlayer, null, 2));
    // рдкрд░рд┐рдгрд╛рдо:
    // {
    //  "multilingualContent": "рдореЗрд░реЗ рдШрдЯрдХ рдХрд╛ рд╢реАрд░реНрд╖рдХ",
    //  "projectName": "рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ"
    // }
    
    const intlayer = getIntlayer("hello-world", Locales.SPANISH);
    
    console.log(JSON.stringify(intlayer, null, 2));
    // рдкрд░рд┐рдгрд╛рдо:
    // {
    //  "multilingualContent": "T├нtulo de mi componente",
    //  "projectName": "рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ"
    // }
    
    const intlayer = getIntlayer("hello-world", Locales.FRENCH);
    
    console.log(JSON.stringify(intlayer, null, 2));
    // рдкрд░рд┐рдгрд╛рдо:
    // {
    //  "multilingualContent": "Titre de mon composant",
    //  "projectName": "рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ"
    // }
    

    рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрд╡рд╛рдж рдирд┐рд░реНрдорд╛рдг

    рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрд╛рдпрдм рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП intlayer CLI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред