рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХреЛ рдкреВрдЫреЗрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕ рдкреГрд╖реНрда рдФрд░ рдЖрдкрдХреЗ рдЪреБрдиреЗ рд╣реБрдП AI рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреБрд░рд╛рдирд╛ рд╣реИ, рдЖрдзрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрд╕ рддрд┐рдерд┐ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ 25 рдЬреВрди 2026.
рдЕрдВрдЧреНрд░реЗрдЬреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдЬрд╛рдПрдБрд╕рдВрд╕реНрдХрд░рдг рдЗрддрд┐рд╣рд╛рд╕
- "рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди"v8.0.021/1/2026
рдЗрд╕ рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХ AI рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХреА рдЧрдИ рд╣реИред
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдореВрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВрдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ GitHub рдкрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП GitHub рд▓рд┐рдВрдХрджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ Markdown рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
intlayerPrune Vite рдкреНрд▓рдЧрдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
intlayerPrune Vite рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдбрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рди рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рдХреНрд╢рдирд░реАрдЬрд╝ рдХреЛ рдЯреНрд░реА-рд╢реЗрдХ рдФрд░ рдкреНрд░реВрди (рд╣рдЯрд╛рдиреЗ) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣реА рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рдЕрдВрддрд┐рдо рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдЖрдк intlayer() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ plugin рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк plugin stack рдХреЛ рд╕реНрд╡рдпрдВ compose рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ
intlayer() рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ (рдЕрдиреБрд╢рдВрд╕рд┐рдд)
рдЕрдкрдиреЗ Intlayer рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ pruning рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдореБрдЦреНрдп рдкреНрд▓рдЧрдЗрди рд╕рдм рдХреБрдЫ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:
рдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд╕реНрд╡рддрдВрддреНрд░
рдпрджрд┐ рдЖрдк рдкреНрд▓рдЧрдЗрди рд╕реНрдЯреИрдХ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдВрдкреЛрдЬрд╝ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ intlayerPrune рдФрд░ intlayerMinify рдПрдХ PruneContext рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рджреЛрдиреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
1. рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (buildStart)
buildStart рдХреЗ рджреМрд░рд╛рди, intlayerOptimize plugin (рдЬреЛ intlayer() рдХрд╛ рднреА рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ) build.filesList рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдкреНрд░рддреНрдпреЗрдХ component source file рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ useIntlayer('key') рдпрд╛ getIntlayer('key') рдХреЙрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ fields рдХреЛ exactly рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕реЗ:
рдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдпрд╣ рдХрд┐рд╕реА рднреА transform рдХреЙрд▓ рдХреЗ рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ pruneContext.fieldUsageMap рдмрдирд╛рддрд╛ рд╣реИред
2. JSON pruning (transform, enforce: 'pre')
рдЬрдм Vite рдПрдХ compiled dictionary JSON рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ intlayerPrune рдЗрд╕реЗ Vite рдХреЗ built-in JSON тЖТ ESM conversion рд╕реЗ рдкрд╣рд▓реЗ intercept рдХрд░рддрд╛ рд╣реИред рдпрд╣ pruneContext рд╕реЗ field-usage map рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА content field рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдЬреЛ recorded usage set рдореЗрдВ рдирд╣реАрдВ рд╣реИред
рджреЛ content shapes рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ:
- Static dictionaries тАФ
{ nodeType: "translation", translation: { en: {...}, fr: {...} } }. Fields рдХреЛtranslationрдХреЗ рдЕрдВрджрд░ per-locale pruned рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред - Dynamic (per-locale) dictionaries тАФ flat
{ fieldA: ..., fieldB: ... }. Fields рдХреЛ top level рдкрд░ pruned рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
3. Edge cases
рдпрджрд┐ рдХрд┐рд╕реА dictionary рдХреА content structure рдХреЛ рдкрд╣рдЪрд╛рдирд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп nested shape), рддреЛ рдЗрд╕реЗ pruneContext.dictionariesWithEdgeCases рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдЫреВрддрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ warning рд▓реЙрдЧ рдХреА рдЬрд╛рддреА рд╣реИред intlayerMinify рднреА рдЗрди dictionaries рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
4. Field-rename map
рдЬрдм pruning рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, intlayerPrune pruneContext.dictionaryKeyToFieldRenameMap рднреА рд▓рд┐рдЦрддрд╛ рд╣реИ тАФ рдореВрд▓ field names рд╕реЗ short aliases рддрдХ рдПрдХ mappingред intlayerMinify рдЗрд╕ map рдХреЛ output JSON рдореЗрдВ fields рдХреЛ rename рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ intlayerOptimize рдХрд╛ Babel rename pass source files рдореЗрдВ property accesses рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред
рд╕рдХреНрд░рд┐рдпрдг рд╢рд░реНрддреЗрдВ
intlayerPrune рд╕рдХреНрд░рд┐рдп рд╣реИ рдХреЗрд╡рд▓ рдЬрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рднреА рд╕рддреНрдп рд╣реЛрдВ:
- Vite рдХрдорд╛рдВрдб
buildрд╣реИред build.optimizetrueрд╣реИ (рдпрд╛undefined, рдЬреЛ builds рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗtrueрд╣реИ)редbuild.purgeрдЖрдкрдХреЗ Intlayer config рдореЗрдВtrueрд╣реИред
рдЬрдм editor.enabled true рд╣реЛрддрд╛ рд╣реИ рддрдм рднреА рдпрд╣ рд╕рдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИ: рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдмрд┐рдирд╛-рдорд░реНрдЬ рдХрд┐рдП рдбрд┐рдХреНрд╢рдирд░реА рдХреЗ рд╡рд┐рд░реБрджреНрдз dictionaryKey + keyPath рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд░ рд╕рдВрдкрд╛рджрди рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдпрд╣ рдкреНрд▓рдЧрдЗрди рдХрднреА рдирд╣реАрдВ рдЫреВрддрд╛, рдФрд░ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рдлрд╝реАрд▓реНрдб рд╡рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЛрдИ рднреА рдХрдВрдкреЛрдиреЗрдВрдЯ рдирд╣реАрдВ рдкрдврд╝рддрд╛ тАФ рдЗрд╕рд▓рд┐рдП рд╡рд╣ рди рдХрднреА рд░реЗрдВрдбрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдкреЗрдЬ рдкрд░ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
