Author:
    Creation:2024-08-11Last update:2025-06-29

    рд░рд┐рдПрдХреНрдЯ рдПрдХреАрдХрд░рдг: useDictionary рд╣реБрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝

    рдпрд╣ рдЕрдиреБрднрд╛рдЧ React рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ useDictionary рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд┐рдирд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред

    React рдореЗрдВ useDictionary рдХреЛ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рдирд╛

    useDictionary рд╣реБрдХ рдХреЛ React рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рдХреЗ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

    • рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ:

      typescript
      import { useDictionary } from "next-intlayer"; // рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб React рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
      
    • рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯ:

      typescript
      import { useDictionary } from "next-intlayer/server"; // рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб React рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
      

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

    рдпрд╣ рд╣реБрдХ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:

    1. dictionary: рдПрдХ рдШреЛрд╖рд┐рдд рд╢рдмреНрджрдХреЛрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рд╛рдордЧреНрд░реА рд╣реЛрддреА рд╣реИред
    2. locale (рд╡реИрдХрд▓реНрдкрд┐рдХ): рдЗрдЪреНрдЫрд┐рдд рд▓реЛрдХрд▓ред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреЗ рд▓реЛрдХрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рд╢рдмреНрджрдХреЛрд╢

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

    component.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const exampleContent = {
      key: "component-example",
      content: {
        title: t({
          en: "Client Component Example",
          fr: "Exemple de composant client",
          es: "Ejemplo de componente cliente",
        }),
        content: t({
          en: "This is the content of a client component example",
          fr: "Ceci est le contenu d'un exemple de composant client",
          es: "Este es el contenido de un ejemplo de componente cliente",
        }),
      },
    } satisfies Dictionary;
    
    export default exampleContent;
    

    React рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ

    рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ useDictionary рд╣реБрдХ рдХреЛ React рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП:

    ClientComponentExample.tsx
    "use client";
    
    import type { FC } from "react";
    import { useDictionary } from "next-intlayer";
    import clientComponentExampleContent from "./component.content";
    
    const ClientComponentExample: FC = () => {
      const { title, content } = useDictionary(clientComponentExampleContent);
    
      return (
        <div>
          <h1>{title}</h1>
          <p>{content}</p>
        </div>
      );
    };
    

    React рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ

    рдпрджрд┐ рдЖрдк IntlayerServerProvider рдХреЗ рдмрд╛рд╣рд░ useDictionary рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп рд╕реНрдерд╛рдиреАрдп рднрд╛рд╖рд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

    ServerComponentExample.tsx
    import type { FC } from "react";
    import { useDictionary } from "next-intlayer/server";
    import clientComponentExampleContent from "./component.content";
    
    const ServerComponentExample: FC = () => {
      const { content } = useDictionary(clientComponentExampleContent);
    
      return (
        <div>
          <h1>{content.title}</h1>
          <p>{content.content}</p>
        </div>
      );
    };
    

    рдЧреБрдгреЛрдВ рдкрд░ рдиреЛрдЯреНрд╕

    рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд, buttonTitle.value рдЬреИрд╕реЗ рдЧреБрдг рдпрд╣рд╛рдБ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕реАрдзреЗ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдВрдЯ рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рддрдХ рдкрд╣реБрдБрдЪреЗрдВред

    jsx
    <button title={content.title}>{content.content}</button>
    

    рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрдЭрд╛рд╡

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

    рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ useDictionary рд╣реБрдХ рдХреЗ рдПрдХреАрдХрд░рдг рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдЬреЛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрдВрдЯреЗрдВрдЯ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдмрд┐рдирд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реБрдПред