Author:
    Creation:2024-12-02Last update:2026-09-27

    рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг: express-intlayer рдореЗрдВ t рдлрд╝рдВрдХреНрд╢рди

    express-intlayer рдкреИрдХреЗрдЬ рдореЗрдВ t рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЗ Express рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рдХрд░рдХреЗ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг (i18n) рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред

    рдЕрд╡рд▓реЛрдХрди

    t рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЕрдиреБрд░реЛрдз рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдЬреИрд╕реЗ рдХрд┐ Accept-Language рд╣реЗрдбрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдпреБрдХреНрдд рднрд╛рд╖рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХрд▓ рдкрд░ рд╕рд╣рдЬрддрд╛ рд╕реЗ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

    рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ

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

    рдлрд╝рдВрдХреНрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░

    typescript
    t(translations: Record<string, string>): string;
    

    рдкреИрд░рд╛рдореАрдЯрд░

    • translations: рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдХреБрдВрдЬреА рд▓реЛрдХрд▓ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ, en, fr, es-MX) рдФрд░ рдорд╛рди рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред

    рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ

    • рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред

    рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рд▓реЛрдб рдХрд░рдирд╛

    express-intlayer рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ Express рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдЬрд╝рд░реВрд░ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ t рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд▓реЛрдХрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╣реА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред

    рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд┐рд╕реА рднреА рд░реВрдЯ рд╕реЗ рдкрд╣рд▓реЗ app.use(intlayer()) рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рд╕рднреА рд░реВрдЯреНрд╕ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХреЗрдВ:

    src/index.ts
    import express, { type Express } from "express";
    import { intlayer } from "express-intlayer";
    
    const app: Express = express();
    
    // рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рд▓реЛрдб рдХрд░реЗрдВ
    app.use(intlayer());
    
    // рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рд░реВрдЯреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
    app.get("/", (_req, res) => {
      res.send(
        t({
          en: "Hello, World!",
          fr: "Bonjour le monde!",
          es: "┬бHola, Mundo!",
        })
      );
    });
    

    рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ

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

    рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг

    рдмреБрдирд┐рдпрд╛рджреА рдЙрджрд╛рд╣рд░рдг

    рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рд╛рдордЧреНрд░реА рдкрд░реЛрд╕реЗрдВ:

    src/index.ts
    app.get("/", (_req, res) => {
      res.send(
        t({
          en: "Welcome!",
          fr: "Bienvenue!",
          es: "┬бBienvenido!",
        })
      );
    });
    

    рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдз:

    • Accept-Language: fr рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ Bienvenue! рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред
    • Accept-Language: es рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ ┬бBienvenido! рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред
    • Accept-Language: de рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ Welcome! (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХрд▓) рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред

    рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛

    рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ:

    src/index.ts
    app.get("/error", (_req, res) => {
      res.status(500).send(
        t({
          en: "An unexpected error occurred.",
          fr: "Une erreur inattendue s'est produite.",
          es: "Ocurri├│ un error inesperado.",
        })
      );
    });
    

    рд▓реЛрдХрд▓ рд╡реЗрд░рд┐рдПрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

    рд▓реЛрдХрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реЗрд░рд┐рдПрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

    src/index.ts
    app.get("/greet", (_req, res) => {
      res.send(
        t({
          en: "Hello!",
          "en-GB": "Hello, mate!",
          fr: "Bonjour!",
          "es-MX": "┬бHola, amigo!",
          "es-ES": "┬бHola!",
        })
      );
    });
    

    рдЙрдиреНрдирдд рд╡рд┐рд╖рдп

    рдлреЙрд▓рдмреИрдХ рддрдВрддреНрд░

    рдпрджрд┐ рдкрд╕рдВрджреАрджрд╛ рд▓реЛрдХрд▓ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ t рдлрд╝рдВрдХреНрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХрд▓ рдкрд░ рдлреЙрд▓рдмреИрдХ рдХрд░реЗрдЧрд╛:

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

    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

    • рдпрджрд┐ defaultLocale Locales.CHINESE рд╣реИ рдФрд░ рдХреЛрдИ рдХреНрд▓рд╛рдЗрдВрдЯ Locales.DUTCH рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рддреЛ рд▓реМрдЯрд╛рдИ рдЧрдИ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕рд╛рдордЧреНрд░реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Locales.CHINESE рдорд╛рди рд╣реЛрдЧреАред
    • рдпрджрд┐ defaultLocale рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ t рдлрд╝рдВрдХреНрд╢рди Locales.ENGLISH рдорд╛рди рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдЧрд╛ред

    рд╕рдЦреНрдд рдореЛрдб рдкреНрд░рд╡рд░реНрддрди

    рдШреЛрд╖рд┐рдд рд╕реНрдерд╛рдиреАрдпрддрд╛рдУрдВ рдХреЗ рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП t рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

    рдореЛрдбрд╡реНрдпрд╡рд╣рд╛рд░
    strictрд╕рднреА рдШреЛрд╖рд┐рдд рд╕реНрдерд╛рдиреАрдпрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЧрд╛рдпрдм рд╕реНрдерд╛рдиреАрдпрддрд╛рдПрдБ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреАред
    inclusiveрдШреЛрд╖рд┐рдд рд╕реНрдерд╛рдиреАрдпрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЧрд╛рдпрдм рд╕реНрдерд╛рдиреАрдпрддрд╛рдПрдБ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреА рд▓реЗрдХрд┐рди рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВред
    looseрдХреЛрдИ рднреА рдореМрдЬреВрджрд╛ рд╕реНрдерд╛рдиреАрдпрддрд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рдШреЛрд╖рд┐рдд рди рд╣реЛред

    рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрджрд╛рд╣рд░рдг:

    intlayer.config.ts
    import { type IntlayerConfig } from "intlayer";
    
    const config = {
      // ... рдЖрдкрдХреА рдореМрдЬреВрджрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
      internationalization: {
        // ... рдЖрдкрдХреА рдореМрдЬреВрджрд╛ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
        strictMode: "strict", // рд╕рдЦреНрдд рдореЛрдб рд▓рд╛рдЧреВ рдХрд░реЗрдВ
      },
    } satisfies IntlayerConfig;
    
    export default config;
    

    рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХреАрдХрд░рдг

    рдЬрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде t рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЯрд╛рдЗрдк-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдЯрд╛рдЗрдк-рд╕реБрд░рдХреНрд╖рд┐рдд рдЕрдиреБрд╡рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:

    src/index.ts
    import { type LanguageContent } from "express-intlayer";
    
    const translations: LanguageContent<string> = {
      en: "Good morning!",
      fr: "Bonjour!",
      es: "┬бBuenos d├нas!",
    };
    
    app.get("/morning", (_req, res) => {
      res.send(t(translations));
    });
    

    рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг

    рд╕рдорд╕реНрдпрд╛рдХрд╛рд░рдгрд╕рдорд╛рдзрд╛рди
    t рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓реЛрдб рдирд╣реАрдВ рд╣реБрдЖрд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ app.use(intlayer()) рд░реВрдЯреНрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред
    рдЕрдиреБрд╡рд╛рдж рдЧрд╛рдпрдм рддреНрд░реБрдЯрд┐рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдЦреНрдд рдореЛрдб рд╕рдХреНрд╖рдо рд╣реИрд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

    рдкреНрд░рднрд╛рд╡реА рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡

    1. рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░реЗрдВ: рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рдореЙрдбреНрдпреВрд▓ рдпрд╛ JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
    2. рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрд╡рд╛рдж рдореМрдЬреВрдж рд╣реЛ рддрд╛рдХрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдлреЙрд▓ рдмреИрдХ рди рд╣реЛред
    3. рдлреНрд░рдВрдЯреЗрдВрдб i18n рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХрд░реЗрдВ: рдРрдк рдореЗрдВ рдПрдХ рд╕рд╣рдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯреЗрдВрдб рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВред
    4. рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░реЗрдВ: рдЕрдиреБрд╡рд╛рдж рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдЕрдкрдиреЗ рдРрдк рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рддрд╛рдХрд┐ рдиреНрдпреВрдирддрдо рдкреНрд░рднрд╛рд╡ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

    рдирд┐рд╖реНрдХрд░реНрд╖

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