@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.
- package/blog/ar/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/de/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/en/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/en-GB/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/es/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/fr/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/hi/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/id/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/it/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/ja/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/ko/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/pl/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/pt/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/ru/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/tr/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/uk/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/vi/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/zh/nextjs-multilingual-seo-comparison.md +10 -10
- package/docs/ar/bundle_optimization.md +1 -1
- package/docs/ar/configuration.md +32 -9
- package/docs/ar/dictionary/content_file.md +0 -22
- package/docs/ar/dictionary/function_fetching.md +23 -0
- package/docs/ar/eslint.md +9 -9
- package/docs/bn/configuration.md +34 -9
- package/docs/bn/eslint.md +9 -9
- package/docs/cs/bundle_optimization.md +1 -1
- package/docs/cs/configuration.md +33 -9
- package/docs/cs/eslint.md +9 -9
- package/docs/de/bundle_optimization.md +1 -1
- package/docs/de/configuration.md +34 -9
- package/docs/de/dictionary/content_file.md +0 -22
- package/docs/de/dictionary/function_fetching.md +23 -0
- package/docs/de/eslint.md +9 -9
- package/docs/en/bundle_optimization.md +1 -1
- package/docs/en/configuration.md +34 -9
- package/docs/en/dictionary/content_file.md +0 -22
- package/docs/en/dictionary/function_fetching.md +23 -0
- package/docs/en/eslint.md +9 -9
- package/docs/en/packages/intlayer/getLocalizedPath.md +70 -19
- package/docs/en-GB/configuration.md +33 -9
- package/docs/en-GB/dictionary/content_file.md +0 -22
- package/docs/en-GB/dictionary/function_fetching.md +23 -0
- package/docs/en-GB/eslint.md +9 -9
- package/docs/es/bundle_optimization.md +1 -1
- package/docs/es/configuration.md +35 -9
- package/docs/es/dictionary/content_file.md +0 -22
- package/docs/es/dictionary/function_fetching.md +23 -0
- package/docs/es/eslint.md +9 -9
- package/docs/fr/bundle_optimization.md +1 -1
- package/docs/fr/configuration.md +35 -9
- package/docs/fr/dictionary/content_file.md +0 -22
- package/docs/fr/dictionary/function_fetching.md +23 -0
- package/docs/fr/eslint.md +9 -9
- package/docs/hi/configuration.md +35 -9
- package/docs/hi/dictionary/content_file.md +0 -22
- package/docs/hi/dictionary/function_fetching.md +23 -0
- package/docs/hi/eslint.md +9 -9
- package/docs/id/configuration.md +35 -9
- package/docs/id/dictionary/content_file.md +0 -22
- package/docs/id/dictionary/function_fetching.md +23 -0
- package/docs/id/eslint.md +9 -9
- package/docs/it/bundle_optimization.md +1 -1
- package/docs/it/configuration.md +35 -9
- package/docs/it/dictionary/content_file.md +0 -22
- package/docs/it/dictionary/function_fetching.md +23 -0
- package/docs/it/eslint.md +9 -9
- package/docs/ja/configuration.md +30 -9
- package/docs/ja/dictionary/content_file.md +0 -22
- package/docs/ja/dictionary/function_fetching.md +23 -0
- package/docs/ja/eslint.md +9 -9
- package/docs/ko/configuration.md +31 -9
- package/docs/ko/dictionary/content_file.md +0 -22
- package/docs/ko/dictionary/function_fetching.md +23 -0
- package/docs/ko/eslint.md +9 -9
- package/docs/nl/configuration.md +33 -9
- package/docs/nl/eslint.md +9 -9
- package/docs/pl/bundle_optimization.md +1 -1
- package/docs/pl/configuration.md +34 -9
- package/docs/pl/dictionary/content_file.md +0 -22
- package/docs/pl/dictionary/function_fetching.md +23 -0
- package/docs/pl/eslint.md +9 -9
- package/docs/pt/bundle_optimization.md +1 -1
- package/docs/pt/configuration.md +34 -9
- package/docs/pt/dictionary/content_file.md +0 -22
- package/docs/pt/dictionary/function_fetching.md +23 -0
- package/docs/pt/eslint.md +9 -9
- package/docs/ru/bundle_optimization.md +1 -1
- package/docs/ru/configuration.md +34 -9
- package/docs/ru/dictionary/content_file.md +0 -22
- package/docs/ru/dictionary/function_fetching.md +23 -0
- package/docs/ru/eslint.md +9 -9
- package/docs/tr/bundle_optimization.md +1 -1
- package/docs/tr/configuration.md +33 -9
- package/docs/tr/dictionary/content_file.md +0 -22
- package/docs/tr/dictionary/function_fetching.md +23 -0
- package/docs/tr/eslint.md +9 -9
- package/docs/uk/configuration.md +35 -9
- package/docs/uk/dictionary/content_file.md +0 -22
- package/docs/uk/dictionary/function_fetching.md +23 -0
- package/docs/uk/eslint.md +9 -9
- package/docs/ur/configuration.md +35 -9
- package/docs/ur/eslint.md +9 -9
- package/docs/vi/bundle_optimization.md +1 -1
- package/docs/vi/configuration.md +33 -9
- package/docs/vi/dictionary/content_file.md +0 -22
- package/docs/vi/dictionary/function_fetching.md +23 -0
- package/docs/vi/eslint.md +9 -9
- package/docs/zh/bundle_optimization.md +1 -1
- package/docs/zh/configuration.md +29 -9
- package/docs/zh/dictionary/content_file.md +0 -22
- package/docs/zh/dictionary/function_fetching.md +23 -0
- package/docs/zh/eslint.md +9 -9
- package/docs/zh-TW/bundle_optimization.md +1 -1
- package/docs/zh-TW/eslint.md +9 -9
- package/package.json +5 -5
package/docs/uk/configuration.md
CHANGED
|
@@ -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`
|
|
1060
|
-
| `optimize`
|
|
1061
|
-
| `minify`
|
|
1062
|
-
| `purge`
|
|
1063
|
-
| `checkTypes`
|
|
1064
|
-
| `
|
|
1065
|
-
| `
|
|
1081
|
+
| Поле | Опис | Тип | За замовчуванням | Приклад | Примітки |
|
|
1082
|
+
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1083
|
+
| `mode` | Керує режимом збірки. | `'auto'` | <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' | '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-
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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";
|
package/docs/ur/configuration.md
CHANGED
|
@@ -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`
|
|
1047
|
-
| `optimize`
|
|
1048
|
-
| `minify`
|
|
1049
|
-
| `prune`
|
|
1050
|
-
| `checkTypes`
|
|
1051
|
-
| `
|
|
1052
|
-
| `
|
|
1068
|
+
| فیلڈ | وضاحت | قسم | ڈیفالٹ | مثال | نوٹ |
|
|
1069
|
+
| --------------------- | ------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1070
|
+
| `mode` | بلڈ ایگزیکیوشن موڈ کو کنٹرول کرتا ہے۔ | `'auto'` | <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' | '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-
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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 {
|
package/docs/vi/configuration.md
CHANGED
|
@@ -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
|
|
1057
|
-
|
|
|
1058
|
-
| `mode`
|
|
1059
|
-
| `optimize`
|
|
1060
|
-
| `minify`
|
|
1061
|
-
| `purge`
|
|
1062
|
-
| `checkTypes`
|
|
1063
|
-
| `
|
|
1064
|
-
| `
|
|
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'` | <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 có 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, và chỉ khi đóng gói (không phải ở chế độ dev). |
|
|
1086
|
+
| `dictionariesPreload` | Xác định từ điển có được tải cùng với phần mã 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 khi có nộ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' | '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ụ:
|