Author:
    Creation:2026-09-19Last update:2026-09-19

    useIntlayer рд╣реБрдХ рдкреНрд░рд▓реЗрдЦрди

    useIntlayer рд╣реБрдХ рдЖрдкрдХреЛ Remix 3 рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ Intlayer рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

    рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рд╕рдВрджрд░реНрдн (AsyncLocalStorage рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рд╕реЗ рд╕рдХреНрд░рд┐рдп рд▓реЛрдХреЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд░реВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕, рд╡реНрдпреВ рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕, рдпрд╛ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рд▓реЛрдХреЗрд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

    рдЙрдкрдпреЛрдЧ

    рд░реВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдореЗрдВ

    src/server.ts
    import { createRouter } from "remix/router";
    import { intlayer, useIntlayer } from "remix-intlayer";
    
    const router = createRouter({
      middleware: [intlayer()],
    });
    
    router.get("/api/welcome", () => {
      const content = useIntlayer("home");
    
      return Response.json({
        title: content.title,
        subtitle: content.subtitle,
      });
    });
    

    рд╡реНрдпреВ рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдФрд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ

    src/views/home.ts
    import { useIntlayer } from "remix-intlayer";
    
    export const HomeView = () => {
      const content = useIntlayer("home");
    
      return `
        <main>
          <h1>${content.title}</h1>
          <p>${content.subtitle}</p>
        </main>
      `;
    };
    

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

    ts
    useIntlayer(key, localeOrSelector?)
    
    1. key: рд╢рдмреНрджрдХреЛрд╢ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдВрдЬреА (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреА .content.ts рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ)ред
    2. localeOrSelector (рд╡реИрдХрд▓реНрдкрд┐рдХ): рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЛрдХреЗрд▓ рдпрд╛ рдЪрдпрдирдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ ({ item }, { variant }, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ locale рдХреЗ рд╕рд╛рде)ред рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, рдпрд╣ рдЕрдиреБрд░реЛрдз рд╕рдВрджрд░реНрдн рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдП рдЧрдП рд▓реЛрдХреЗрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред

    рд╡рд┐рд╡рд░рдг

    рдпрд╣ рд╣реБрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:

    1. рд╕рдВрджрд░реНрдн рд▓реЛрдХреЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛: intlayer() рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреБрд░реЛрдз-рдмрд╛рдзреНрдп AsyncLocalStorage рд╕реНрдХреЛрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред
    2. рд╢рдмреНрджрдХреЛрд╢ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐: рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХреБрдВрдЬреА рдХреЗ рдЕрдиреБрд░реВрдк рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рд╢рдмреНрджрдХреЛрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
    3. рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг: рд╣рд▓ рдХрд┐рдП рдЧрдП рд▓реЛрдХреЗрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж, рдЧрдгрдирд╛, рдорд╛рд░реНрдХрдбрд╛рдЙрди рдФрд░ рд╕рд╢рд░реНрдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
    4. рдлрд╝реЙрд▓рдмреИрдХ рдкреНрд░рдмрдВрдзрди: рдпрджрд┐ рд╕рдХреНрд░рд┐рдп HTTP рдЕрдиреБрд░реЛрдз рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд╣рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛. рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд╛рд░реНрдп рдпрд╛ рдмрд┐рдирд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг), рддреЛ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП defaultLocale рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред

    рд╕рдВрдмрдВрдзрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝