@intlayer/docs 8.3.0-canary.4 → 8.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ar/compiler.md +84 -49
- package/docs/ar/configuration.md +80 -37
- package/docs/ar/intlayer_with_nextjs_16.md +174 -1
- package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ar/intlayer_with_react_router_v7.md +224 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ar/intlayer_with_svelte_kit.md +175 -2
- package/docs/ar/intlayer_with_tanstack.md +176 -1
- package/docs/ar/intlayer_with_vite+preact.md +174 -1
- package/docs/ar/intlayer_with_vite+react.md +174 -1
- package/docs/ar/intlayer_with_vite+solid.md +174 -1
- package/docs/ar/intlayer_with_vite+svelte.md +174 -1
- package/docs/ar/intlayer_with_vite+vue.md +174 -1
- package/docs/de/compiler.md +83 -48
- package/docs/de/configuration.md +434 -212
- package/docs/de/intlayer_with_nextjs_16.md +176 -1
- package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
- package/docs/de/intlayer_with_react_router_v7.md +225 -2
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
- package/docs/de/intlayer_with_svelte_kit.md +158 -2
- package/docs/de/intlayer_with_tanstack.md +159 -1
- package/docs/de/intlayer_with_vite+preact.md +157 -1
- package/docs/de/intlayer_with_vite+react.md +157 -1
- package/docs/de/intlayer_with_vite+solid.md +159 -3
- package/docs/de/intlayer_with_vite+svelte.md +157 -1
- package/docs/de/intlayer_with_vite+vue.md +157 -1
- package/docs/en/compiler.md +60 -33
- package/docs/en/configuration.md +80 -57
- package/docs/en/intlayer_with_nextjs_16.md +176 -0
- package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
- package/docs/en/intlayer_with_react_router_v7.md +159 -0
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
- package/docs/en/intlayer_with_svelte_kit.md +159 -0
- package/docs/en/intlayer_with_tanstack.md +160 -1
- package/docs/en/intlayer_with_vite+preact.md +159 -0
- package/docs/en/intlayer_with_vite+react.md +159 -0
- package/docs/en/intlayer_with_vite+solid.md +148 -27
- package/docs/en/intlayer_with_vite+svelte.md +159 -0
- package/docs/en/intlayer_with_vite+vue.md +142 -41
- package/docs/en-GB/compiler.md +66 -34
- package/docs/en-GB/configuration.md +78 -36
- package/docs/es/compiler.md +83 -48
- package/docs/es/configuration.md +429 -206
- package/docs/es/intlayer_with_adonisjs.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_fastify.md +1 -1
- package/docs/es/intlayer_with_hono.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +176 -3
- package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
- package/docs/es/intlayer_with_nuxt.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +227 -4
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
- package/docs/es/intlayer_with_svelte_kit.md +158 -2
- package/docs/es/intlayer_with_tanstack.md +160 -2
- package/docs/es/intlayer_with_vite+preact.md +162 -6
- package/docs/es/intlayer_with_vite+react.md +160 -4
- package/docs/es/intlayer_with_vite+solid.md +163 -7
- package/docs/es/intlayer_with_vite+svelte.md +157 -1
- package/docs/es/intlayer_with_vite+vue.md +165 -9
- package/docs/fr/compiler.md +81 -46
- package/docs/fr/configuration.md +355 -134
- package/docs/fr/intlayer_with_adonisjs.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_fastify.md +1 -1
- package/docs/fr/intlayer_with_hono.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +183 -7
- package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
- package/docs/fr/intlayer_with_react_router_v7.md +229 -3
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
- package/docs/fr/intlayer_with_svelte_kit.md +158 -2
- package/docs/fr/intlayer_with_tanstack.md +159 -1
- package/docs/fr/intlayer_with_vite+preact.md +164 -8
- package/docs/fr/intlayer_with_vite+react.md +162 -6
- package/docs/fr/intlayer_with_vite+solid.md +163 -7
- package/docs/fr/intlayer_with_vite+svelte.md +157 -1
- package/docs/fr/intlayer_with_vite+vue.md +164 -8
- package/docs/hi/compiler.md +81 -46
- package/docs/hi/configuration.md +87 -44
- package/docs/hi/intlayer_with_nextjs_16.md +174 -1
- package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/hi/intlayer_with_react_router_v7.md +224 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/hi/intlayer_with_svelte_kit.md +158 -2
- package/docs/hi/intlayer_with_tanstack.md +159 -1
- package/docs/hi/intlayer_with_vite+preact.md +157 -1
- package/docs/hi/intlayer_with_vite+react.md +157 -1
- package/docs/hi/intlayer_with_vite+solid.md +157 -1
- package/docs/hi/intlayer_with_vite+svelte.md +157 -1
- package/docs/hi/intlayer_with_vite+vue.md +157 -1
- package/docs/id/compiler.md +84 -51
- package/docs/id/configuration.md +83 -45
- package/docs/id/intlayer_with_nextjs_16.md +174 -1
- package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/id/intlayer_with_react_router_v7.md +224 -1
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/id/intlayer_with_svelte_kit.md +158 -2
- package/docs/id/intlayer_with_tanstack.md +159 -1
- package/docs/id/intlayer_with_vite+preact.md +157 -1
- package/docs/id/intlayer_with_vite+react.md +157 -1
- package/docs/id/intlayer_with_vite+solid.md +157 -1
- package/docs/id/intlayer_with_vite+svelte.md +157 -1
- package/docs/id/intlayer_with_vite+vue.md +157 -1
- package/docs/it/compiler.md +81 -46
- package/docs/it/configuration.md +426 -204
- package/docs/it/intlayer_with_nextjs_16.md +174 -1
- package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/it/intlayer_with_react_router_v7.md +225 -2
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/it/intlayer_with_svelte_kit.md +158 -2
- package/docs/it/intlayer_with_tanstack.md +159 -1
- package/docs/it/intlayer_with_vite+preact.md +157 -1
- package/docs/it/intlayer_with_vite+react.md +157 -1
- package/docs/it/intlayer_with_vite+solid.md +159 -3
- package/docs/it/intlayer_with_vite+svelte.md +157 -1
- package/docs/it/intlayer_with_vite+vue.md +157 -1
- package/docs/ja/compiler.md +94 -58
- package/docs/ja/configuration.md +88 -45
- package/docs/ja/intlayer_with_nextjs_16.md +174 -1
- package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ja/intlayer_with_react_router_v7.md +184 -394
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ja/intlayer_with_svelte_kit.md +119 -595
- package/docs/ja/intlayer_with_tanstack.md +131 -642
- package/docs/ja/intlayer_with_vite+preact.md +111 -1231
- package/docs/ja/intlayer_with_vite+react.md +129 -1304
- package/docs/ja/intlayer_with_vite+solid.md +159 -3
- package/docs/ja/intlayer_with_vite+svelte.md +157 -1
- package/docs/ja/intlayer_with_vite+vue.md +157 -1
- package/docs/ko/compiler.md +88 -52
- package/docs/ko/configuration.md +87 -44
- package/docs/ko/intlayer_with_nextjs_16.md +174 -1
- package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ko/intlayer_with_react_router_v7.md +225 -2
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ko/intlayer_with_svelte_kit.md +158 -2
- package/docs/ko/intlayer_with_tanstack.md +159 -1
- package/docs/ko/intlayer_with_vite+preact.md +157 -1
- package/docs/ko/intlayer_with_vite+react.md +157 -1
- package/docs/ko/intlayer_with_vite+solid.md +159 -3
- package/docs/ko/intlayer_with_vite+svelte.md +157 -1
- package/docs/ko/intlayer_with_vite+vue.md +157 -1
- package/docs/pl/compiler.md +84 -51
- package/docs/pl/configuration.md +83 -37
- package/docs/pl/intlayer_with_nextjs_16.md +174 -1
- package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pl/intlayer_with_react_router_v7.md +224 -1
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pl/intlayer_with_svelte_kit.md +158 -2
- package/docs/pl/intlayer_with_tanstack.md +159 -1
- package/docs/pl/intlayer_with_vite+preact.md +157 -1
- package/docs/pl/intlayer_with_vite+react.md +157 -1
- package/docs/pl/intlayer_with_vite+solid.md +157 -1
- package/docs/pl/intlayer_with_vite+svelte.md +157 -1
- package/docs/pl/intlayer_with_vite+vue.md +157 -1
- package/docs/pt/compiler.md +81 -46
- package/docs/pt/configuration.md +404 -194
- package/docs/pt/intlayer_with_nextjs_16.md +174 -1
- package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pt/intlayer_with_react_router_v7.md +224 -1
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pt/intlayer_with_svelte_kit.md +158 -2
- package/docs/pt/intlayer_with_tanstack.md +159 -1
- package/docs/pt/intlayer_with_vite+preact.md +157 -1
- package/docs/pt/intlayer_with_vite+react.md +157 -1
- package/docs/pt/intlayer_with_vite+solid.md +157 -1
- package/docs/pt/intlayer_with_vite+svelte.md +157 -1
- package/docs/pt/intlayer_with_vite+vue.md +157 -1
- package/docs/ru/compiler.md +90 -57
- package/docs/ru/configuration.md +76 -46
- package/docs/ru/intlayer_with_nextjs_16.md +174 -1
- package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ru/intlayer_with_react_router_v7.md +224 -1
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ru/intlayer_with_svelte_kit.md +158 -2
- package/docs/ru/intlayer_with_tanstack.md +159 -1
- package/docs/ru/intlayer_with_vite+preact.md +157 -1
- package/docs/ru/intlayer_with_vite+react.md +157 -1
- package/docs/ru/intlayer_with_vite+solid.md +157 -1
- package/docs/ru/intlayer_with_vite+svelte.md +157 -1
- package/docs/ru/intlayer_with_vite+vue.md +157 -1
- package/docs/tr/compiler.md +85 -52
- package/docs/tr/configuration.md +83 -40
- package/docs/tr/intlayer_with_nextjs_16.md +174 -1
- package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/tr/intlayer_with_react_router_v7.md +224 -1
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/tr/intlayer_with_svelte_kit.md +158 -2
- package/docs/tr/intlayer_with_tanstack.md +159 -1
- package/docs/tr/intlayer_with_vite+preact.md +157 -1
- package/docs/tr/intlayer_with_vite+react.md +157 -1
- package/docs/tr/intlayer_with_vite+solid.md +157 -1
- package/docs/tr/intlayer_with_vite+svelte.md +157 -1
- package/docs/tr/intlayer_with_vite+vue.md +157 -1
- package/docs/uk/compiler.md +96 -61
- package/docs/uk/configuration.md +83 -37
- package/docs/uk/intlayer_with_nextjs_16.md +174 -1
- package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/uk/intlayer_with_react_router_v7.md +224 -1
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/uk/intlayer_with_svelte_kit.md +157 -1
- package/docs/uk/intlayer_with_tanstack.md +159 -1
- package/docs/uk/intlayer_with_vite+preact.md +157 -1
- package/docs/uk/intlayer_with_vite+react.md +157 -1
- package/docs/uk/intlayer_with_vite+solid.md +157 -1
- package/docs/uk/intlayer_with_vite+svelte.md +157 -1
- package/docs/uk/intlayer_with_vite+vue.md +157 -1
- package/docs/vi/compiler.md +85 -50
- package/docs/vi/configuration.md +85 -39
- package/docs/vi/intlayer_with_nextjs_16.md +174 -1
- package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/vi/intlayer_with_react_router_v7.md +224 -1
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/vi/intlayer_with_svelte_kit.md +158 -2
- package/docs/vi/intlayer_with_tanstack.md +159 -1
- package/docs/vi/intlayer_with_vite+preact.md +157 -1
- package/docs/vi/intlayer_with_vite+react.md +157 -1
- package/docs/vi/intlayer_with_vite+solid.md +157 -1
- package/docs/vi/intlayer_with_vite+svelte.md +157 -1
- package/docs/vi/intlayer_with_vite+vue.md +157 -1
- package/docs/zh/compiler.md +84 -49
- package/docs/zh/configuration.md +80 -37
- package/docs/zh/intlayer_with_adonisjs.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_fastify.md +1 -1
- package/docs/zh/intlayer_with_hono.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +174 -1
- package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/zh/intlayer_with_react_router_v7.md +227 -4
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
- package/docs/zh/intlayer_with_svelte_kit.md +158 -2
- package/docs/zh/intlayer_with_tanstack.md +159 -1
- package/docs/zh/intlayer_with_vite+preact.md +159 -3
- package/docs/zh/intlayer_with_vite+react.md +157 -1
- package/docs/zh/intlayer_with_vite+solid.md +161 -5
- package/docs/zh/intlayer_with_vite+svelte.md +157 -1
- package/docs/zh/intlayer_with_vite+vue.md +158 -2
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Vite + Svelte i18n - Як перекласти додаток Svelte у 2026
|
|
5
5
|
description: "Дізнайтеся, як зробити ваш вебсайт на Vite та Svelte багатомовним. Дотримуйтеся документації, щоб інтернаціоналізувати (i18n) і перекласти його."
|
|
6
6
|
keywords:
|
|
@@ -517,6 +517,162 @@ const changeLocale = (event: Event) => {
|
|
|
517
517
|
|
|
518
518
|
---
|
|
519
519
|
|
|
520
|
+
### (Необов'язково) Крок 1 : Витягніть вміст ваших компонентів
|
|
521
|
+
|
|
522
|
+
Якщо у вас є існуюча кодова база, перетворення тисяч файлів може зайняти багато часу.
|
|
523
|
+
|
|
524
|
+
Щоб спростити цей процес, Intlayer пропонує [компілятор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md) / [екстрактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/extract.md) для перетворення ваших компонентів і витягування вмісту.
|
|
525
|
+
|
|
526
|
+
Щоб налаштувати його, ви можете додати розділ `compiler` у свій файл `intlayer.config.ts`:
|
|
527
|
+
|
|
528
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
529
|
+
import { type IntlayerConfig } from "intlayer";
|
|
530
|
+
|
|
531
|
+
const config: IntlayerConfig = {
|
|
532
|
+
// ... Інша частина вашої конфігурації
|
|
533
|
+
compiler: {
|
|
534
|
+
/**
|
|
535
|
+
* Вказує, чи повинен бути включений компілятор.
|
|
536
|
+
*/
|
|
537
|
+
enabled: true,
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* Визначає шлях до вихідних файлів
|
|
541
|
+
*/
|
|
542
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.
|
|
546
|
+
*/
|
|
547
|
+
saveComponents: false,
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Префікс ключа словника
|
|
551
|
+
*/
|
|
552
|
+
dictionaryKeyPrefix: "",
|
|
553
|
+
},
|
|
554
|
+
};
|
|
555
|
+
|
|
556
|
+
export default config;
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
560
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
561
|
+
const config = {
|
|
562
|
+
// ... Інша частина вашої конфігурації
|
|
563
|
+
compiler: {
|
|
564
|
+
/**
|
|
565
|
+
* Вказує, чи повинен бути включений компілятор.
|
|
566
|
+
*/
|
|
567
|
+
enabled: true,
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Визначає шлях до вихідних файлів
|
|
571
|
+
*/
|
|
572
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.
|
|
576
|
+
*/
|
|
577
|
+
saveComponents: false,
|
|
578
|
+
|
|
579
|
+
/**
|
|
580
|
+
* Префікс ключа словника
|
|
581
|
+
*/
|
|
582
|
+
dictionaryKeyPrefix: "",
|
|
583
|
+
},
|
|
584
|
+
};
|
|
585
|
+
|
|
586
|
+
export default config;
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
590
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
591
|
+
const config = {
|
|
592
|
+
// ... Інша частина вашої конфігурації
|
|
593
|
+
compiler: {
|
|
594
|
+
/**
|
|
595
|
+
* Вказує, чи повинен бути включений компілятор.
|
|
596
|
+
*/
|
|
597
|
+
enabled: true,
|
|
598
|
+
|
|
599
|
+
/**
|
|
600
|
+
* Визначає шлях до вихідних файлів
|
|
601
|
+
*/
|
|
602
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.
|
|
606
|
+
*/
|
|
607
|
+
saveComponents: false,
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* Префікс ключа словника
|
|
611
|
+
*/
|
|
612
|
+
dictionaryKeyPrefix: "",
|
|
613
|
+
},
|
|
614
|
+
};
|
|
615
|
+
|
|
616
|
+
module.exports = config;
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
<Tabs>
|
|
620
|
+
<Tab value='Команда витягування'>
|
|
621
|
+
|
|
622
|
+
Запустіть екстрактор для перетворення компонентів і витягування вмісту
|
|
623
|
+
|
|
624
|
+
```bash packageManager="npm"
|
|
625
|
+
npx intlayer extract
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
```bash packageManager="pnpm"
|
|
629
|
+
pnpm intlayer extract
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
```bash packageManager="yarn"
|
|
633
|
+
yarn intlayer extract
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
```bash packageManager="bun"
|
|
637
|
+
bunx intlayer extract
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
</Tab>
|
|
641
|
+
<Tab value='Компілятор Babel'>
|
|
642
|
+
|
|
643
|
+
Оновіть свій `vite.config.ts`, щоб включити плагін `intlayerCompiler`:
|
|
644
|
+
|
|
645
|
+
```ts fileName="vite.config.ts"
|
|
646
|
+
import { defineConfig } from "vite";
|
|
647
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
648
|
+
|
|
649
|
+
export default defineConfig({
|
|
650
|
+
plugins: [
|
|
651
|
+
intlayer(),
|
|
652
|
+
intlayerCompiler(), // Додає плагін компілятора
|
|
653
|
+
],
|
|
654
|
+
});
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
```bash packageManager="npm"
|
|
658
|
+
npm run build # Або npm run dev
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
```bash packageManager="pnpm"
|
|
662
|
+
pnpm run build # Or pnpm run dev
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
```bash packageManager="yarn"
|
|
666
|
+
yarn build # Or yarn dev
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
```bash packageManager="bun"
|
|
670
|
+
bun run build # Or bun run dev
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
</Tab>
|
|
674
|
+
</Tabs>
|
|
675
|
+
|
|
520
676
|
### Розширені можливості
|
|
521
677
|
|
|
522
678
|
Щоб рухатися далі, ви можете реалізувати [візуальний редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md) або винести свій контент у зовнішню систему за допомогою [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Vite + Vue i18n - Як перекласти додаток Vue у 2026
|
|
5
5
|
description: Дізнайтеся, як зробити свій вебсайт на Vite і Vue багатомовним. Дотримуйтеся документації, щоб інтернаціоналізувати (i18n) та перекласти його.
|
|
6
6
|
keywords:
|
|
@@ -1108,6 +1108,162 @@ Intlayer використовує module augmentation, щоб скористат
|
|
|
1108
1108
|
|
|
1109
1109
|
---
|
|
1110
1110
|
|
|
1111
|
+
### (Необов'язково) Крок 1 : Витягніть вміст ваших компонентів
|
|
1112
|
+
|
|
1113
|
+
Якщо у вас є існуюча кодова база, перетворення тисяч файлів може зайняти багато часу.
|
|
1114
|
+
|
|
1115
|
+
Щоб спростити цей процес, Intlayer пропонує [компілятор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/compiler.md) / [екстрактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/extract.md) для перетворення ваших компонентів і витягування вмісту.
|
|
1116
|
+
|
|
1117
|
+
Щоб налаштувати його, ви можете додати розділ `compiler` у свій файл `intlayer.config.ts`:
|
|
1118
|
+
|
|
1119
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
1120
|
+
import { type IntlayerConfig } from "intlayer";
|
|
1121
|
+
|
|
1122
|
+
const config: IntlayerConfig = {
|
|
1123
|
+
// ... Інша частина вашої конфігурації
|
|
1124
|
+
compiler: {
|
|
1125
|
+
/**
|
|
1126
|
+
* Вказує, чи повинен бути включений компілятор.
|
|
1127
|
+
*/
|
|
1128
|
+
enabled: true,
|
|
1129
|
+
|
|
1130
|
+
/**
|
|
1131
|
+
* Визначає шлях до вихідних файлів
|
|
1132
|
+
*/
|
|
1133
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1134
|
+
|
|
1135
|
+
/**
|
|
1136
|
+
* Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.
|
|
1137
|
+
*/
|
|
1138
|
+
saveComponents: false,
|
|
1139
|
+
|
|
1140
|
+
/**
|
|
1141
|
+
* Префікс ключа словника
|
|
1142
|
+
*/
|
|
1143
|
+
dictionaryKeyPrefix: "",
|
|
1144
|
+
},
|
|
1145
|
+
};
|
|
1146
|
+
|
|
1147
|
+
export default config;
|
|
1148
|
+
```
|
|
1149
|
+
|
|
1150
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1151
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1152
|
+
const config = {
|
|
1153
|
+
// ... Інша частина вашої конфігурації
|
|
1154
|
+
compiler: {
|
|
1155
|
+
/**
|
|
1156
|
+
* Вказує, чи повинен бути включений компілятор.
|
|
1157
|
+
*/
|
|
1158
|
+
enabled: true,
|
|
1159
|
+
|
|
1160
|
+
/**
|
|
1161
|
+
* Визначає шлях до вихідних файлів
|
|
1162
|
+
*/
|
|
1163
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1164
|
+
|
|
1165
|
+
/**
|
|
1166
|
+
* Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.
|
|
1167
|
+
*/
|
|
1168
|
+
saveComponents: false,
|
|
1169
|
+
|
|
1170
|
+
/**
|
|
1171
|
+
* Префікс ключа словника
|
|
1172
|
+
*/
|
|
1173
|
+
dictionaryKeyPrefix: "",
|
|
1174
|
+
},
|
|
1175
|
+
};
|
|
1176
|
+
|
|
1177
|
+
export default config;
|
|
1178
|
+
```
|
|
1179
|
+
|
|
1180
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1181
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1182
|
+
const config = {
|
|
1183
|
+
// ... Інша частина вашої конфігурації
|
|
1184
|
+
compiler: {
|
|
1185
|
+
/**
|
|
1186
|
+
* Вказує, чи повинен бути включений компілятор.
|
|
1187
|
+
*/
|
|
1188
|
+
enabled: true,
|
|
1189
|
+
|
|
1190
|
+
/**
|
|
1191
|
+
* Визначає шлях до вихідних файлів
|
|
1192
|
+
*/
|
|
1193
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1194
|
+
|
|
1195
|
+
/**
|
|
1196
|
+
* Вказує, чи повинні компоненти зберігатися після перетворення. Таким чином, компілятор можна запустити лише один раз для перетворення програми, а потім видалити.
|
|
1197
|
+
*/
|
|
1198
|
+
saveComponents: false,
|
|
1199
|
+
|
|
1200
|
+
/**
|
|
1201
|
+
* Префікс ключа словника
|
|
1202
|
+
*/
|
|
1203
|
+
dictionaryKeyPrefix: "",
|
|
1204
|
+
},
|
|
1205
|
+
};
|
|
1206
|
+
|
|
1207
|
+
module.exports = config;
|
|
1208
|
+
```
|
|
1209
|
+
|
|
1210
|
+
<Tabs>
|
|
1211
|
+
<Tab value='Команда витягування'>
|
|
1212
|
+
|
|
1213
|
+
Запустіть екстрактор для перетворення компонентів і витягування вмісту
|
|
1214
|
+
|
|
1215
|
+
```bash packageManager="npm"
|
|
1216
|
+
npx intlayer extract
|
|
1217
|
+
```
|
|
1218
|
+
|
|
1219
|
+
```bash packageManager="pnpm"
|
|
1220
|
+
pnpm intlayer extract
|
|
1221
|
+
```
|
|
1222
|
+
|
|
1223
|
+
```bash packageManager="yarn"
|
|
1224
|
+
yarn intlayer extract
|
|
1225
|
+
```
|
|
1226
|
+
|
|
1227
|
+
```bash packageManager="bun"
|
|
1228
|
+
bunx intlayer extract
|
|
1229
|
+
```
|
|
1230
|
+
|
|
1231
|
+
</Tab>
|
|
1232
|
+
<Tab value='Компілятор Babel'>
|
|
1233
|
+
|
|
1234
|
+
Оновіть свій `vite.config.ts`, щоб включити плагін `intlayerCompiler`:
|
|
1235
|
+
|
|
1236
|
+
```ts fileName="vite.config.ts"
|
|
1237
|
+
import { defineConfig } from "vite";
|
|
1238
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
1239
|
+
|
|
1240
|
+
export default defineConfig({
|
|
1241
|
+
plugins: [
|
|
1242
|
+
intlayer(),
|
|
1243
|
+
intlayerCompiler(), // Додає плагін компілятора
|
|
1244
|
+
],
|
|
1245
|
+
});
|
|
1246
|
+
```
|
|
1247
|
+
|
|
1248
|
+
```bash packageManager="npm"
|
|
1249
|
+
npm run build # Або npm run dev
|
|
1250
|
+
```
|
|
1251
|
+
|
|
1252
|
+
```bash packageManager="pnpm"
|
|
1253
|
+
pnpm run build # Or pnpm run dev
|
|
1254
|
+
```
|
|
1255
|
+
|
|
1256
|
+
```bash packageManager="yarn"
|
|
1257
|
+
yarn build # Or yarn dev
|
|
1258
|
+
```
|
|
1259
|
+
|
|
1260
|
+
```bash packageManager="bun"
|
|
1261
|
+
bun run build # Or bun run dev
|
|
1262
|
+
```
|
|
1263
|
+
|
|
1264
|
+
</Tab>
|
|
1265
|
+
</Tabs>
|
|
1266
|
+
|
|
1111
1267
|
### Щоб піти далі
|
|
1112
1268
|
|
|
1113
1269
|
Щоб рухатися далі, ви можете реалізувати [візуальний редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md) або винести свій контент за допомогою [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md).
|
package/docs/vi/compiler.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-09
|
|
3
|
-
updatedAt: 2026-03-
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Trình Biên Dịch Intlayer | Trích Xuất Nội Dung Tự Động cho i18n
|
|
5
5
|
description: Tự động hóa quy trình quốc tế hóa của bạn với Trình Biên Dịch Intlayer. Trích xuất nội dung trực tiếp từ các component để i18n nhanh hơn và hiệu quả hơn trong Vite, Next.js và nhiều hơn nữa.
|
|
6
6
|
keywords:
|
|
@@ -22,7 +22,7 @@ slugs:
|
|
|
22
22
|
history:
|
|
23
23
|
- version: 8.2.0
|
|
24
24
|
date: 2026-03-09
|
|
25
|
-
changes:
|
|
25
|
+
changes: Cập nhật các tùy chọn trình biên dịch, thêm hỗ trợ FilePathPattern
|
|
26
26
|
- version: 8.1.7
|
|
27
27
|
date: 2026-02-25
|
|
28
28
|
changes: Cập nhật các tùy chọn trình biên dịch
|
|
@@ -136,9 +136,9 @@ const {
|
|
|
136
136
|
module.exports = {
|
|
137
137
|
presets: ["next/babel"],
|
|
138
138
|
plugins: [
|
|
139
|
-
//
|
|
139
|
+
// Trích xuất nội dung từ các component vào từ điển
|
|
140
140
|
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
141
|
-
//
|
|
141
|
+
// Tối ưu hóa việc import bằng cách thay thế useIntlayer bằng việc import trực tiếp từ điển
|
|
142
142
|
[intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
|
|
143
143
|
],
|
|
144
144
|
};
|
|
@@ -149,73 +149,85 @@ Cấu hình này đảm bảo rằng nội dung được khai báo trong các co
|
|
|
149
149
|
See complete tutorial: [Intlayer Compiler with Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_nextjs_compiler.md)
|
|
150
150
|
|
|
151
151
|
</Tab>
|
|
152
|
+
</Tabs>
|
|
152
153
|
|
|
153
154
|
### Cấu hình tùy chỉnh
|
|
154
155
|
|
|
155
156
|
Để tùy chỉnh hành vi của trình biên dịch, bạn có thể cập nhật tệp `intlayer.config.ts` trong thư mục gốc của dự án.
|
|
156
157
|
|
|
157
|
-
|
|
158
|
+
````ts fileName="intlayer.config.ts"
|
|
158
159
|
import { type IntlayerConfig, Locales } from "intlayer";
|
|
159
160
|
|
|
160
161
|
const config: IntlayerConfig = {
|
|
161
162
|
compiler: {
|
|
162
163
|
/**
|
|
164
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
163
165
|
* Đặt thành 'build-only' để bỏ qua trình biên dịch trong quá trình phát triển và tăng tốc thời gian khởi động.
|
|
164
166
|
*/
|
|
165
167
|
enabled: true,
|
|
166
168
|
|
|
167
169
|
/**
|
|
168
|
-
*
|
|
170
|
+
* Xác định đường dẫn tệp đầu ra. Thay thế `outputDir`.
|
|
171
|
+
*
|
|
172
|
+
* - Các đường dẫn bắt đầu bằng `./` được giải quyết tương đối so với thư mục component.
|
|
173
|
+
* - Các đường dẫn bắt đầu bằng `/` được giải quyết tương đối so với thư mục gốc của dự án (`baseDir`).
|
|
174
|
+
*
|
|
175
|
+
* - Việc bao gồm biến `{{locale}}` trong đường dẫn sẽ cho phép tạo các từ điển được tách biệt theo ngôn ngữ.
|
|
176
|
+
*
|
|
177
|
+
* Ví dụ:
|
|
178
|
+
* ```ts
|
|
179
|
+
* {
|
|
180
|
+
* // Tạo tệp .content.ts đa ngôn ngữ bên cạnh component
|
|
181
|
+
* output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
182
|
+
*
|
|
183
|
+
* // output: './{{fileName}}{{extension}}', // Cách viết tương đương bằng template string
|
|
184
|
+
* }
|
|
185
|
+
* ```
|
|
186
|
+
*
|
|
187
|
+
* ```ts
|
|
188
|
+
* {
|
|
189
|
+
* // Tạo tệp JSON tập trung theo ngôn ngữ trong thư mục gốc của dự án
|
|
190
|
+
* output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
|
|
191
|
+
*
|
|
192
|
+
* // output: '/locales/{{locale}}/{{key}}.content.json', // Cách viết tương đương bằng template string
|
|
193
|
+
* }
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* Danh sách biến:
|
|
197
|
+
* - `fileName`: Tên tệp.
|
|
198
|
+
* - `key`: Khóa nội dung.
|
|
199
|
+
* - `locale`: Ngôn ngữ nội dung.
|
|
200
|
+
* - `extension`: Phần mở rộng tệp.
|
|
201
|
+
* - `componentFileName`: Tên tệp component.
|
|
202
|
+
* - `componentExtension`: Phần mở rộng tệp component.
|
|
203
|
+
* - `format`: Định dạng từ điển.
|
|
204
|
+
* - `componentFormat`: Định dạng từ điển component.
|
|
205
|
+
* - `componentDirPath`: Đường dẫn thư mục component.
|
|
169
206
|
*/
|
|
170
|
-
|
|
171
|
-
"**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
|
|
172
|
-
"!**/node_modules/**",
|
|
173
|
-
],
|
|
207
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
174
208
|
|
|
175
209
|
/**
|
|
176
|
-
*
|
|
177
|
-
|
|
178
|
-
excludePattern: ["**/node_modules/**"],
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Thư mục đầu ra cho các từ điển được tối ưu hóa.
|
|
210
|
+
* Cho biết liệu các component có nên được lưu sau khi được chuyển đổi hay không.
|
|
211
|
+
* Bằng cách đó, trình biên dịch có thể được chạy một lần duy nhất để chuyển đổi ứng dụng, và sau đó nó có thể được gỡ bỏ.
|
|
182
212
|
*/
|
|
183
|
-
|
|
213
|
+
saveComponents: false,
|
|
184
214
|
|
|
185
215
|
/**
|
|
186
|
-
* Chỉ chèn nội dung vào tệp đã tạo
|
|
216
|
+
* Chỉ chèn nội dung vào tệp đã tạo. Hữu ích cho đầu ra JSON i18next hoặc ICU MessageFormat cho mỗi ngôn ngữ.
|
|
217
|
+
*
|
|
218
|
+
* - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`
|
|
187
219
|
*/
|
|
188
220
|
noMetadata: false,
|
|
189
221
|
|
|
190
222
|
/**
|
|
191
223
|
* Tiền tố khóa từ điển
|
|
192
224
|
*/
|
|
193
|
-
dictionaryKeyPrefix: "", //
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Cho biết liệu các thành phần có nên được lưu sau khi được chuyển đổi hay không.
|
|
197
|
-
* Bằng cách đó, trình biên dịch có thể được chạy một lần duy nhất để chuyển đổi ứng dụng, và sau đó nó có thể được gỡ bỏ.
|
|
198
|
-
*/
|
|
199
|
-
saveComponents: false,
|
|
225
|
+
dictionaryKeyPrefix: "", // Thêm một tiền tố tùy chọn cho các khóa từ điển được trích xuất
|
|
200
226
|
},
|
|
201
227
|
};
|
|
202
228
|
|
|
203
229
|
export default config;
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
### Điền các bản dịch còn thiếu
|
|
207
|
-
|
|
208
|
-
Intlayer cung cấp một công cụ CLI để giúp bạn điền các bản dịch còn thiếu. Bạn có thể sử dụng lệnh `intlayer` để kiểm tra và điền các bản dịch còn thiếu từ mã của mình.
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
npx intlayer test # Kiểm tra xem có thiếu bản dịch không
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
```bash
|
|
215
|
-
npx intlayer fill # Điền các bản dịch còn thiếu
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
> Để biết thêm chi tiết, hãy tham khảo [tài liệu CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/ci.md)
|
|
230
|
+
````
|
|
219
231
|
|
|
220
232
|
### Tham khảo cấu hình trình biên dịch
|
|
221
233
|
|
|
@@ -225,36 +237,37 @@ Các thuộc tính sau có thể được cấu hình trong khối `compiler` c
|
|
|
225
237
|
- _Loại_: `boolean | 'build-only'`
|
|
226
238
|
- _Mặc định_: `true`
|
|
227
239
|
- _Mô tả_: Cho biết trình biên dịch có nên được bật hay không.
|
|
240
|
+
|
|
228
241
|
- **dictionaryKeyPrefix**:
|
|
229
242
|
- _Loại_: `string`
|
|
230
|
-
- _Mặc định_: `'
|
|
243
|
+
- _Mặc định_: `''`
|
|
231
244
|
- _Mô tả_: Tiền tố cho các khóa từ điển được trích xuất.
|
|
245
|
+
|
|
232
246
|
- **transformPattern**:
|
|
233
247
|
- _Loại_: `string | string[]`
|
|
234
248
|
- _Mặc định_: `['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']`
|
|
235
|
-
- _Mô tả_: Các mẫu để duyệt mã để tối ưu hóa.
|
|
249
|
+
- _Mô tả_: (Đã lỗi thời: hãy sử dụng `build.traversePattern` thay thế) Các mẫu để duyệt mã để tối ưu hóa.
|
|
250
|
+
|
|
236
251
|
- **excludePattern**:
|
|
237
252
|
- _Loại_: `string | string[]`
|
|
238
253
|
- _Mặc định_: `['**/node_modules/**']`
|
|
239
|
-
- _Mô tả_: Các mẫu để loại trừ khỏi quá trình tối ưu hóa.
|
|
240
|
-
- **outputDir** (Deprecated):
|
|
241
|
-
- _Loại_: `string`
|
|
242
|
-
- _Mặc định_: `'compiler'`
|
|
243
|
-
- _Mô tả_: Thư mục nơi lưu trữ các từ điển được trích xuất.
|
|
254
|
+
- _Mô tả_: (Đã lỗi thời: hãy sử dụng `build.traversePattern` thay thế) Các mẫu để loại trừ khỏi quá trình tối ưu hóa.
|
|
244
255
|
|
|
245
256
|
- **output**:
|
|
246
257
|
- _Loại_: `FilePathPattern`
|
|
247
258
|
- _Mặc định_: `({ key }) => 'compiler/${key}.content.json'`
|
|
248
259
|
- _Mô tả_: Xác định đường dẫn tệp đầu ra. Thay thế `outputDir`. Xử lý các biến động như `{{locale}}`, `{{key}}`, `{{fileName}}`, `{{extension}}`, `{{format}}`, `{{dirPath}}`, `{{componentFileName}}`, `{{componentExtension}}` và `{{componentFormat}}`. Có thể được đặt dưới dạng chuỗi bằng định dạng `'my/{{var}}/path'` hoặc dưới dạng hàm.
|
|
249
260
|
- _Ghi chú_: Các đường dẫn `./**/*` được giải quyết tương đối so với component. Các đường dẫn `/**/*` được giải quyết tương đối so với `baseDir` của Intlayer.
|
|
261
|
+
- _Ghi chú_: Nếu ngôn ngữ được xác định trong đường dẫn, các từ điển sẽ được tạo cho mỗi ngôn ngữ.
|
|
250
262
|
- _Ví dụ_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
|
|
251
263
|
|
|
252
264
|
- **noMetadata**:
|
|
253
265
|
- _Loại_: `boolean`
|
|
254
266
|
- _Mặc định_: `false`
|
|
255
|
-
- _Mô tả_: Cho biết liệu siêu dữ liệu có nên được lưu trong tệp hay không. Nếu true, trình biên dịch sẽ không lưu siêu dữ liệu của từ điển (khóa, trình bao bọc nội dung).
|
|
267
|
+
- _Mô tả_: Cho biết liệu siêu dữ liệu có nên được lưu trong tệp hay không. Nếu true, trình biên dịch sẽ không lưu siêu dữ liệu của từ điển (khóa, trình bao bọc nội dung). Hữu ích cho đầu ra JSON i18next hoặc ICU MessageFormat cho mỗi ngôn ngữ.
|
|
256
268
|
- _Ghi chú_: Hữu ích nếu được sử dụng với plugin `loadJSON`.
|
|
257
|
-
- _Ví dụ_:
|
|
269
|
+
- _Ví dụ_:
|
|
270
|
+
Nếu `true`:
|
|
258
271
|
```json
|
|
259
272
|
{
|
|
260
273
|
"key": "value"
|
|
@@ -273,4 +286,26 @@ Các thuộc tính sau có thể được cấu hình trong khối `compiler` c
|
|
|
273
286
|
- **saveComponents**:
|
|
274
287
|
- _Loại_: `boolean`
|
|
275
288
|
- _Mặc định_: `false`
|
|
276
|
-
- _Mô tả_: Cho biết liệu các
|
|
289
|
+
- _Mô tả_: Cho biết liệu các component có nên được lưu sau khi được chuyển đổi hay không.
|
|
290
|
+
|
|
291
|
+
### Điền các bản dịch còn thiếu
|
|
292
|
+
|
|
293
|
+
Intlayer cung cấp một công cụ CLI để giúp bạn điền các bản dịch còn thiếu. Bạn có thể sử dụng lệnh `intlayer` để kiểm tra và điền các bản dịch còn thiếu từ mã của mình.
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
npx intlayer test # Kiểm tra xem có thiếu bản dịch không
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
npx intlayer fill # Điền các bản dịch còn thiếu
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Trích xuất
|
|
304
|
+
|
|
305
|
+
Intlayer cung cấp một công cụ CLI để giúp bạn trích xuất nội dung từ mã của mình. Bạn có thể sử dụng lệnh `intlayer extract` để trích xuất nội dung từ mã của mình.
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
npx intlayer extract
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
> Để biết thêm chi tiết, hãy tham khảo [tài liệu CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/index.md)
|