@intlayer/docs 7.3.0 → 7.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.
Files changed (53) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +19 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +19 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +1 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/bundle_optimization.md +180 -0
  8. package/docs/ar/vs_code_extension.md +4 -0
  9. package/docs/de/bundle_optimization.md +190 -0
  10. package/docs/de/how_works_intlayer.md +1 -1
  11. package/docs/de/vs_code_extension.md +4 -0
  12. package/docs/en/bundle_optimization.md +180 -0
  13. package/docs/en/configuration.md +5 -2
  14. package/docs/en/how_works_intlayer.md +1 -1
  15. package/docs/en/vs_code_extension.md +7 -0
  16. package/docs/en-GB/bundle_optimization.md +180 -0
  17. package/docs/en-GB/how_works_intlayer.md +1 -1
  18. package/docs/en-GB/vs_code_extension.md +4 -0
  19. package/docs/es/bundle_optimization.md +190 -0
  20. package/docs/es/how_works_intlayer.md +1 -1
  21. package/docs/es/vs_code_extension.md +4 -0
  22. package/docs/fr/bundle_optimization.md +180 -0
  23. package/docs/fr/how_works_intlayer.md +1 -1
  24. package/docs/fr/vs_code_extension.md +4 -0
  25. package/docs/hi/bundle_optimization.md +180 -0
  26. package/docs/hi/vs_code_extension.md +4 -0
  27. package/docs/id/bundle_optimization.md +180 -0
  28. package/docs/id/how_works_intlayer.md +1 -1
  29. package/docs/id/vs_code_extension.md +4 -0
  30. package/docs/it/bundle_optimization.md +180 -0
  31. package/docs/it/how_works_intlayer.md +1 -1
  32. package/docs/it/vs_code_extension.md +4 -0
  33. package/docs/ja/bundle_optimization.md +180 -0
  34. package/docs/ja/vs_code_extension.md +4 -0
  35. package/docs/ko/bundle_optimization.md +180 -0
  36. package/docs/ko/vs_code_extension.md +4 -0
  37. package/docs/pl/bundle_optimization.md +180 -0
  38. package/docs/pl/how_works_intlayer.md +1 -1
  39. package/docs/pl/vs_code_extension.md +4 -0
  40. package/docs/pt/bundle_optimization.md +180 -0
  41. package/docs/pt/how_works_intlayer.md +1 -1
  42. package/docs/pt/vs_code_extension.md +4 -0
  43. package/docs/ru/bundle_optimization.md +180 -0
  44. package/docs/ru/vs_code_extension.md +4 -0
  45. package/docs/tr/bundle_optimization.md +180 -0
  46. package/docs/tr/how_works_intlayer.md +1 -1
  47. package/docs/tr/vs_code_extension.md +4 -0
  48. package/docs/vi/bundle_optimization.md +180 -0
  49. package/docs/vi/vs_code_extension.md +4 -0
  50. package/docs/zh/bundle_optimization.md +180 -0
  51. package/docs/zh/vs_code_extension.md +4 -0
  52. package/package.json +6 -6
  53. package/src/generated/docs.entry.ts +19 -0
@@ -0,0 +1,180 @@
1
+ ---
2
+ createdAt: 2025-11-25
3
+ updatedAt: 2025-11-25
4
+ title: Tối ưu Kích thước & Hiệu suất Gói i18n
5
+ description: Giảm kích thước gói ứng dụng bằng cách tối ưu hóa nội dung quốc tế hóa (i18n). Tìm hiểu cách tận dụng tree shaking và lazy loading cho từ điển với Intlayer.
6
+ keywords:
7
+ - Tối ưu Gói
8
+ - Tự động Hóa Nội dung
9
+ - Nội dung Động
10
+ - Intlayer
11
+ - Next.js
12
+ - JavaScript
13
+ - React
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - bundle-optimization
18
+ history:
19
+ - version: 6.0.0
20
+ date: 2025-11-25
21
+ changes: Khởi tạo lịch sử
22
+ ---
23
+
24
+ # Tối ưu Kích thước & Hiệu suất Gói i18n
25
+
26
+ Một trong những thách thức phổ biến nhất với các giải pháp i18n truyền thống dựa trên các tệp JSON là quản lý kích thước nội dung. Nếu các nhà phát triển không tách nội dung thành các namespace một cách thủ công, người dùng thường phải tải xuống bản dịch cho mọi trang và có thể cho mọi ngôn ngữ chỉ để xem một trang duy nhất.
27
+
28
+ Ví dụ, một ứng dụng có 10 trang được dịch sang 10 ngôn ngữ có thể khiến người dùng tải xuống nội dung của 100 trang, mặc dù họ chỉ cần **một** trang (trang hiện tại với ngôn ngữ hiện tại). Điều này dẫn đến lãng phí băng thông và thời gian tải chậm hơn.
29
+
30
+ > Để phát hiện điều này, bạn có thể sử dụng các công cụ phân tích gói như `rollup-plugin-visualizer` (vite), `@next/bundle-analyzer` (next.js), hoặc `webpack-bundle-analyzer` (React CRA / Angular / v.v).
31
+
32
+ **Intlayer giải quyết vấn đề này thông qua tối ưu hóa thời gian build.** Nó phân tích mã của bạn để phát hiện các từ điển thực sự được sử dụng cho từng component và chỉ tái chèn nội dung cần thiết vào bundle của bạn.
33
+
34
+ ## Mục lục
35
+
36
+ <TOC />
37
+
38
+ ## Cách Hoạt Động
39
+
40
+ Intlayer sử dụng **phương pháp theo từng component**. Khác với các tệp JSON toàn cục, nội dung của bạn được định nghĩa kèm theo hoặc bên trong các component. Trong quá trình build, Intlayer:
41
+
42
+ 1. **Phân tích** mã của bạn để tìm các gọi `useIntlayer`.
43
+ 2. **Xây dựng** nội dung từ điển tương ứng.
44
+ 3. **Thay thế** gọi `useIntlayer` bằng mã đã được tối ưu dựa trên cấu hình của bạn.
45
+
46
+ Điều này đảm bảo rằng:
47
+
48
+ - Nếu một component không được import, nội dung của nó sẽ không được bao gồm trong bundle (Loại bỏ mã chết).
49
+ - Nếu một component được tải theo lazy-load, nội dung của nó cũng sẽ được tải theo lazy-load.
50
+
51
+ ## Cài Đặt Theo Nền Tảng
52
+
53
+ ### Next.js
54
+
55
+ Next.js yêu cầu plugin `@intlayer/swc` để xử lý việc chuyển đổi, vì Next.js sử dụng SWC cho quá trình build.
56
+
57
+ > Plugin này được cài đặt mặc định vì các plugin SWC vẫn đang trong giai đoạn thử nghiệm cho Next.js. Điều này có thể thay đổi trong tương lai.
58
+
59
+ ### Vite
60
+
61
+ Vite sử dụng plugin `@intlayer/babel` được bao gồm như một phụ thuộc của `vite-intlayer`. Tối ưu hóa được bật mặc định.
62
+
63
+ ### Webpack
64
+
65
+ Để kích hoạt tối ưu hóa bundle với Intlayer trên Webpack, bạn cần cài đặt và cấu hình plugin Babel (`@intlayer/babel`) hoặc SWC (`@intlayer/swc`) phù hợp.
66
+
67
+ ### Expo / Lynx
68
+
69
+ Tối ưu hóa bundle **chưa khả dụng** cho nền tảng này. Hỗ trợ sẽ được thêm vào trong bản phát hành tương lai.
70
+
71
+ ## Cấu Hình
72
+
73
+ Bạn có thể kiểm soát cách Intlayer tối ưu hóa bundle của bạn thông qua thuộc tính `build` trong file `intlayer.config.ts`.
74
+
75
+ ```typescript fileName="intlayer.config.ts"
76
+ import { Locales, type IntlayerConfig } from "intlayer";
77
+
78
+ const config: IntlayerConfig = {
79
+ internationalization: {
80
+ locales: [Locales.ENGLISH, Locales.FRENCH],
81
+ defaultLocale: Locales.ENGLISH,
82
+ },
83
+ build: {
84
+ optimize: true,
85
+ importMode: "static", // hoặc 'dynamic'
86
+ traversePattern: ["**/*.{js,ts,mjs,cjs,jsx,tsx}", "!**/node_modules/**"],
87
+ },
88
+ };
89
+
90
+ export default config;
91
+ ```
92
+
93
+ > Giữ tùy chọn mặc định cho `optimize` được khuyến nghị trong hầu hết các trường hợp.
94
+
95
+ > Xem tài liệu cấu hình để biết thêm chi tiết: [Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/configuration.md)
96
+
97
+ ### Tùy Chọn Build
98
+
99
+ Các tùy chọn sau có sẵn trong đối tượng cấu hình `build`:
100
+
101
+ | Thuộc tính | Kiểu | Mặc định | Mô tả |
102
+ | :-------------------- | :------------------------------ | :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
103
+ | **`optimize`** | `boolean` | `undefined` | Điều khiển việc có bật tối ưu hóa build hay không. Nếu là `true`, Intlayer sẽ thay thế các cuộc gọi từ điển bằng các inject được tối ưu hóa. Nếu là `false`, tối ưu hóa sẽ bị tắt. Lý tưởng nên đặt là `true` trong môi trường production. |
104
+ | **`importMode`** | `'static' , 'dynamic' , 'live'` | `'static'` | Xác định cách các từ điển được tải (xem chi tiết bên dưới). |
105
+ | **`traversePattern`** | `string[]` | `['**/*.{js,ts,jsx,tsx}', ...]` | Các mẫu glob xác định các tệp mà Intlayer sẽ quét để tối ưu hóa. Sử dụng để loại trừ các tệp không liên quan và tăng tốc quá trình build. |
106
+ | **`outputFormat`** | `'esm', 'cjs'` | `'esm', 'cjs'` | Điều khiển định dạng đầu ra của các từ điển đã build. |
107
+
108
+ ## Chế độ Import
109
+
110
+ Cài đặt `importMode` quyết định cách nội dung từ điển được inject vào component của bạn.
111
+
112
+ ### 1. Chế độ Static (`mặc định`)
113
+
114
+ Ở chế độ tĩnh, Intlayer thay thế `useIntlayer` bằng `useDictionary` và chèn từ điển trực tiếp vào gói JavaScript.
115
+
116
+ - **Ưu điểm:** Kết xuất tức thì (đồng bộ), không có yêu cầu mạng bổ sung trong quá trình hydration.
117
+ - **Nhược điểm:** Gói bao gồm bản dịch cho **tất cả** các ngôn ngữ có sẵn cho thành phần cụ thể đó.
118
+ - **Phù hợp cho:** Ứng dụng một trang (SPA).
119
+
120
+ **Ví dụ mã đã chuyển đổi:**
121
+
122
+ ```tsx
123
+ // Mã của bạn
124
+ const content = useIntlayer("my-key");
125
+
126
+ // Mã tối ưu (Tĩnh)
127
+ const content = useDictionary({
128
+ key: "my-key",
129
+ content: {
130
+ nodeType: "translation",
131
+ translation: {
132
+ en: "My title",
133
+ fr: "Mon titre",
134
+ },
135
+ },
136
+ });
137
+ ```
138
+
139
+ ### 2. Chế độ động
140
+
141
+ Ở chế độ động, Intlayer thay thế `useIntlayer` bằng `useDictionaryAsync`. Cách này sử dụng `import()` (cơ chế giống Suspense) để tải lười JSON cụ thể cho locale hiện tại.
142
+
143
+ - **Ưu điểm:** **Tree shaking ở cấp độ locale.** Người dùng xem phiên bản tiếng Anh sẽ _chỉ_ tải từ điển tiếng Anh. Từ điển tiếng Pháp sẽ không bao giờ được tải.
144
+ - **Nhược điểm:** Kích hoạt một yêu cầu mạng (tải tài nguyên) cho mỗi thành phần trong quá trình hydration.
145
+ - **Phù hợp cho:** Các khối văn bản lớn, bài viết hoặc ứng dụng hỗ trợ nhiều ngôn ngữ mà kích thước gói là yếu tố quan trọng.
146
+
147
+ **Ví dụ mã đã chuyển đổi:**
148
+
149
+ ```tsx
150
+ // Mã của bạn
151
+ const content = useIntlayer("my-key");
152
+
153
+ // Mã tối ưu (Động)
154
+ const content = useDictionaryAsync({
155
+ en: () =>
156
+ import(".intlayer/dynamic_dictionary/en.json").then((mod) => mod.default),
157
+ fr: () =>
158
+ import(".intlayer/dynamic_dictionary/fr.json").then((mod) => mod.default),
159
+ });
160
+ ```
161
+
162
+ > Khi sử dụng `importMode: 'dynamic'`, nếu bạn có 100 thành phần sử dụng `useIntlayer` trên một trang, trình duyệt sẽ cố gắng thực hiện 100 lần tải riêng biệt. Để tránh hiện tượng "thác nước" của các yêu cầu này, hãy gom nội dung vào ít file `.content` hơn (ví dụ: một từ điển cho mỗi phần trang) thay vì một file cho mỗi thành phần atom.
163
+
164
+ > Hiện tại, `importMode: 'dynamic'` chưa được hỗ trợ đầy đủ cho Vue và Svelte. Khuyến nghị sử dụng `importMode: 'static'` cho các framework này cho đến khi có cập nhật tiếp theo.
165
+
166
+ ### 3. Chế độ Live
167
+
168
+ Hoạt động tương tự như chế độ Dynamic nhưng cố gắng lấy từ điển từ Intlayer Live Sync API trước. Nếu cuộc gọi API thất bại hoặc nội dung không được đánh dấu để cập nhật trực tiếp, nó sẽ chuyển sang import động.
169
+
170
+ > Xem tài liệu CMS để biết thêm chi tiết: [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_CMS.md)
171
+
172
+ ## Tóm tắt: Static vs Dynamic
173
+
174
+ | Tính năng | Chế độ Static | Chế độ Dynamic |
175
+ | :------------------------------ | :----------------------------------------------- | :------------------------------------- |
176
+ | **Kích thước gói JS** | Lớn hơn (bao gồm tất cả ngôn ngữ cho thành phần) | Nhỏ nhất (chỉ mã, không có nội dung) |
177
+ | **Tải ban đầu** | Ngay lập tức (Nội dung có trong gói) | Trễ nhẹ (Tải JSON) |
178
+ | **Yêu cầu mạng** | Không có yêu cầu bổ sung | 1 yêu cầu cho mỗi từ điển |
179
+ | **Tree Shaking** | Cấp độ thành phần | Cấp độ thành phần + cấp độ ngôn ngữ |
180
+ | **Trường hợp sử dụng tốt nhất** | Thành phần UI, Ứng dụng nhỏ | Trang có nhiều văn bản, Nhiều ngôn ngữ |
@@ -42,6 +42,10 @@ Liên kết tiện ích mở rộng: [https://marketplace.visualstudio.com/items
42
42
 
43
43
  ## Tính năng
44
44
 
45
+ ![Trích xuất nội dung](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_extract_content.gif?raw=true)
46
+
47
+ - **Trích xuất Nội dung** – Trích xuất nội dung từ các thành phần React / Vue / Svelte của bạn
48
+
45
49
  ![Điền từ điển](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_fill_active_dictionary.gif?raw=true)
46
50
 
47
51
  - **Điều hướng tức thì** – Nhảy nhanh đến tệp nội dung chính xác khi nhấp vào khóa `useIntlayer`.
@@ -0,0 +1,180 @@
1
+ ---
2
+ createdAt: 2025-11-25
3
+ updatedAt: 2025-11-25
4
+ title: 优化 i18n 包大小与性能
5
+ description: 通过优化国际化(i18n)内容来减少应用程序包大小。学习如何利用 Intlayer 实现字典的树摇和懒加载。
6
+ keywords:
7
+ - 包优化
8
+ - 内容自动化
9
+ - 动态内容
10
+ - Intlayer
11
+ - Next.js
12
+ - JavaScript
13
+ - React
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - bundle-optimization
18
+ history:
19
+ - version: 6.0.0
20
+ date: 2025-11-25
21
+ changes: 初始化历史记录
22
+ ---
23
+
24
+ # 优化 i18n 包大小与性能
25
+
26
+ 传统 i18n 解决方案依赖 JSON 文件时,最常见的挑战之一是内容大小的管理。如果开发者没有手动将内容分割到不同的命名空间,用户通常会下载所有页面甚至所有语言的翻译内容,仅仅为了查看单个页面。
27
+
28
+ 例如,一个有 10 个页面且翻译成 10 种语言的应用,用户可能会下载 100 个页面的内容,尽管他们只需要**一个**(当前语言的当前页面)。这会导致带宽浪费和加载时间变慢。
29
+
30
+ > 要检测这种情况,可以使用包分析工具,如 `rollup-plugin-visualizer`(vite)、`@next/bundle-analyzer`(next.js)或 `webpack-bundle-analyzer`(React CRA / Angular 等)。
31
+
32
+ **Intlayer 通过构建时优化解决了这个问题。** 它分析您的代码以检测每个组件实际使用的字典,并仅将必要的内容重新注入到您的包中。
33
+
34
+ ## 目录
35
+
36
+ <TOC />
37
+
38
+ ## 工作原理
39
+
40
+ Intlayer 采用 **按组件划分的方法**。与全局 JSON 文件不同,您的内容定义在组件旁边或组件内部。在构建过程中,Intlayer 会:
41
+
42
+ 1. **分析**您的代码以查找 `useIntlayer` 调用。
43
+ 2. **构建**相应的字典内容。
44
+ 3. **替换**`useIntlayer` 调用为基于您配置的优化代码。
45
+
46
+ 这确保了:
47
+
48
+ - 如果组件未被导入,其内容不会包含在包中(死代码消除)。
49
+ - 如果组件是懒加载的,其内容也会被懒加载。
50
+
51
+ ## 按平台设置
52
+
53
+ ### Next.js
54
+
55
+ Next.js 需要 `@intlayer/swc` 插件来处理转换,因为 Next.js 使用 SWC 进行构建。
56
+
57
+ > 该插件默认已安装,因为 SWC 插件在 Next.js 中仍处于实验阶段,未来可能会有所变化。
58
+
59
+ ### Vite
60
+
61
+ Vite 使用 `@intlayer/babel` 插件,该插件作为 `vite-intlayer` 的依赖包含在内。优化默认启用。
62
+
63
+ ### Webpack
64
+
65
+ 要在 Webpack 上启用 Intlayer 的包优化,您需要安装并配置相应的 Babel(`@intlayer/babel`)或 SWC(`@intlayer/swc`)插件。
66
+
67
+ ### Expo / Lynx
68
+
69
+ 该平台目前**尚不支持**包优化。支持将在未来版本中添加。
70
+
71
+ ## 配置
72
+
73
+ 您可以通过 `intlayer.config.ts` 文件中的 `build` 属性来控制 Intlayer 如何优化您的包。
74
+
75
+ ```typescript fileName="intlayer.config.ts"
76
+ import { Locales, type IntlayerConfig } from "intlayer";
77
+
78
+ const config: IntlayerConfig = {
79
+ internationalization: {
80
+ locales: [Locales.ENGLISH, Locales.FRENCH],
81
+ defaultLocale: Locales.ENGLISH,
82
+ },
83
+ build: {
84
+ optimize: true,
85
+ importMode: "static", // 或 'dynamic'
86
+ traversePattern: ["**/*.{js,ts,mjs,cjs,jsx,tsx}", "!**/node_modules/**"],
87
+ },
88
+ };
89
+
90
+ export default config;
91
+ ```
92
+
93
+ > 在大多数情况下,建议保持 `optimize` 的默认选项。
94
+
95
+ > 更多详情请参阅文档配置:[Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)
96
+
97
+ ### 构建选项
98
+
99
+ 以下选项可在 `build` 配置对象中使用:
100
+
101
+ | 属性 | 类型 | 默认值 | 描述 |
102
+ | :-------------------- | :------------------------------ | :------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------- |
103
+ | **`optimize`** | `boolean` | `undefined` | 控制是否启用构建优化。如果为 `true`,Intlayer 会用优化后的注入替换字典调用。如果为 `false`,则禁用优化。理想情况下在生产环境中设置为 `true`。 |
104
+ | **`importMode`** | `'static' , 'dynamic' , 'live'` | `'static'` | 决定字典的加载方式(详见下文)。 |
105
+ | **`traversePattern`** | `string[]` | `['**/*.{js,ts,jsx,tsx}', ...]` | 定义 Intlayer 应扫描以进行优化的文件的全局匹配模式。使用此选项可排除无关文件,加快构建速度。 |
106
+ | **`outputFormat`** | `'esm', 'cjs'` | `'esm', 'cjs'` | 控制构建后字典的输出格式。 |
107
+
108
+ ## 导入模式
109
+
110
+ `importMode` 设置决定字典内容如何注入到你的组件中。
111
+
112
+ ### 1. 静态模式(`default`)
113
+
114
+ 在静态模式下,Intlayer 会将 `useIntlayer` 替换为 `useDictionary`,并将字典直接注入到 JavaScript 包中。
115
+
116
+ - **优点:** 即时渲染(同步),在 hydration 期间无需额外的网络请求。
117
+ - **缺点:** 包含该特定组件所有可用语言的翻译。
118
+ - **适用场景:** 单页应用(SPA)。
119
+
120
+ **转换后的代码示例:**
121
+
122
+ ```tsx
123
+ // 你的代码
124
+ const content = useIntlayer("my-key");
125
+
126
+ // 优化后的代码(静态)
127
+ const content = useDictionary({
128
+ key: "my-key",
129
+ content: {
130
+ nodeType: "translation",
131
+ translation: {
132
+ en: "My title",
133
+ fr: "Mon titre",
134
+ },
135
+ },
136
+ });
137
+ ```
138
+
139
+ ### 2. 动态模式
140
+
141
+ 在动态模式下,Intlayer 将 `useIntlayer` 替换为 `useDictionaryAsync`。这使用 `import()`(类似 Suspense 的机制)来懒加载当前语言环境的 JSON 文件。
142
+
143
+ - **优点:** **按语言环境进行树摇优化。** 观看英文版本的用户只会下载英文词典,法文词典则不会被加载。
144
+ - **缺点:** 在 hydration 期间,每个组件都会触发一次网络请求(资源获取)。
145
+ - **适用场景:** 大块文本、文章,或支持多语言且对包大小要求严格的应用。
146
+
147
+ **转换后的代码示例:**
148
+
149
+ ```tsx
150
+ // 你的代码
151
+ const content = useIntlayer("my-key");
152
+
153
+ // 优化后的代码(动态)
154
+ const content = useDictionaryAsync({
155
+ en: () =>
156
+ import(".intlayer/dynamic_dictionary/en.json").then((mod) => mod.default),
157
+ fr: () =>
158
+ import(".intlayer/dynamic_dictionary/fr.json").then((mod) => mod.default),
159
+ });
160
+ ```
161
+
162
+ > 当使用 `importMode: 'dynamic'` 时,如果在单个页面上有 100 个组件使用 `useIntlayer`,浏览器将尝试发起 100 次单独的请求。为了避免这种“瀑布式”请求,建议将内容分组到更少的 `.content` 文件中(例如,每个页面部分一个字典),而不是每个原子组件一个。
163
+
164
+ > 目前,`importMode: 'dynamic'` 尚未完全支持 Vue 和 Svelte。建议在这些框架中使用 `importMode: 'static'`,直到后续更新。
165
+
166
+ ### 3. 实时模式
167
+
168
+ 行为类似于动态模式,但会优先尝试从 Intlayer 实时同步 API 获取字典。如果 API 调用失败或内容未标记为实时更新,则回退到动态导入。
169
+
170
+ > 更多详情请参阅 CMS 文档:[CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md)
171
+
172
+ ## 总结:静态模式 vs 动态模式
173
+
174
+ | 功能 | 静态模式 | 动态模式 |
175
+ | :--------------- | :------------------------- | :------------------------- |
176
+ | **JS 包大小** | 较大(包含组件的所有语言) | 最小(仅代码,无内容) |
177
+ | **初始加载** | 即时(内容包含在包内) | 轻微延迟(获取 JSON) |
178
+ | **网络请求** | 无额外请求 | 每个字典一次请求 |
179
+ | **Tree Shaking** | 组件级别 | 组件级别 + 语言级别 |
180
+ | **最佳使用场景** | UI 组件,小型应用 | 文字较多的页面,多语言支持 |
@@ -42,6 +42,10 @@ history:
42
42
 
43
43
  ## 功能
44
44
 
45
+ ![提取内容](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_extract_content.gif?raw=true)
46
+
47
+ - **提取内容** – 从您的 React / Vue / Svelte 组件中提取内容
48
+
45
49
  ![填充词典](https://github.com/aymericzip/intlayer-vs-code-extension/blob/master/assets/vscode_extention_fill_active_dictionary.gif?raw=true)
46
50
 
47
51
  - **即时导航** – 点击 `useIntlayer` 键时,快速跳转到正确的内容文件。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/docs",
3
- "version": "7.3.0",
3
+ "version": "7.3.1",
4
4
  "private": false,
5
5
  "description": "Intlayer documentation",
6
6
  "keywords": [
@@ -72,13 +72,13 @@
72
72
  "watch": "webpack --config ./webpack.config.ts --watch"
73
73
  },
74
74
  "dependencies": {
75
- "@intlayer/config": "7.3.0",
76
- "@intlayer/core": "7.3.0",
77
- "@intlayer/types": "7.3.0"
75
+ "@intlayer/config": "7.3.1",
76
+ "@intlayer/core": "7.3.1",
77
+ "@intlayer/types": "7.3.1"
78
78
  },
79
79
  "devDependencies": {
80
- "@intlayer/api": "7.3.0",
81
- "@intlayer/cli": "7.3.0",
80
+ "@intlayer/api": "7.3.1",
81
+ "@intlayer/cli": "7.3.1",
82
82
  "@types/node": "24.10.1",
83
83
  "@utils/ts-config": "1.0.4",
84
84
  "@utils/ts-config-types": "1.0.4",
@@ -91,6 +91,25 @@ export const docsEntry = {
91
91
  id: readLocale('autoFill.md', 'id'),
92
92
  vi: readLocale('autoFill.md', 'vi'),
93
93
  } as unknown as Record<LocalesValues, Promise<string>>,
94
+ './docs/en/bundle_optimization.md': {
95
+ en: readLocale('bundle_optimization.md', 'en'),
96
+ ru: readLocale('bundle_optimization.md', 'ru'),
97
+ ja: readLocale('bundle_optimization.md', 'ja'),
98
+ fr: readLocale('bundle_optimization.md', 'fr'),
99
+ ko: readLocale('bundle_optimization.md', 'ko'),
100
+ zh: readLocale('bundle_optimization.md', 'zh'),
101
+ es: readLocale('bundle_optimization.md', 'es'),
102
+ de: readLocale('bundle_optimization.md', 'de'),
103
+ ar: readLocale('bundle_optimization.md', 'ar'),
104
+ it: readLocale('bundle_optimization.md', 'it'),
105
+ 'en-GB': readLocale('bundle_optimization.md', 'en-GB'),
106
+ pt: readLocale('bundle_optimization.md', 'pt'),
107
+ hi: readLocale('bundle_optimization.md', 'hi'),
108
+ tr: readLocale('bundle_optimization.md', 'tr'),
109
+ pl: readLocale('bundle_optimization.md', 'pl'),
110
+ id: readLocale('bundle_optimization.md', 'id'),
111
+ vi: readLocale('bundle_optimization.md', 'vi'),
112
+ } as unknown as Record<LocalesValues, Promise<string>>,
94
113
  './docs/en/cli/build.md': {
95
114
  en: readLocale('cli/build.md', 'en'),
96
115
  ru: readLocale('cli/build.md', 'ru'),