Creation:2025-09-09Last update:2026-05-31

    Intlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА Nest рдмреИрдХрдПрдВрдб рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ | рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг (i18n)

    express-intlayer Express applications рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг (i18n) middleware рд╣реИ, рдЬреЛ рдЖрдкрдХреА рдмреИрдХрдПрдВрдб рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реБрд▓рдн рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ NestJS Express рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк express-intlayer рдХреЛ рдЕрдкрдиреЗ NestJS applications рдореЗрдВ рдирд┐рд░реНрдмрд╛рдз рд░реВрдк рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХреЗрдВред

    рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ

    • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рдмреИрдХрдПрдВрдб рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛: рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдореВрд▓ рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд░рд╛рд╢рд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬреЛ front-end components рдЬреИрд╕реЗ toasts рдпрд╛ modals рдореЗрдВ рджрд┐рдЦрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

    • рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛: рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдЦреАрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ applications рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ e-commerce рд╕рд╛рдЗрдЯреЛрдВ рдпрд╛ content management systems рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ product descriptions, articles рдФрд░ рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

    • рдмрд╣реБрднрд╛рд╖реА рдИрдореЗрд▓ рднреЗрдЬрдирд╛: рдЪрд╛рд╣реЗ рд╡рд╣ transactional emails, marketing campaigns, рдпрд╛ notifications рд╣реЛрдВ, рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рдИрдореЗрд▓ рднреЗрдЬрдирд╛ engagement рдФрд░ рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред

    • рдмрд╣реБрднрд╛рд╖реА Push Notifications: рдореЛрдмрд╛рдЗрд▓ applications рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдореЗрдВ push notifications рднреЗрдЬрдирд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдФрд░ retention рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реНрдкрд░реНрд╢ notifications рдХреЛ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

    • рдЕрдиреНрдп рд╕рдВрдЪрд╛рд░: рдмреИрдХрдПрдВрдб рд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдЪрд╛рд░, рдЬреИрд╕реЗ SMS messages, system alerts, рдпрд╛ user interface updates, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рд╣реЛрдиреЗ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реНрдкрд╖реНрдЯрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рдордЧреНрд░ user experience рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИред

    рдмреИрдХрдПрдВрдб рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░рдХреЗ, рдЖрдкрдХрд╛ application рди рдХреЗрд╡рд▓ рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рдЕрдВрддрд░реЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ рдмрд▓реНрдХрд┐ global market рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реНрд╡ рд╡реНрдпрд╛рдкреА рдЖрдкрдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ scale рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рд╣реИред

    рд╢реБрд░реБрдЖрдд рдХреИрд╕реЗ рдХрд░реЗрдВ

    рдирдпрд╛ NestJS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ

    bash
    npm install -g @nestjs/cli
    nest new my-nest-app
    

    рд╕реНрдерд╛рдкрдирд╛

    express-intlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:

    bash
    npx intlayer init --interactive
    
    --interactive рдзреНрд╡рдЬ (flag) рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ AI рдПрдЬреЗрдВрдЯ рд╣реИрдВ рддреЛ intlayer-cli init рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
    рдпрд╣ рдХрдорд╛рдВрдб рдЖрдкрдХреЗ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХреЛ рдбрд┐рдЯреЗрдХреНрдЯ рдХрд░реЗрдЧреА рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
    bash
    npm install intlayer express-intlayer
    

    tsconfig.json рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

    TypeScript рдХреЗ рд╕рд╛рде Intlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ tsconfig.json ES рдореЙрдбреНрдпреВрд▓реНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдпрд╣ module рдФрд░ moduleResolution рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ nodenext рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    tsconfig.json
    {
      compilerOptions: {
        module: "nodenext",
        moduleResolution: "nodenext",
        // ... рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк
      },
    }
    

    рд╕реЗрдЯрдЕрдк

    рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ intlayer.config.ts рдмрдирд╛рдХрд░ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
        defaultLocale: Locales.ENGLISH,
      },
    };
    
    export default config;
    

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

    рдЕрдиреБрд╡рд╛рдж рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рдгрд╛рдПрдБ рдмрдирд╛рдПрдВ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ:

    рдЖрдкрдХреА рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рдгрд╛рдПрдБ рдЖрдкрдХреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд╣реАрдВ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ contentDir рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, ./src) рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред рдФрд░ рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реЛрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, .content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml})ред
    рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рдгрд╛ рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВред

    рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реЗрдЯрдЕрдк

    express-intlayer рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдЕрдкрдиреЗ NestJS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рдХрд░реЗрдВ:

    src/app.module.ts
    import { MiddlewareConsumer, Module, NestModule } from "@nestjs/common";
    import { AppController } from "./app.controller";
    import { AppService } from "./app.service";
    import { intlayer } from "express-intlayer";
    
    @Module({
      imports: [],
      controllers: [AppController],
      providers: [AppService],
    })
    export class AppModule implements NestModule {
      configure(consumer: MiddlewareConsumer) {
        consumer.apply(intlayer()).forRoutes("*"); // рд╕рднреА рд░реВрдЯреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
      }
    }
    

    рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдпрд╛ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

    рдЕрдм рдЖрдк рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдпрд╛ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рджреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП getIntlayer рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    src/app.service.ts
    import { Injectable } from "@nestjs/common";
    import { getIntlayer } from "express-intlayer";
    
    @Injectable()
    export class AppService {
      getHello(): string {
        return getIntlayer("app").greet; // рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
      }
    }
    

    рд╕рдВрдЧрддрддрд╛

    express-intlayer рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИ:

    • React рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП react-intlayer
    • Next.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП next-intlayer
    • Vite рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП vite-intlayer

    рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рд╣рдЬрддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ API рдЕрдиреБрд░реЛрдз рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЖрдк рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд╣реЗрдбрд░ рдпрд╛ рдХреБрдХреАрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдХрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      // ... рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк
      middleware: {
        headerName: "my-locale-header", // рд╣реЗрдбрд░ рдирд╛рдо
        cookieName: "my-locale-cookie", // рдХреБрдХреА рдирд╛рдо
      },
    };
    
    export default config;
    

    рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, express-intlayer рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Accept-Language рд╣реЗрдбрд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдЧрд╛ред

    рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдЙрдиреНрдирдд рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреЗрдЦреЗрдВред

    TypeScript рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

    express-intlayer рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП TypeScript рдХреА рдордЬрдмреВрдд рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред TypeScript рдХреА рд╕реНрдереИрддрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рд░ рдЕрдиреБрд╡рд╛рдж рдХреБрдВрдЬреА рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рд╕реЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЗ рдЫреВрдЯрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдХрдо рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред

    Autocompletion

    Translation error

    рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ ./types/intlayer.d.ts рдореЗрдВ) рдЖрдкрдХреЗ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

    tsconfig.json
    {
      // ... рдЖрдкрдХреЗ рдореМрдЬреВрджрд╛ TypeScript рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
      include: [
        // ... рдЖрдкрдХреЗ рдореМрдЬреВрджрд╛ TypeScript рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
        ".intlayer/**/*.ts", // рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
      ],
    }
    

    VS рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди

    Intlayer рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Intlayer VS рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    VS рдХреЛрдб рдорд╛рд░реНрдХреЗрдЯрдкреНрд▓реЗрд╕ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ

    рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

    • рдЕрдиреБрд╡рд╛рдж рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдХрдореНрдкреНрд▓реАрд╢рдиред
    • рдЧрд╛рдпрдм рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рд░реАрдпрд▓-рдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ред
    • рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЗрдирд▓рд╛рдЗрди рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрдиред
    • рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВред

    рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ Intlayer VS рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред

    рдЧрд┐рдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

    рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╣реИ рдХрд┐ Intlayer рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕рд╕реЗ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред

    рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреА .gitignore рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

    .gitignore
    # Intlayer рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ
    .intlayer
    

    рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди

    • nestjs-i18n: JSON рдФрд░ YAML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЛрдХрдкреНрд░рд┐рдп NestJS рдореЙрдбреНрдпреВрд▓ред
    • Intlayer: Dependency Injection рдФрд░ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛, рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдВрдЪ, AI рдЕрдиреБрд╡рд╛рдж рдФрд░ рдлрд╝реНрд░рдВрдЯрдПрдВрдб рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рд╢рдмреНрджрдХреЛрд╢ред

    рдмреИрдХрдПрдВрдб рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрднреА рднреА рдлреНрд░рдВрдЯрдПрдВрдб рд╕реЗ рд╣реЛрдХрд░ рдирд╣реАрдВ рдЧреБрдЬрд░рддрд╛: API рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢, рд▓реЗрди-рджреЗрди рд╕рдВрдмрдВрдзреА рдИрдореЗрд▓, рдкреБрд╢ рд╕реВрдЪрдирд╛рдПрдВ, SMS рдФрд░ PDF рдирд┐рд░реНрдпрд╛рддред рдЗрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐ рд╕рддреНрд░ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз рд╣рд▓ рдХреА рдЧрдИ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреА рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

    Intlayer рдХреНрдпреЛрдВ рдЪреБрдиреЗрдВ рджреЗрдЦреЗрдВред

    рдкрд╛рд░рдВрдкрд░рд┐рдХ JSON рдХреИрдЯрд▓реЙрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдоред Intlayer рдХрдВрдкрд╛рдЗрд▓рд░ рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдФрд░ рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯ рд╕рдордп рдиреНрдпреВрдирддрдо рд░рд╣рддрд╛ рд╣реИред рдмрдВрдбрд▓ рдЕрдиреБрдХреВрд▓рди рджреЗрдЦреЗрдВред

    рдХрд╛рдлреА рд╣рдж рддрдХ рд╣рд╛рдБред sync JSON plugin Intlayer рд╢рдмреНрджрдХреЛрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реБрдП рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред

    рд╣рд╛рдБред sync JSON plugin рдЖрдкрдХреА /messages/{locale}/{namespace}.json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рддреНрдп рдХрд╛ рд╕реНрд░реЛрдд рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ рдФрд░ рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЙрдирд╕реЗ Intlayer dictionaries рдмрдирд╛рддрд╛ рд╣реИред sync PO plugin gettext catalogs рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИ, рдФрд░ per locale files рдЖрдкрдХреЛ locales рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ content рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВред

    рдирд╣реАрдВред npx intlayer extract рдЪрд▓рд╛рдПрдВ рдФрд░ Intlayer рдЖрдкрдХреА source files рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, user facing strings рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдПрдХ .content file рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк strings рдХреЛ рдПрдХ catalog рдореЗрдВ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ diff рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред extract command рджреЗрдЦреЗрдВред

    рдкреВрд░реНрдг рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, Intlayer Compiler рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рдпрд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рд╢рдмреНрджрдХреЛрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

    рдкрд╛рдБрдЪ рдЙрдкрдХрд░рдг, рд╕рднреА рд╡реИрдХрд▓реНрдкрд┐рдХ:

    • VS Code extension: рдПрдХ рдХреБрдВрдЬреА рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдлрд╝рд╛рдЗрд▓ рддрдХ рдЬрд╛рдПрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдирд┐рдХрд╛рд▓реЗрдВ, рдФрд░ рдХрдорд╛рдВрдб рдкреИрд▓реЗрдЯ рд╕реЗ build, fill, test, push рдФрд░ pull рдЪрд▓рд╛рдПрдВред
    • LSP server: LSP рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЬрд╛рдПрдВ, рдЕрдиреБрд╡рд╛рджрд┐рдд рдорд╛рди рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рджреЗрдЦреЗрдВ, рдФрд░ рдХреБрдВрдЬреА рдкреВрд░реНрдгрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред i18next рдХреЙрд▓ рдХреЛ рднреА рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
    • MCP server: Cursor, VS Code, Claude Desktop, Claude Code рдФрд░ ChatGPT рдХреЗ рд▓рд┐рдП Intlayer рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ CLI рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
    • Agent skills: рдХреЗрдВрджреНрд░рд┐рдд рдХреМрд╢рд▓ рдЬреИрд╕реЗ intlayer-config, intlayer-cli рдФрд░ intlayer-contentред
    • ESLint plugin: no-raw-text рдирд┐рдпрдо рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред