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

    рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рд▓рдЧрд╛рдПрдВ

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

    рд╡рд┐рд╖рдп рд╕реВрдЪреА

    рдпрд╣ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЪрд╛рд╣реЗ рдЖрдк рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

    рдпрд╣рд╛рдБ рдХреБрдЫ рднреА рдХрд┐рд╕реА рдПрдХ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рдкрд╣рдЪрд╛рди рдкрд░рддреЗрдВ i18next, react-i18next, next-intl, react-intl, vue-i18n, next-translate рдпрд╛ Lingui рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╣реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рддреА рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛрддреА рд╣реИрдВред

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

    intlayer.config.ts
    import { syncJSON } from "@intlayer/sync-json-plugin";
    
    const config = {
      plugins: [
        syncJSON({
          source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
          format: "i18next", // рдпрд╛ next-intl / react-intl рдХреЗ рд▓рд┐рдП "icu"
        }),
      ],
    };
    
    export default config;
    

    рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд░рдирдЯрд╛рдЗрдо API рднреА рд╕рдорд╛рди рд░рд╣реЗ, рддреЛ рдХрдореНрдкреИрдЯ рдПрдбреЙрдкреНрдЯрд░ рдмрдВрдбрд▓рд░ рд╕реНрддрд░ рдкрд░ useTranslation, $t рдФрд░ рдорд┐рддреНрд░реЛрдВ рдХреЛ рдПрд▓рд┐рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рддрд░рд╣, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭреЗрдВ, рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВред

    рд╡реЗ рдЕрджреГрд╢реНрдп рдХреНрдпреЛрдВ рд╣реИрдВ

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

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

    рддреЛ рд╕рд╡рд╛рд▓ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдореИрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЧрд╛рдпрдм рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реВрдБ"ред рдпрд╣ рд╣реИ "рдореИрдВ рдЧрд╛рдпрдм рдЕрдиреБрд╡рд╛рдж рдХреЛ рдорд░реНрдЬ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдХреИрд╕реЗ рдмрдирд╛рдКрдВ"ред

    рдЪрд╛рд░ рд╕реНрдерд╛рди рдЬрд╣рд╛рдБ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

    рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдХреБрдЫ рдРрд╕рд╛ рдкрдХрдбрд╝рддреА рд╣реИ рдЬреЛ рдЕрдиреНрдп рдирд╣реАрдВ рдкрдХрдбрд╝ рдкрд╛рддреА рд╣реИрдВред рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

    рдкрд░рддрдХреНрдпрд╛ рдкрдХрдбрд╝рддреА рд╣реИрдХреНрдпрд╛ рдЪреВрдХ рдЬрд╛рддреА рд╣реИ
    рдкреНрд░рдХрд╛рд░ (Types)рд╡реЗ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВрдПрдХ рдХреБрдВрдЬреА рдЬреЛ рдореМрдЬреВрдж рд╣реИ рд▓реЗрдХрд┐рди ja рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдирд╣реАрдВ рд╣реИ
    рд▓рд┐рдВрдЯ (Lint)рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдЬреЛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХрднреА рдирд╣реАрдВ рднреЗрдЬреА рдЧрдИрдВрдХреИрдЯрд▓реЙрдЧ рд╕реЗ рдЧрд╛рдпрдм рдХреБрдВрдЬрд┐рдпрд╛рдБ
    рдСрдбрд┐рдЯ (Audit)рдкреНрд░рддреНрдпреЗрдХ рдШреЛрд╖рд┐рдд рдХреБрдВрдЬреА рдореЗрдВ рд▓реЛрдХреЗрд▓ рдХрд╡рд░реЗрдЬрд╡рд╣ рдкрд╛рда рдЬрд┐рд╕реЗ рдХрднреА рдЕрдиреБрд╡рд╛рдж рдпреЛрдЧреНрдп рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛
    рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдгрдХреБрдВрдЬрд┐рдпрд╛рдБ рдЬреЛ рд╣рд▓ рд╣реЛрддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдЧрд▓рдд рд░реЗрдВрдбрд░ рд╣реЛрддреА рд╣реИрдВрд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ рдХрд┐рд╕реА рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

    рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреАрдореЛрдВ рдХреЗ рдкрд╛рд╕ рдЬреЛ рдЕрдВрддрд░ рд╣реИ рд╡рд╣ рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╣реИ: рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдорд╛рдиреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдпрд╣ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдЕрдард╛рд░рд╣ рд▓реЛрдХреЗрд▓ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд╛рди рд╣реИред

    рдкрд░рдд 1: рдХреБрдВрдЬреА рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдПрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ

    t("checkout.summry.total") рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╕рд╛рджреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдирд╛рдо рдмрджрд▓рдирд╛ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЬреЛрдЦрд┐рдо рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд▓реЛрдкрди рдПрдХ рдЕрдирд╛рде рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

    рдЯрд╛рдЗрдк рдХреА рдЧрдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЗрд╕реЗ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐ рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИрдВред react-i18next рдШреЛрд╖рдгрд╛ рд╡рд┐рд▓рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, next-intl рдЖрдкрдХреЗ рд╕рдВрджреЗрд╢ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ, Lingui рд╕реНрд░реЛрдд рдкрд╛рда рд╕реЗ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ Intlayer рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╡реЗ рд╕рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ; рдЬреЛ рднрд┐рдиреНрди рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рддрдирд╛ рддрд╛рд░ рд▓рдЧрд╛рдирд╛ рд╣реИред

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

    рдкрд░рдд 2: рдЙрди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд▓рд┐рдВрдЯ рдХрд░реЗрдВ рдЬреЛ рдХрднреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдирд╣реАрдВ рдмрдиреАрдВ

    рдЬреЛ рдЕрдиреБрд╡рд╛рдж рдЖрдкрдХреЛ рдирд╣реАрдВ рдорд┐рд▓ рдкрд╛рддрд╛ рд╡рд╣ рдЕрдХреНрд╕рд░ рд╡рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрднреА рдмрд╛рд╣реНрдп рд░реВрдк рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд┐рд╕реА рдШрдЯрдХ рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓реЗрдмрд▓ рдкреНрд░рддреНрдпреЗрдХ рдХреИрдЯрд▓реЙрдЧ-рдЖрдзрд╛рд░рд┐рдд рдСрдбрд┐рдЯ рдХреЗ рд▓рд┐рдП рдЕрджреГрд╢реНрдп рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╣рд╛рдБ рддрдХ рдЯреВрд▓рд┐рдВрдЧ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореМрдЬреВрдж рд╣реА рдирд╣реАрдВ рд╣реИред

    Intlayer рдХрд╛ ESLint рдкреНрд▓рдЧрдЗрди рдЗрд╕реЗ no-raw-text рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд░рд┐рд╡рд░реНрд╕ рдХреЗрд╕ рдХреЗ рд▓рд┐рдП no-unused-content: рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рдФрд░ рдЕрдм рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдкрдврд╝реА рдЧрдИред

    eslint.config.mjs
    import intlayer from "@intlayer/eslint-plugin";
    
    export default [
      intlayer.configs.recommended,
      {
        rules: {
          "@intlayer/no-raw-text": "error",
          "@intlayer/no-unused-content": "warn",
        },
      },
    ];
    

    no-unused-content рд╡рд╣ рд╣реИ рдЬреЛ рдХреИрдЯрд▓реЙрдЧ рдХреЛ рд╣рдореЗрд╢рд╛ рдмрдврд╝рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдореГрдд рдХреБрдВрдЬрд┐рдпрд╛рдБ рдХреЛрдИ рд╢реБрджреНрдзрддрд╛ рдмрдЧ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд╣реА рд╣реИрдВ рдЬреЛ рдЕрдиреБрд╡рд╛рдж рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдЪрд╛рд▓рд╛рди рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдбрд╝рд╛ рдмрдирд╛рддреА рд╣реИрдВред ESLint рдкреНрд▓рдЧрдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкреВрд░реНрдг рдирд┐рдпрдо рд╕реВрдЪреАред

    рдкрд░рдд 3: рдСрдбрд┐рдЯ рд▓реЛрдХреЗрд▓ рдХрд╡рд░реЗрдЬ

    рдпрд╣ рд╡рд╣ рдкрд░рдд рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреА рд╣реИред Intlayer рдЗрд╕реЗ CLI рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ:

    bash
    npx intlayer content test
    

    рдпрд╣ рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд▓реЛрдХреЗрд▓ рдФрд░ рдШреЛрд╖рд┐рдд рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдлрд┐рд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдХрд┐рд╕ рд▓реЛрдХреЗрд▓ рдореЗрдВ рдФрд░ рдХрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЧрд╛рдпрдм рд╣реИрдВред

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

    рдкрд░рдд 4: рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рдЬреЛрд░ рджреЗрдВ

    listMissingTranslations() рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╣реА рдСрдбрд┐рдЯ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЖрдк рдмрд┐рд▓реНрдб рдЧреЗрдЯ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВред

    i18n.test.ts
    /* @vitest-environment node */
    import { listMissingTranslations } from "intlayer/cli";
    import { describe, expect, it } from "vitest";
    
    describe("translations", () => {
      it("has no missing required locales", async () => {
        const result = await listMissingTranslations();
    
        if (result.missingRequiredLocales.length > 0) {
          console.log(result.missingTranslations);
        }
    
        expect(result.missingRequiredLocales).toHaveLength(0);
      });
    });
    

    рддреАрди рдлрд╝реАрд▓реНрдб рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рднреЗрдж рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ:

    • missingTranslations: рдкреНрд░рддрд┐ рдХреБрдВрдЬреА, рдХреМрди рд╕реЗ рд▓реЛрдХреЗрд▓ рдЧрд╛рдпрдм рд╣реИрдВ рдФрд░ рдХрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗред рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдЖрдк рдпрд╣реА рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред
    • missingLocales: рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдореЗрдВ рд╕рдВрдШред
    • missingRequiredLocales: рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ requiredLocales рддрдХ рд╕реАрдорд┐рдд, рдпрд╛ рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рд╕рднреА рд▓реЛрдХреЗрд▓ред

    requiredLocales рдЙрдкрдпреЛрдЧреА рдШреБрдВрдбреА рд╣реИ

    рдЕрдард╛рд░рд╣ рд▓реЛрдХреЗрд▓ рд╢рд┐рдкрд┐рдВрдЧ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдард╛рд░рд╣ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреАрдореЛрдВ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрддрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реНрддрд░ рдЬреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдпрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред

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

    requiredLocales рдХреЗ рдмрд┐рдирд╛, рдкреНрд░рддреНрдпреЗрдХ рдШреЛрд╖рд┐рдд рд▓реЛрдХреЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдмрд┐рд▓реНрдб рддрдм рддрдХ рд▓рд╛рд▓ рд░рд╣рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЕрдВрддрд┐рдо рднрд╛рд╖рд╛ рди рдЖ рдЬрд╛рдПред рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реА рддрд░рд╣ рдЯреАрдореЗрдВ рдЬрд╛рдВрдЪ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддреА рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЗрд╕реЗ рди рд░рдЦрдиреЗ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИред

    рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣реИрдВ

    рдКрдкрд░ рджреА рдЧрдИ рдкрд░рддреЗрдВ рдирдП рдЕрдВрддрд░рд╛рд▓реЛрдВ рдХреЛ рд░реЛрдХрддреА рд╣реИрдВред рдкрд╣рд▓реЗ рд╕реЗ рд╢рд┐рдк рдХрд┐рдП рдЧрдП рдРрдк рдХреЗ рд▓рд┐рдП, рджреЛ рдЪреАрдЬрд╝реЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВред

    рд╕реНрдпреВрдбреЛрд▓реЙрдХрд╛рд▓рд╛рдЗрдЬрд╝реЗрд╢рдиред рдПрдХ рдРрд╕рд╛ рд▓реЛрдХреЗрд▓ рдЪрд▓рд╛рдПрдБ рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрджрд▓ рджреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП [!!! ─И─е├й├з─╖├╢┼й┼г !!!]ред рд╕рд╛рджреЗ рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рднреА рдЪреАрдЬрд╝ рд╣рд╛рд░реНрдбрдХреЛрдб рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рджрд╕ рдорд┐рдирдЯ рдореЗрдВ рд╡рд╣ рдвреВрдВрдв рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХреИрдЯрд▓реЙрдЧ рдСрдбрд┐рдЯ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреИрдЯрд▓реЙрдЧ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рд╕реНрддреБрдд рдкреГрд╖реНрда рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИред

    рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕рд╛рдЗрдЯ рдХреНрд░реЙрд▓ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рд╕реНрдерд╛рдиреАрдпрдХреГрдд URL рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ рдирдореВрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рднрд╛рд╖рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП HTML рдХреЛ рдЧреНрд░реИрдк рдХрд░реЗрдВред /ja/ рдореЗрдВ "Add to cart" рд╡рд╛рд▓рд╛ рдкреЗрдЬ рдпрд╛ рддреЛ рдПрдХ рдЧрд╛рдпрдм рдЕрдиреБрд╡рд╛рдж рд╣реИ рдпрд╛ рдПрдХ рдлрд╝реЙрд▓рдмреИрдХ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдереЗред

    bash
    curl -s https://example.com/ja/checkout | grep -c "Add to cart"
    

    рдЕрдВрддрд░рд╛рд▓ рдХреЛ рднрд░рдирд╛

    рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЬрд╛рди рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЧрд╛рдпрдм рд╣реИ, рддреЛ intlayer fill рдЦрд╛рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рднрд░рддрд╛ рд╣реИ, рдФрд░ autoFill рд╡рд┐рдХрд▓реНрдк рд╕рд╛рдордЧреНрд░реА рдШреЛрд╖рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддрд┐-рд▓реЛрдХреЗрд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред autoFill рджреЗрдЦреЗрдВред

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

    рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпрд╛рдБ

    • рдлрд╝реЙрд▓рдмреИрдХ рдХреЛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдирд╛ред рдпрд╣ рдПрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рд╣реИ, рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рд▓ рдирд╣реАрдВред рдПрдХ рдореВрдХ рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдкреГрд╖реНрда рдПрдХ рдРрд╕рд╛ рдмрдЧ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
    • CI рдХреЛ рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CLI рд░рд┐рдкреЛрд░реНрдЯ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ред intlayer content test рд╢реВрдиреНрдп рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИред рдПрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЬреЛрд░ рджреЗрдВред
    • рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдХреЛрдИ рд░рд┐рд▓реАрдЬрд╝ рдЖрдзреА-рдЕрдзреВрд░реА рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рд╣реЛрддреА рд╣реИ, рддреЛ рдЬрд╛рдВрдЪ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
    • рдХреИрдЯрд▓реЙрдЧ рдХрд╛ рдСрдбрд┐рдЯ рдХрд░рдирд╛ рд▓реЗрдХрд┐рди рдХрднреА рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдкреЗрдЬ рдХрд╛ рдирд╣реАрдВред рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреИрдЯрд▓реЙрдЧ рдСрдбрд┐рдЯ рдХреЗ рд▓рд┐рдП рдЕрджреГрд╢реНрдп рд╣реИрдВред
    • рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ред рд╡рд╣ рдПрдХрдорд╛рддреНрд░ рд▓реЛрдХреЗрд▓ рдЬреЛ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред
    • рдорд╢реАрди рдлрд┐рд▓ рдХреЛ рд▓реВрдк рдмрдВрдж рдХрд░рдиреЗ рджреЗрдирд╛ред рд╣рд░рд╛ рдСрдбрд┐рдЯ, рдЕрд╕рдореАрдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ред

    рдЖрдЧреЗ рдкрдврд╝реЗрдВ

    рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

    рдЕрднреА рддрдХ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдмрдиреЗрдВред

    рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд╕реНрдЯ

    рдирд╡реАрдирддрдо рдкреЛрд╕реНрдЯ