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

    рдлрд╝рдВрдХреНрд╢рди рдлрд╝реЗрдЪрд┐рдВрдЧ

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

    рдЪреЗрддрд╛рд╡рдиреА: рдлрд╝рдВрдХреНрд╢рди рдлрд╝реЗрдЪрд┐рдВрдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ JSON рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рдгрд╛ рдФрд░ рджреВрд░рд╕реНрде рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

    рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдПрдБ

    рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдлрд╝реЗрдЪрд┐рдВрдЧ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

    **/*.content.ts
    import type { Dictionary } from "intlayer";
    
    const functionContent = {
      key: "function_content",
      content: {
        text: () => "рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИ",
      },
    } satisfies Dictionary;
    
    export default functionContent;
    

    рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, text рдХреБрдВрдЬреА рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрдк Intlayer рдХреЗ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ react-intlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ React рдХреЙрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдлрд╝реЗрдЪрд┐рдВрдЧ

    рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, Intlayer рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдореЙрдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкреБрдирдГрдкреНрд░рд╛рдкреНрддрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    рдиреАрдЪреЗ рдПрдХ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ:

    **/*.content.ts
    import { setTimeout } from "node:timers/promises";
    import type { Dictionary } from "intlayer";
    
    const fakeFetch = async (): Promise<string> => {
      // рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 200ms рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
      return await setTimeout(200).then(
        () => "рдпрд╣ рд╕рд╛рдордЧреНрд░реА рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рд╣реИ"
      );
    };
    
    const asyncFunctionContent = {
      key: "async_function",
      content: { text: fakeFetch },
    } satisfies Dictionary;
    
    export default asyncFunctionContent;
    

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

    рд░рд┐рдореЛрдЯ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

    рдЖрдк рдХрд┐рд╕реА рд╕рд╛рдордЧреНрд░реА рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реАрдзреЗ рдПрдХ рдкреНрд░реЙрдорд┐рд╕ рднреА рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВред Intlayer рдбрд┐рдХреНрд╢рдирд░реА рдмрдирд╛рддреЗ рд╕рдордп рдЙрд╕рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рд▓ рд╣реБрдП рдорд╛рди рдХреЛ рдЙрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рджреЗрддрд╛ рд╣реИ:

    **/*.content.ts
    import type { Dictionary } from "intlayer";
    
    const remoteContent = {
      key: "remote_content",
      content: {
        externalContent: fetch("https://example.com").then((res) => res.json()),
      },
    } satisfies Dictionary;
    
    export default remoteContent;
    
    рдЕрдиреБрд░реЛрдз рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рддрд╛рдЬрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдбрд┐рдХреНрд╢рдирд░реА рджреЛрдмрд╛рд░рд╛ рдмрдирд╛рдПрдВред

    React рдШрдЯрдХреЛрдВ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди-рдЖрдзрд╛рд░рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

    React рдШрдЯрдХ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди-рдЖрдзрд╛рд░рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ react-intlayer рд╕реЗ useIntlayer рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╛рдордЧреНрд░реА рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

    **/*.jsx
    import type { FC } from "react";
    import { useIntlayer } from "react-intlayer";
    
    const MyComponent: FC = () => {
      const functionContent = useIntlayer("function_content");
      const asyncFunctionContent = useIntlayer("async_function_content");
    
      return (
        <div>
          <p>{functionContent.text}</p>
          {/* рдЖрдЙрдЯрдкреБрдЯ: рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рд╕рд╛рдордЧреНрд░реА рд╣реИ */}
          <p>{asyncFunctionContent.text}</p>
          {/* рдЖрдЙрдЯрдкреБрдЯ: рдпрд╣ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рд╛рдордЧреНрд░реА рд╣реИ */}
        </div>
      );
    };
    
    export default MyComponent;