@intlayer/docs 9.3.2 → 9.3.3

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 (115) hide show
  1. package/blog/ar/nextjs-multilingual-seo-comparison.md +10 -10
  2. package/blog/de/nextjs-multilingual-seo-comparison.md +9 -9
  3. package/blog/en/nextjs-multilingual-seo-comparison.md +10 -10
  4. package/blog/en-GB/nextjs-multilingual-seo-comparison.md +10 -10
  5. package/blog/es/nextjs-multilingual-seo-comparison.md +10 -10
  6. package/blog/fr/nextjs-multilingual-seo-comparison.md +10 -10
  7. package/blog/hi/nextjs-multilingual-seo-comparison.md +10 -10
  8. package/blog/id/nextjs-multilingual-seo-comparison.md +10 -10
  9. package/blog/it/nextjs-multilingual-seo-comparison.md +10 -10
  10. package/blog/ja/nextjs-multilingual-seo-comparison.md +9 -9
  11. package/blog/ko/nextjs-multilingual-seo-comparison.md +9 -9
  12. package/blog/pl/nextjs-multilingual-seo-comparison.md +10 -10
  13. package/blog/pt/nextjs-multilingual-seo-comparison.md +9 -9
  14. package/blog/ru/nextjs-multilingual-seo-comparison.md +9 -9
  15. package/blog/tr/nextjs-multilingual-seo-comparison.md +9 -9
  16. package/blog/uk/nextjs-multilingual-seo-comparison.md +10 -10
  17. package/blog/vi/nextjs-multilingual-seo-comparison.md +10 -10
  18. package/blog/zh/nextjs-multilingual-seo-comparison.md +10 -10
  19. package/docs/ar/bundle_optimization.md +1 -1
  20. package/docs/ar/configuration.md +32 -9
  21. package/docs/ar/dictionary/content_file.md +0 -22
  22. package/docs/ar/dictionary/function_fetching.md +23 -0
  23. package/docs/ar/eslint.md +9 -9
  24. package/docs/bn/configuration.md +34 -9
  25. package/docs/bn/eslint.md +9 -9
  26. package/docs/cs/bundle_optimization.md +1 -1
  27. package/docs/cs/configuration.md +33 -9
  28. package/docs/cs/eslint.md +9 -9
  29. package/docs/de/bundle_optimization.md +1 -1
  30. package/docs/de/configuration.md +34 -9
  31. package/docs/de/dictionary/content_file.md +0 -22
  32. package/docs/de/dictionary/function_fetching.md +23 -0
  33. package/docs/de/eslint.md +9 -9
  34. package/docs/en/bundle_optimization.md +1 -1
  35. package/docs/en/configuration.md +34 -9
  36. package/docs/en/dictionary/content_file.md +0 -22
  37. package/docs/en/dictionary/function_fetching.md +23 -0
  38. package/docs/en/eslint.md +9 -9
  39. package/docs/en/packages/intlayer/getLocalizedPath.md +70 -19
  40. package/docs/en-GB/configuration.md +33 -9
  41. package/docs/en-GB/dictionary/content_file.md +0 -22
  42. package/docs/en-GB/dictionary/function_fetching.md +23 -0
  43. package/docs/en-GB/eslint.md +9 -9
  44. package/docs/es/bundle_optimization.md +1 -1
  45. package/docs/es/configuration.md +35 -9
  46. package/docs/es/dictionary/content_file.md +0 -22
  47. package/docs/es/dictionary/function_fetching.md +23 -0
  48. package/docs/es/eslint.md +9 -9
  49. package/docs/fr/bundle_optimization.md +1 -1
  50. package/docs/fr/configuration.md +35 -9
  51. package/docs/fr/dictionary/content_file.md +0 -22
  52. package/docs/fr/dictionary/function_fetching.md +23 -0
  53. package/docs/fr/eslint.md +9 -9
  54. package/docs/hi/configuration.md +35 -9
  55. package/docs/hi/dictionary/content_file.md +0 -22
  56. package/docs/hi/dictionary/function_fetching.md +23 -0
  57. package/docs/hi/eslint.md +9 -9
  58. package/docs/id/configuration.md +35 -9
  59. package/docs/id/dictionary/content_file.md +0 -22
  60. package/docs/id/dictionary/function_fetching.md +23 -0
  61. package/docs/id/eslint.md +9 -9
  62. package/docs/it/bundle_optimization.md +1 -1
  63. package/docs/it/configuration.md +35 -9
  64. package/docs/it/dictionary/content_file.md +0 -22
  65. package/docs/it/dictionary/function_fetching.md +23 -0
  66. package/docs/it/eslint.md +9 -9
  67. package/docs/ja/configuration.md +30 -9
  68. package/docs/ja/dictionary/content_file.md +0 -22
  69. package/docs/ja/dictionary/function_fetching.md +23 -0
  70. package/docs/ja/eslint.md +9 -9
  71. package/docs/ko/configuration.md +31 -9
  72. package/docs/ko/dictionary/content_file.md +0 -22
  73. package/docs/ko/dictionary/function_fetching.md +23 -0
  74. package/docs/ko/eslint.md +9 -9
  75. package/docs/nl/configuration.md +33 -9
  76. package/docs/nl/eslint.md +9 -9
  77. package/docs/pl/bundle_optimization.md +1 -1
  78. package/docs/pl/configuration.md +34 -9
  79. package/docs/pl/dictionary/content_file.md +0 -22
  80. package/docs/pl/dictionary/function_fetching.md +23 -0
  81. package/docs/pl/eslint.md +9 -9
  82. package/docs/pt/bundle_optimization.md +1 -1
  83. package/docs/pt/configuration.md +34 -9
  84. package/docs/pt/dictionary/content_file.md +0 -22
  85. package/docs/pt/dictionary/function_fetching.md +23 -0
  86. package/docs/pt/eslint.md +9 -9
  87. package/docs/ru/bundle_optimization.md +1 -1
  88. package/docs/ru/configuration.md +34 -9
  89. package/docs/ru/dictionary/content_file.md +0 -22
  90. package/docs/ru/dictionary/function_fetching.md +23 -0
  91. package/docs/ru/eslint.md +9 -9
  92. package/docs/tr/bundle_optimization.md +1 -1
  93. package/docs/tr/configuration.md +33 -9
  94. package/docs/tr/dictionary/content_file.md +0 -22
  95. package/docs/tr/dictionary/function_fetching.md +23 -0
  96. package/docs/tr/eslint.md +9 -9
  97. package/docs/uk/configuration.md +35 -9
  98. package/docs/uk/dictionary/content_file.md +0 -22
  99. package/docs/uk/dictionary/function_fetching.md +23 -0
  100. package/docs/uk/eslint.md +9 -9
  101. package/docs/ur/configuration.md +35 -9
  102. package/docs/ur/eslint.md +9 -9
  103. package/docs/vi/bundle_optimization.md +1 -1
  104. package/docs/vi/configuration.md +33 -9
  105. package/docs/vi/dictionary/content_file.md +0 -22
  106. package/docs/vi/dictionary/function_fetching.md +23 -0
  107. package/docs/vi/eslint.md +9 -9
  108. package/docs/zh/bundle_optimization.md +1 -1
  109. package/docs/zh/configuration.md +29 -9
  110. package/docs/zh/dictionary/content_file.md +0 -22
  111. package/docs/zh/dictionary/function_fetching.md +23 -0
  112. package/docs/zh/eslint.md +9 -9
  113. package/docs/zh-TW/bundle_optimization.md +1 -1
  114. package/docs/zh-TW/eslint.md +9 -9
  115. package/package.json +5 -5
@@ -478,6 +478,30 @@ const config: IntlayerConfig = {
478
478
  */
479
479
  purge: true,
480
480
 
481
+ /**
482
+ * Групувати чанки словників за локаллю відповідно до межі розділення коду, яка
483
+ * їх використовує, щоб ліниво завантажена сторінка отримувала свій вміст одним
484
+ * запитом.
485
+ * За замовчуванням: true
486
+ *
487
+ * Примітка:
488
+ * - Застосовується лише до словників з `importMode: 'dynamic'`.
489
+ */
490
+ chunkGrouping: true,
491
+
492
+ /**
493
+ * Завантажувати словник разом із чанком, який його використовує, замість
494
+ * отримання після рендерингу цього чанка. Читання рендеряться синхронно
495
+ * замість призупинення, тому під час навігації більше не блимає стан
496
+ * завантаження.
497
+ * За замовчуванням: true
498
+ *
499
+ * Примітка:
500
+ * - Очікується лише визначена локаль, тому сторінка завантажує тільки ту мову,
501
+ * яку відображає.
502
+ */
503
+ dictionariesPreload: true,
504
+
481
505
  /**
482
506
  * Формат виводу для згенерованих файлів словників.
483
507
  * За замовчуванням: ['cjs', 'esm']
@@ -1054,15 +1078,17 @@ Intlayer підтримує широкий спектр провайдерів A
1054
1078
 
1055
1079
  > Під час оптимізації Intlayer замінює виклики словників для оптимізації поділу коду (chunking), щоб підсумковий пакет імпортував лише ті словники, які фактично використовуються.
1056
1080
 
1057
- | Поле | Опис | Тип | За замовчуванням | Приклад | Примітки |
1058
- | ----------------- | ----------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
1059
- | `mode` | Керує режимом збірки. | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: Збірка запускається автоматично під час збірки додатка.<br/>• `'manual'`: Виконується лише через явну команду збірки.<br/>• Може використовуватися для запобігання збірці словників (наприклад, щоб уникнути запуску в середовищі Node.js). |
1060
- | `optimize` | Керує виконанням оптимізації збірки. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Якщо не визначено, оптимізація запускається під час збірки фреймворку (Vite/Next.js).<br/>• `true` форсує оптимізацію навіть у режимі розробки.<br/>• `false` вимикає її.<br/>• Якщо ввімкнено, замінює виклики словників для оптимізації chunking.<br/>• Потрібні плагіни `@intlayer/babel` та `@intlayer/swc`. |
1061
- | `minify` | Мініфікувати словники для зменшення розміру бандла. | `boolean` | `false` | | • Чи слід мініфікувати пакет.<br/>• За замовчуванням: `true` у виробничому середовищі.<br/>• Цей параметр буде ігноруватися, якщо `optimize` вимкнено.<br/>• Цей параметр буде ігноруватися, якщо `editor.enabled` має значення true. |
1062
- | `purge` | Видалити невикористані ключі в словниках. | `boolean` | `false` | | • Чи слід очищати пакет.<br/>• За замовчуванням: `true` у виробничому середовищі.<br/>• Цей параметр буде ігноруватися, якщо `optimize` вимкнено. |
1063
- | `checkTypes` | Вказує, чи має збірка перевіряти типи TypeScript та записувати помилки. | `boolean` | `false` | | Може сповільнити процес збірки. |
1064
- | `outputFormat` | Керує форматом виводу словників. | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1065
- | `traversePattern` | Шаблон для файлів, які слід сканувати під час оптимізації. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | Покращує продуктивність збірки, обмежуючи оптимізацію відповідними файлами.<br/>• Ігнорується, якщо `optimize` вимкнено.<br/>• Використовує glob-патерни. |
1081
+ | Поле | Опис | Тип | За замовчуванням | Приклад | Примітки |
1082
+ | --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1083
+ | `mode` | Керує режимом збірки. | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: Збірка запускається автоматично під час збірки додатка.<br/>• `'manual'`: Виконується лише через явну команду збірки.<br/>• Може використовуватися для запобігання збірці словників (наприклад, щоб уникнути запуску в середовищі Node.js). |
1084
+ | `optimize` | Керує виконанням оптимізації збірки. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Якщо не визначено, оптимізація запускається під час збірки фреймворку (Vite/Next.js).<br/>• `true` форсує оптимізацію навіть у режимі розробки.<br/>• `false` вимикає її.<br/>• Якщо ввімкнено, замінює виклики словників для оптимізації chunking.<br/>• Потрібні плагіни `@intlayer/babel` та `@intlayer/swc`. |
1085
+ | `minify` | Мініфікувати словники для зменшення розміру бандла. | `boolean` | `false` | | • Чи слід мініфікувати пакет.<br/>• За замовчуванням: `true` у виробничому середовищі.<br/>• Цей параметр буде ігноруватися, якщо `optimize` вимкнено.<br/>• Цей параметр буде ігноруватися, якщо `editor.enabled` має значення true. |
1086
+ | `purge` | Видалити невикористані ключі в словниках. | `boolean` | `false` | | • Чи слід очищати пакет.<br/>• За замовчуванням: `true` у виробничому середовищі.<br/>• Цей параметр буде ігноруватися, якщо `optimize` вимкнено. |
1087
+ | `checkTypes` | Вказує, чи має збірка перевіряти типи TypeScript та записувати помилки. | `boolean` | `false` | | Може сповільнити процес збірки. |
1088
+ | `chunkGrouping` | Визначає, чи слід групувати чанки словників за локаллю відповідно до межі розділення коду, яка їх використовує. | `boolean` | `true` | | • Без групування сторінка, зібрана з багатьох компонентів, надсилає по одному запиту на кожен словник.<br/>• Словники, досяжні з кількох меж, переносяться до спільного чанка, тому жодна сторінка не містить вміст іншої.<br/>• Застосовується лише до словників з `importMode: 'dynamic'`.<br/>• Застосовується лише до клієнтської збірки і лише під час бандлінгу (не в режимі розробки). |
1089
+ | `dictionariesPreload` | Визначає, чи має словник завантажуватися разом із чанком, який його використовує, замість отримання після рендерингу цього чанка. | `boolean` | `true` | | Згенерована точка входу очікує локаль перегляду на верхньому рівні, тому ліниво завантажений маршрут не вважається завантаженим, доки його вміст не готовий.<br/>• Читання рендеряться синхронно замість призупинення, тому під час навігації більше не блимає стан завантаження.<br/>• Очікується лише визначена локаль, тому сторінка завантажує тільки ту мову, яку відображає.<br/>• Застосовується лише до словників з `importMode: 'dynamic'` у клієнтській збірці.<br/>• Потребує бандлера з підтримкою top-level await (Vite, esbuild). |
1090
+ | `outputFormat` | Керує форматом виводу словників. | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1091
+ | `traversePattern` | Шаблон для файлів, які слід сканувати під час оптимізації. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • Покращує продуктивність збірки, обмежуючи оптимізацію відповідними файлами.<br/>• Ігнорується, якщо `optimize` вимкнено.<br/>• Використовує glob-патерни. |
1066
1092
 
1067
1093
  ---
1068
1094
 
@@ -542,28 +542,6 @@ export default aboutPageMetaContent;
542
542
 
543
543
  > Див. [Варіанти](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/variants.md) для отримання додаткової інформації.
544
544
 
545
- #### `meta` (`Record<string, string | number | boolean>`)
546
-
547
- Використовується разом із Динамічними Записами, це поле дозволяє оголошувати записи, керовані CMS, або довільні дані, отримані під час виконання за непрозорим ID. Ідентичність словника визначається довільним набором пар ключ-значення, оголошених у цьому полі `meta`.
548
-
549
- **Приклад:**
550
-
551
- ```typescript
552
- {
553
- key: "product-copy",
554
- meta: {
555
- id: "prod_abc",
556
- userId: "user_123"
557
- },
558
- content: {
559
- name: "Widget Pro",
560
- description: "The best widget."
561
- }
562
- }
563
- ```
564
-
565
- > Див. [Динамічні Записи](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dynamic_dictionaries/dynamic_content.md) для отримання додаткової інформації.
566
-
567
545
  ### Властивості CMS
568
546
 
569
547
  ##### `version` (string)
@@ -87,6 +87,29 @@ export default asyncFunctionContent;
87
87
 
88
88
  У цьому випадку функція `fakeFetch` імітує затримку, щоб симулювати час відповіді сервера. Intlayer виконує асинхронну функцію і використовує результат як вміст для ключа `text`.
89
89
 
90
+ ## Отримання віддаленого вмісту
91
+
92
+ Ви також можете призначити проміс безпосередньо полю вмісту. Intlayer дочекається його під час збирання словників і вставить отримане значення:
93
+
94
+ ```typescript fileName="**/*.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
95
+ import type { Dictionary } from "intlayer";
96
+
97
+ const remoteContent = {
98
+ key: "remote_content",
99
+ content: {
100
+ externalContent: fetch("https://example.com").then((res) => res.json()),
101
+ },
102
+ } satisfies Dictionary;
103
+
104
+ export default remoteContent;
105
+ ```
106
+
107
+ ```plaintext fileName="**/*.content.json" contentDeclarationFormat="json"
108
+ Неможливо отримати вміст із JSON-файлу, використовуйте натомість .ts або .js файл
109
+ ```
110
+
111
+ > Запит виконується під час збирання, тому отримані дані — це знімок, вбудований у словник. Перезберіть словники, щоб оновити його.
112
+
90
113
  ## Використання контенту на основі функцій у React-компонентах
91
114
 
92
115
  Щоб використовувати контент на основі функцій у React-компоненті, потрібно імпортувати `useIntlayer` з `react-intlayer` і викликати його з ідентифікатором контенту, щоб отримати вміст. Ось приклад:
package/docs/uk/eslint.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-08-12
3
- updatedAt: 2026-08-12
3
+ updatedAt: 2026-08-13
4
4
  title: Плагін ESLint | Правила лінтингу для Intlayer
5
5
  description: Знаходьте жорстко закодовані рядки, динамічні виклики, які компілятор Intlayer не може оптимізувати, та невикористаний вміст словників за допомогою eslint-plugin-intlayer. Працює з ESLint та oxlint для React, Vue, Svelte, Angular та Astro.
6
6
  keywords:
@@ -52,7 +52,7 @@ pnpm add --save-dev eslint-plugin-intlayer
52
52
  yarn add --dev eslint-plugin-intlayer
53
53
  ```
54
54
 
55
- Потрібен ESLint 9 або новішої версії (flat config).
55
+ Потрібен ESLint 9 або новішої версії (flat config). ESLint 10 підтримується.
56
56
 
57
57
  ## Використання
58
58
 
@@ -61,20 +61,20 @@ yarn add --dev eslint-plugin-intlayer
61
61
  <Tabs defaultTab="eslint">
62
62
  <Tab label="ESLint" value="eslint">
63
63
 
64
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
64
+ ```javascript fileName="eslint.config.mjs"
65
65
  import intlayer from "eslint-plugin-intlayer";
66
66
 
67
67
  export default [...intlayer.configs.recommended];
68
68
  ```
69
69
 
70
- Або вмикайте правила окремо:
70
+ Або розгорніть конфігурацію та задайте рівні самостійно:
71
71
 
72
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
72
+ ```javascript fileName="eslint.config.mjs"
73
73
  import intlayer from "eslint-plugin-intlayer";
74
74
 
75
75
  export default [
76
+ ...intlayer.configs.recommended,
76
77
  {
77
- plugins: { intlayer },
78
78
  rules: {
79
79
  "intlayer/no-raw-text": "warn",
80
80
  "intlayer/static-dictionary-key": "error",
@@ -144,7 +144,7 @@ const { title } = useIntlayer("home");
144
144
 
145
145
  **Параметри**
146
146
 
147
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
147
+ ```javascript fileName="eslint.config.mjs"
148
148
  {
149
149
  "intlayer/no-raw-text": [
150
150
  "warn",
@@ -247,7 +247,7 @@ export default {
247
247
 
248
248
  **Параметри**
249
249
 
250
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
250
+ ```javascript fileName="eslint.config.mjs"
251
251
  {
252
252
  "intlayer/no-unused-content": [
253
253
  "warn",
@@ -296,7 +296,7 @@ export default {
296
296
  | Шаблони Angular | `.component.html` | `@angular-eslint/template-parser` |
297
297
  | Astro | `.astro` | `astro-eslint-parser` |
298
298
 
299
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
299
+ ```javascript fileName="eslint.config.mjs"
300
300
  import intlayer from "eslint-plugin-intlayer";
301
301
  import tseslint from "typescript-eslint";
302
302
  import vueParser from "vue-eslint-parser";
@@ -480,6 +480,30 @@ const config: IntlayerConfig = {
480
480
  */
481
481
  prune: true,
482
482
 
483
+ /**
484
+ * فی لوکیل ڈکشنری چنکس کو اُس کوڈ اسپلٹ باؤنڈری کے مطابق گروپ کریں جو انہیں
485
+ * استعمال کرتی ہے، تاکہ سست روی سے لوڈ ہونے والا صفحہ اپنا مواد ایک ہی درخواست
486
+ * میں حاصل کرے۔
487
+ * ڈیفالٹ: true
488
+ *
489
+ * نوٹ:
490
+ * - صرف اُن ڈکشنریوں پر لاگو ہوتا ہے جو `importMode: 'dynamic'` استعمال کرتی
491
+ * ہیں۔
492
+ */
493
+ chunkGrouping: true,
494
+
495
+ /**
496
+ * ڈکشنری کو اُس چنک کے ساتھ لوڈ کریں جو اسے استعمال کرتا ہے، بجائے اس کے کہ وہ
497
+ * چنک رینڈر ہونے کے بعد اسے حاصل کیا جائے۔ پڑھائی معطل ہونے کے بجائے ہم وقت
498
+ * رینڈر ہوتی ہے، اس لیے نیویگیشن میں اب لوڈنگ کی حالت نہیں جھلکتی۔
499
+ * ڈیفالٹ: true
500
+ *
501
+ * نوٹ:
502
+ * - صرف طے شدہ لوکیل کا انتظار کیا جاتا ہے، اس لیے صفحہ صرف وہی زبان ڈاؤن لوڈ
503
+ * کرتا ہے جو وہ دکھاتا ہے۔
504
+ */
505
+ dictionariesPreload: true,
506
+
483
507
  /**
484
508
  * تیار کردہ لغت فائلوں کے لیے آؤٹ پٹ فارمیٹ۔
485
509
  * ڈیفالٹ: ['cjs', 'esm']
@@ -1041,15 +1065,17 @@ Intlayer زیادہ سے زیادہ لچک کو یقینی بنانے کے لی
1041
1065
 
1042
1066
  > آپٹیمائزیشن کے دوران، Intlayer لغت کی کالز کو کوڈ اسپلٹنگ (chunking) آپٹیمائزیشن سے بدل دیتا ہے تاکہ حتمی بنڈل صرف وہی لغات امپورٹ کرے جو اصل میں استعمال ہوئی ہیں۔
1043
1067
 
1044
- | فیلڈ | وضاحت | قسم | ڈیفالٹ | مثال | نوٹ |
1045
- | ----------------- | ------------------------------------------------------------------------------------ | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1046
- | `mode` | بلڈ ایگزیکیوشن موڈ کو کنٹرول کرتا ہے۔ | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: ایپ بلڈ کے دوران خودکار طور پر بلڈ شروع ہوتا ہے۔<br/>• `'manual'`: صرف واضح بلڈ کمانڈ کے ذریعے چلتا ہے۔<br/>• لغت کی بلڈ کو روکنے کے لیے مفید ہو سکتا ہے (مثلاً: Node.js ماحول میں چلنے سے بچنے کے لیے)۔ |
1047
- | `optimize` | کنٹرول کرتا ہے کہ آیا بلڈ آپٹیمائزیشن کی جاتی ہے۔ | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • اگر متعین نہ ہو، تو یہ فریم ورک بلڈ (Vite/Next.js) کے دوران شروع ہوگا۔<br/>• `true` ڈیولپمنٹ موڈ میں بھی آپٹیمائزیشن کو مجبور کرتا ہے۔<br/>• `false` اسے غیر فعال کرتا ہے۔<br/>• اگر فعال ہو، تو لغت کی کالز کو چنکنگ آپٹیمائزیشن سے بدل دیتا ہے۔<br/>• `@intlayer/babel` اور `@intlayer/swc` پلگ انز کی ضرورت ہے۔ |
1048
- | `minify` | بتاتا ہے کہ آیا بنڈل کے سائز کو کم کرنے کے لیے لغات کو کم (minify) کیا جانا چاہیے۔ | `boolean` | `false` | | • بتاتا ہے کہ آیا بنڈل کو منی فائی کرنا ہے۔<br/>• ڈیفالٹ: پروڈکشن میں `true`۔<br/>• اگر `optimize` غیر فعال ہو تو اسے نظر انداز کر دیا جائے گا۔<br/>• اگر `editor.enabled` کی ویلیو true ہو تو اسے نظر انداز کر دیا جائے گا۔ |
1049
- | `prune` | بتاتا ہے کہ آیا لغات میں غیر استعمال شدہ کلیدوں کو ہٹا دینا (prune) چاہیے۔ | `boolean` | `true` | | • بتاتا ہے کہ آیا بنڈل کو پرون (prune) کرنا ہے۔ <br/>• ڈیفالٹ: پروڈکشن میں `true`۔<br/>• اگر `optimize` غیر فعال ہو تو اسے نظر انداز کر دیا جائے گا۔ |
1050
- | `checkTypes` | بتاتا ہے کہ آیا بلڈ کو TypeScript اقسام کو چیک کرنا چاہیے اور ایررز لاگ کرنے چاہئیں۔ | `boolean` | `false` | | بلڈ کی کارکردگی کو سست کر سکتا ہے۔ |
1051
- | `outputFormat` | لغت کے آؤٹ پٹ فارمیٹ کو کنٹرول کرتا ہے۔ | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1052
- | `traversePattern` | آپٹیمائزیشن کے دوران اسکین کی جانے والی فائلوں کا پیٹرن۔ | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | متعلقہ فائلوں تک آپٹیمائزیشن کو محدود کرکے بلڈ کی کارکردگی کو بہتر بناتا ہے۔<br/>• اگر `optimize` غیر فعال ہو تو نظر انداز کر دیا جاتا ہے۔<br/>• گلوب (glob) پیٹرنز استعمال کرتا ہے۔ |
1068
+ | فیلڈ | وضاحت | قسم | ڈیفالٹ | مثال | نوٹ |
1069
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1070
+ | `mode` | بلڈ ایگزیکیوشن موڈ کو کنٹرول کرتا ہے۔ | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: ایپ بلڈ کے دوران خودکار طور پر بلڈ شروع ہوتا ہے۔<br/>• `'manual'`: صرف واضح بلڈ کمانڈ کے ذریعے چلتا ہے۔<br/>• لغت کی بلڈ کو روکنے کے لیے مفید ہو سکتا ہے (مثلاً: Node.js ماحول میں چلنے سے بچنے کے لیے)۔ |
1071
+ | `optimize` | کنٹرول کرتا ہے کہ آیا بلڈ آپٹیمائزیشن کی جاتی ہے۔ | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • اگر متعین نہ ہو، تو یہ فریم ورک بلڈ (Vite/Next.js) کے دوران شروع ہوگا۔<br/>• `true` ڈیولپمنٹ موڈ میں بھی آپٹیمائزیشن کو مجبور کرتا ہے۔<br/>• `false` اسے غیر فعال کرتا ہے۔<br/>• اگر فعال ہو، تو لغت کی کالز کو چنکنگ آپٹیمائزیشن سے بدل دیتا ہے۔<br/>• `@intlayer/babel` اور `@intlayer/swc` پلگ انز کی ضرورت ہے۔ |
1072
+ | `minify` | بتاتا ہے کہ آیا بنڈل کے سائز کو کم کرنے کے لیے لغات کو کم (minify) کیا جانا چاہیے۔ | `boolean` | `false` | | • بتاتا ہے کہ آیا بنڈل کو منی فائی کرنا ہے۔<br/>• ڈیفالٹ: پروڈکشن میں `true`۔<br/>• اگر `optimize` غیر فعال ہو تو اسے نظر انداز کر دیا جائے گا۔<br/>• اگر `editor.enabled` کی ویلیو true ہو تو اسے نظر انداز کر دیا جائے گا۔ |
1073
+ | `prune` | بتاتا ہے کہ آیا لغات میں غیر استعمال شدہ کلیدوں کو ہٹا دینا (prune) چاہیے۔ | `boolean` | `true` | | • بتاتا ہے کہ آیا بنڈل کو پرون (prune) کرنا ہے۔ <br/>• ڈیفالٹ: پروڈکشن میں `true`۔<br/>• اگر `optimize` غیر فعال ہو تو اسے نظر انداز کر دیا جائے گا۔ |
1074
+ | `checkTypes` | بتاتا ہے کہ آیا بلڈ کو TypeScript اقسام کو چیک کرنا چاہیے اور ایررز لاگ کرنے چاہئیں۔ | `boolean` | `false` | | بلڈ کی کارکردگی کو سست کر سکتا ہے۔ |
1075
+ | `chunkGrouping` | آیا فی لوکیل ڈکشنری چنکس کو اُس کوڈ اسپلٹ باؤنڈری کے مطابق گروپ کیا جائے جو انہیں استعمال کرتی ہے۔ | `boolean` | `true` | | • گروپنگ کے بغیر، کئی اجزاء پر مشتمل صفحہ ہر ڈکشنری کے لیے ایک درخواست بھیجتا ہے۔<br/>• متعدد باؤنڈریز سے پہنچی جانے والی ڈکشنریاں مشترکہ چنک میں منتقل ہو جاتی ہیں، اس لیے کوئی صفحہ دوسرے صفحے کا مواد نہیں بھیجتا۔<br/>• صرف اُن ڈکشنریوں پر لاگو ہوتا ہے جو `importMode: 'dynamic'` استعمال کرتی ہیں۔<br/>• صرف کلائنٹ بلڈ پر، اور صرف بنڈلنگ کے دوران لاگو ہوتا ہے (dev میں نہیں)۔ |
1076
+ | `dictionariesPreload` | آیا ڈکشنری کو اُس چنک کے ساتھ لوڈ کیا جائے جو اسے استعمال کرتا ہے، بجائے اس کے کہ وہ چنک رینڈر ہونے کے بعد حاصل کی جائے۔ | `boolean` | `true` | | تیار کردہ انٹری پوائنٹ اعلیٰ سطح پر براؤزنگ لوکیل کا انتظار کرتا ہے، اس لیے سست روی سے لوڈ ہونے والا روٹ اُس وقت تک لوڈ شدہ نہیں سمجھا جاتا جب تک اس کا مواد موجود نہ ہو۔<br/>• پڑھائی معطل ہونے کے بجائے ہم وقت رینڈر ہوتی ہے، اس لیے نیویگیشن میں اب لوڈنگ کی حالت نہیں جھلکتی۔<br/>• صرف طے شدہ لوکیل کا انتظار کیا جاتا ہے، اس لیے صفحہ صرف وہی زبان ڈاؤن لوڈ کرتا ہے جو وہ دکھاتا ہے۔<br/>• صرف کلائنٹ بلڈ میں `importMode: 'dynamic'` استعمال کرنے والی ڈکشنریوں پر لاگو ہوتا ہے۔<br/>• ٹاپ لیول await کی حمایت کرنے والا بنڈلر درکار ہے (Vite، esbuild)۔ |
1077
+ | `outputFormat` | لغت کے آؤٹ پٹ فارمیٹ کو کنٹرول کرتا ہے۔ | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1078
+ | `traversePattern` | آپٹیمائزیشن کے دوران اسکین کی جانے والی فائلوں کا پیٹرن۔ | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • متعلقہ فائلوں تک آپٹیمائزیشن کو محدود کرکے بلڈ کی کارکردگی کو بہتر بناتا ہے۔<br/>• اگر `optimize` غیر فعال ہو تو نظر انداز کر دیا جاتا ہے۔<br/>• گلوب (glob) پیٹرنز استعمال کرتا ہے۔ |
1053
1079
 
1054
1080
  ---
1055
1081
 
package/docs/ur/eslint.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-08-12
3
- updatedAt: 2026-08-12
3
+ updatedAt: 2026-08-13
4
4
  title: ESLint پلگ ان | Intlayer کے لیے لنٹ قواعد
5
5
  description: eslint-plugin-intlayer کے ذریعے ہارڈ کوڈ شدہ سٹرنگز، ایسی ڈائنامک کالز جنہیں Intlayer کمپائلر بہتر نہیں بنا سکتا، اور غیر استعمال شدہ ڈکشنری مواد کو پکڑیں۔ React، Vue، Svelte، Angular اور Astro میں ESLint اور oxlint کے ساتھ کام کرتا ہے۔
6
6
  keywords:
@@ -52,7 +52,7 @@ pnpm add --save-dev eslint-plugin-intlayer
52
52
  yarn add --dev eslint-plugin-intlayer
53
53
  ```
54
54
 
55
- ESLint 9 یا اس سے نیا ورژن (flat config) درکار ہے۔
55
+ ESLint 9 یا اس سے نیا ورژن (flat config) درکار ہے۔ ESLint 10 معاون ہے۔
56
56
 
57
57
  ## استعمال
58
58
 
@@ -61,20 +61,20 @@ ESLint 9 یا اس سے نیا ورژن (flat config) درکار ہے۔
61
61
  <Tabs defaultTab="eslint">
62
62
  <Tab label="ESLint" value="eslint">
63
63
 
64
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
64
+ ```javascript fileName="eslint.config.mjs"
65
65
  import intlayer from "eslint-plugin-intlayer";
66
66
 
67
67
  export default [...intlayer.configs.recommended];
68
68
  ```
69
69
 
70
- یا قواعد کو ایک ایک کر کے فعال کریں:
70
+ یا کوئی کنفیگ پھیلائیں اور شدت کی سطحیں خود مقرر کریں:
71
71
 
72
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
72
+ ```javascript fileName="eslint.config.mjs"
73
73
  import intlayer from "eslint-plugin-intlayer";
74
74
 
75
75
  export default [
76
+ ...intlayer.configs.recommended,
76
77
  {
77
- plugins: { intlayer },
78
78
  rules: {
79
79
  "intlayer/no-raw-text": "warn",
80
80
  "intlayer/static-dictionary-key": "error",
@@ -144,7 +144,7 @@ const { title } = useIntlayer("home");
144
144
 
145
145
  **اختیارات**
146
146
 
147
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
147
+ ```javascript fileName="eslint.config.mjs"
148
148
  {
149
149
  "intlayer/no-raw-text": [
150
150
  "warn",
@@ -247,7 +247,7 @@ export default {
247
247
 
248
248
  **اختیارات**
249
249
 
250
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
250
+ ```javascript fileName="eslint.config.mjs"
251
251
  {
252
252
  "intlayer/no-unused-content": [
253
253
  "warn",
@@ -296,7 +296,7 @@ export default {
296
296
  | Angular ٹیمپلیٹس | `.component.html` | `@angular-eslint/template-parser` |
297
297
  | Astro | `.astro` | `astro-eslint-parser` |
298
298
 
299
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
299
+ ```javascript fileName="eslint.config.mjs"
300
300
  import intlayer from "eslint-plugin-intlayer";
301
301
  import tseslint from "typescript-eslint";
302
302
  import vueParser from "vue-eslint-parser";
@@ -159,7 +159,7 @@ pnpm add -D webpack-bundle-analyzer
159
159
  bun add -d webpack-bundle-analyzer
160
160
  ```
161
161
 
162
- ```typescript fileName="webpack.config.ts
162
+ ```typescript fileName="webpack.config.ts"
163
163
  import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
164
164
 
165
165
  export default {
@@ -477,6 +477,28 @@ const config: IntlayerConfig = {
477
477
  */
478
478
  purge: true,
479
479
 
480
+ /**
481
+ * Nhóm các phần từ điển theo ngôn ngữ dựa trên ranh giới tách mã sử dụng
482
+ * chúng, để một trang tải lười lấy nội dung của nó trong một yêu cầu duy nhất.
483
+ * Mặc định: true
484
+ *
485
+ * Lưu ý:
486
+ * - Chỉ áp dụng cho các từ điển dùng `importMode: 'dynamic'`.
487
+ */
488
+ chunkGrouping: true,
489
+
490
+ /**
491
+ * Tải từ điển cùng với phần mã sử dụng nó, thay vì lấy về sau khi phần mã đó
492
+ * render. Việc đọc được render đồng bộ thay vì bị treo, nên điều hướng không
493
+ * còn nhấp nháy trạng thái đang tải.
494
+ * Mặc định: true
495
+ *
496
+ * Lưu ý:
497
+ * - Chỉ ngôn ngữ đã xác định mới được chờ, nên trang chỉ tải đúng ngôn ngữ mà
498
+ * nó hiển thị.
499
+ */
500
+ dictionariesPreload: true,
501
+
480
502
  /**
481
503
  * Định dạng đầu ra cho các tệp dictionary được tạo.
482
504
  * Mặc định: ['cjs', 'esm']
@@ -1053,15 +1075,17 @@ Các tùy chọn build được áp dụng cho các plugin `@intlayer/babel` và
1053
1075
 
1054
1076
  > Trong quá trình tối ưu hóa, Intlayer sẽ thay thế các lời gọi dictionary để tối ưu hóa việc phân tách mã (chunking) sao cho gói kết quả chỉ import những dictionary thực sự được sử dụng.
1055
1077
 
1056
- | Trường | Mô tả | Kiểu dữ liệu | Mặc định | Ví dụ | Nhận xét |
1057
- | ----------------- | --------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1058
- | `mode` | Kiểm soát chế độ build. | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: Quá trình build được khởi chạy tự động trong quá trình build ứng dụng.<br/>• `'manual'`: Chỉ được thực thi thông qua một lệnh build rõ ràng.<br/>• Có thể được sử dụng để ngăn chặn quá trình build dictionary (ví dụ: để tránh chạy trong môi trường Node.js). |
1059
- | `optimize` | Kiểm soát liệu các tối ưu hóa build có nên được thực hiện hay không. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Nếu chưa được định nghĩa, quá trình tối ưu hóa được khởi chạy trong quá trình build framework (Vite/Next.js).<br/>• `true` buộc thực hiện tối ưu hóa ngay cả trong chế độ dev.<br/>• `false` vô hiệu hóa nó.<br/>• Nếu bật, nó sẽ thay thế các lệnh gọi dictionary để phục vụ tối ưu hóa chunking.<br/>• Yêu cầu các plugin `@intlayer/babel` và `@intlayer/swc`. |
1060
- | `minify` | Nén (Minify) các từ điển để giảm kích thước bundle. | `boolean` | `false` | | • Cho biết bundle có nên được rút gọn không.<br/>• Mặc định: `true` trong production.<br/>• Tùy chọn này sẽ bị bỏ qua nếu `optimize` bị tắt.<br/>• Tùy chọn này sẽ bị bỏ qua nếu `editor.enabled` là true. |
1061
- | `purge` | Loại bỏ (Purge) các khóa không sử dụng trong từ điển. | `boolean` | `false` | | • Cho biết bundle có nên được loại bỏ các khóa không sử dụng không.<br/>• Mặc định: `true` trong production.<br/>• Tùy chọn này sẽ bị bỏ qua nếu `optimize` bị tắt. |
1062
- | `checkTypes` | Biểu thị liệu build có nên kiểm tra các kiểu dữ liệu TypeScript và ghi nhật ký lỗi hay không. | `boolean` | `false` | | Có thể làm chậm quá trình build. |
1063
- | `outputFormat` | Kiểm soát định dạng đầu ra cho các dictionary. | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1064
- | `traversePattern` | Pattern chỉ các tệp cần quét trong quá trình tối ưu hóa. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | Hạn chế tối ưu hóa cho các tệpliên quan để cải thiện hiệu suất build.<br/>• Bị bỏ qua nếu `optimize` tắt.<br/>• Sử dụng các pattern glob. |
1078
+ | Trường | Mô tả | Kiểu dữ liệu | Mặc định | Ví dụ | Nhận xét |
1079
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------ | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1080
+ | `mode` | Kiểm soát chế độ build. | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: Quá trình build được khởi chạy tự động trong quá trình build ứng dụng.<br/>• `'manual'`: Chỉ được thực thi thông qua một lệnh build rõ ràng.<br/>• Có thể được sử dụng để ngăn chặn quá trình build dictionary (ví dụ: để tránh chạy trong môi trường Node.js). |
1081
+ | `optimize` | Kiểm soát liệu các tối ưu hóa build có nên được thực hiện hay không. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Nếu chưa được định nghĩa, quá trình tối ưu hóa được khởi chạy trong quá trình build framework (Vite/Next.js).<br/>• `true` buộc thực hiện tối ưu hóa ngay cả trong chế độ dev.<br/>• `false` vô hiệu hóa nó.<br/>• Nếu bật, nó sẽ thay thế các lệnh gọi dictionary để phục vụ tối ưu hóa chunking.<br/>• Yêu cầu các plugin `@intlayer/babel` và `@intlayer/swc`. |
1082
+ | `minify` | Nén (Minify) các từ điển để giảm kích thước bundle. | `boolean` | `false` | | • Cho biết bundle có nên được rút gọn không.<br/>• Mặc định: `true` trong production.<br/>• Tùy chọn này sẽ bị bỏ qua nếu `optimize` bị tắt.<br/>• Tùy chọn này sẽ bị bỏ qua nếu `editor.enabled` là true. |
1083
+ | `purge` | Loại bỏ (Purge) các khóa không sử dụng trong từ điển. | `boolean` | `false` | | • Cho biết bundle có nên được loại bỏ các khóa không sử dụng không.<br/>• Mặc định: `true` trong production.<br/>• Tùy chọn này sẽ bị bỏ qua nếu `optimize` bị tắt. |
1084
+ | `checkTypes` | Biểu thị liệu build có nên kiểm tra các kiểu dữ liệu TypeScript và ghi nhật ký lỗi hay không. | `boolean` | `false` | | Có thể làm chậm quá trình build. |
1085
+ | `chunkGrouping` | Xác định nhóm các phần từ điển theo ngôn ngữ dựa trên ranh giới tách mã sử dụng chúng hay không. | `boolean` | `true` | | • Không nhóm, một trang gồm nhiều thành phần sẽ gửi một yêu cầu cho mỗi từ điển.<br/>• Các từ điển được truy cập từ nhiều ranh giới sẽ chuyển sang phần dùng chung, nên không trang nào mang nội dung của trang khác.<br/>• Chỉ áp dụng cho các từ điển dùng `importMode: 'dynamic'`.<br/>• Chỉ áp dụng cho bản build phía client, chỉ khi đóng gói (không phải ở chế độ dev). |
1086
+ | `dictionariesPreload` | Xác định từ điển được tải cùng với phần sử dụng nó hay không, thay vì được lấy về sau khi phần mã đó render. | `boolean` | `true` | | Điểm vào được tạo sẽ chờ ngôn ngữ duyệt ở cấp cao nhất, nên một route tải lười chưa được coi là đã tải cho đến khinội dung.<br/>• Việc đọc được render đồng bộ thay vì bị treo, nên điều hướng không còn nhấp nháy trạng thái đang tải.<br/>• Chỉ ngôn ngữ đã xác định mới được chờ, nên trang chỉ tải đúng ngôn ngữ mà nó hiển thị.<br/>• Chỉ áp dụng cho các từ điển dùng `importMode: 'dynamic'`, ở bản build phía client.<br/>• Yêu cầu bộ đóng gói hỗ trợ top-level await (Vite, esbuild). |
1087
+ | `outputFormat` | Kiểm soát định dạng đầu ra cho các dictionary. | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1088
+ | `traversePattern` | Pattern chỉ rõ các tệp cần quét trong quá trình tối ưu hóa. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • Hạn chế tối ưu hóa cho các tệp có liên quan để cải thiện hiệu suất build.<br/>• Bị bỏ qua nếu `optimize` tắt.<br/>• Sử dụng các pattern glob. |
1065
1089
 
1066
1090
  ---
1067
1091
 
@@ -539,28 +539,6 @@ Chỉ định độ ưu tiên của từ điển để giải quyết xung độ
539
539
 
540
540
  > Xem [Biến thể](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/dynamic_dictionaries/variants.md) để biết thêm thông tin.
541
541
 
542
- #### `meta` (`Record<string, string | number | boolean>`)
543
-
544
- Được sử dụng cùng với Các bản ghi động (Dynamic Records), trường này cho phép khai báo các bản ghi do CMS quản lý hoặc dữ liệu tùy ý được truy xuất tại thời gian chạy bằng một ID ẩn danh. Danh tính từ điển được xác định bởi tập hợp tùy ý các cặp khóa-giá trị được khai báo trong trường `meta` này.
545
-
546
- **Ví dụ:**
547
-
548
- ```typescript
549
- {
550
- key: "product-copy",
551
- meta: {
552
- id: "prod_abc",
553
- userId: "user_123"
554
- },
555
- content: {
556
- name: "Widget Pro",
557
- description: "The best widget."
558
- }
559
- }
560
- ```
561
-
562
- > Xem [Bản ghi động](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/dynamic_dictionaries/dynamic_content.md) để biết thêm thông tin.
563
-
564
542
  ### Thuộc tính CMS
565
543
 
566
544
  ##### `version` (string)
@@ -87,6 +87,29 @@ Không thể lấy nội dung từ file JSON, hãy sử dụng file .ts hoặc .
87
87
 
88
88
  Trong trường hợp này, hàm `fakeFetch` mô phỏng một độ trễ để giả lập thời gian phản hồi của server. Intlayer thực thi hàm bất đồng bộ và sử dụng kết quả làm nội dung cho khóa `text`.
89
89
 
90
+ ## Lấy Nội dung Từ Xa
91
+
92
+ Bạn cũng có thể gán trực tiếp một promise cho một trường nội dung. Intlayer sẽ chờ promise đó khi build các từ điển và nhúng giá trị đã được phân giải:
93
+
94
+ ```typescript fileName="**/*.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
95
+ import type { Dictionary } from "intlayer";
96
+
97
+ const remoteContent = {
98
+ key: "remote_content",
99
+ content: {
100
+ externalContent: fetch("https://example.com").then((res) => res.json()),
101
+ },
102
+ } satisfies Dictionary;
103
+
104
+ export default remoteContent;
105
+ ```
106
+
107
+ ```plaintext fileName="**/*.content.json" contentDeclarationFormat="json"
108
+ Không thể lấy nội dung từ file JSON, hãy sử dụng file .ts hoặc .js thay thế
109
+ ```
110
+
111
+ > Yêu cầu được thực thi tại thời điểm build, vì vậy dữ liệu lấy về là một bản chụp được nhúng trong từ điển. Hãy build lại các từ điển để cập nhật.
112
+
90
113
  ## Sử dụng Nội dung Dựa trên Hàm trong Các Thành phần React
91
114
 
92
115
  Để sử dụng nội dung dựa trên hàm trong một thành phần React, bạn cần import `useIntlayer` từ `react-intlayer` và gọi nó với ID nội dung để lấy nội dung. Dưới đây là một ví dụ: