@intlayer/docs 9.3.0 → 9.3.2
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/README.md +24 -24
- package/blog/ar/rag_powered_documentation_assistant.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +1 -1
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
- package/dist/cjs/authors2.cjs +0 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +4 -2
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +24 -2
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +4 -2
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +4 -2
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +24 -2
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +4 -2
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/configuration.md +10 -10
- package/docs/ar/eslint.md +336 -0
- package/docs/ar/interest_of_intlayer.md +24 -22
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ar/intlayer_with_svelte_kit.md +1 -1
- package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ar/intlayer_with_tanstack.md +5 -3
- package/docs/ar/lsp.md +114 -175
- package/docs/ar/readme.md +25 -25
- package/docs/bn/configuration.md +10 -10
- package/docs/bn/eslint.md +336 -0
- package/docs/bn/interest_of_intlayer.md +24 -22
- package/docs/cs/configuration.md +10 -10
- package/docs/cs/eslint.md +336 -0
- package/docs/cs/interest_of_intlayer.md +24 -22
- package/docs/de/configuration.md +10 -10
- package/docs/de/eslint.md +336 -0
- package/docs/de/interest_of_intlayer.md +24 -22
- package/docs/de/intlayer_with_svelte_kit.md +1 -1
- package/docs/de/intlayer_with_tanstack+solid.md +5 -3
- package/docs/de/intlayer_with_tanstack.md +5 -3
- package/docs/de/lsp.md +111 -172
- package/docs/de/readme.md +24 -24
- package/docs/en/configuration.md +10 -10
- package/docs/en/eslint.md +336 -0
- package/docs/en/interest_of_intlayer.md +24 -22
- package/docs/en/intlayer_with_svelte_kit.md +1 -1
- package/docs/en/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en/intlayer_with_tanstack.md +5 -3
- package/docs/en/lsp.md +109 -170
- package/docs/en/readme.md +24 -24
- package/docs/en-GB/configuration.md +10 -10
- package/docs/en-GB/eslint.md +336 -0
- package/docs/en-GB/interest_of_intlayer.md +24 -22
- package/docs/en-GB/intlayer_with_create_react_app.md +32 -35
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
- package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en-GB/intlayer_with_tanstack.md +5 -3
- package/docs/en-GB/lsp.md +109 -170
- package/docs/en-GB/readme.md +24 -24
- package/docs/es/configuration.md +10 -10
- package/docs/es/eslint.md +336 -0
- package/docs/es/interest_of_intlayer.md +24 -22
- package/docs/es/intlayer_with_svelte_kit.md +1 -1
- package/docs/es/intlayer_with_tanstack+solid.md +5 -3
- package/docs/es/intlayer_with_tanstack.md +5 -3
- package/docs/es/lsp.md +114 -175
- package/docs/es/readme.md +24 -24
- package/docs/fr/configuration.md +10 -10
- package/docs/fr/eslint.md +336 -0
- package/docs/fr/interest_of_intlayer.md +24 -22
- package/docs/fr/intlayer_with_svelte_kit.md +1 -1
- package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/fr/intlayer_with_tanstack.md +5 -3
- package/docs/fr/lsp.md +110 -171
- package/docs/fr/readme.md +24 -24
- package/docs/hi/configuration.md +10 -10
- package/docs/hi/eslint.md +336 -0
- package/docs/hi/interest_of_intlayer.md +24 -22
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/hi/intlayer_with_svelte_kit.md +1 -1
- package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/hi/intlayer_with_tanstack.md +5 -3
- package/docs/hi/intlayer_with_vite+svelte.md +2 -2
- package/docs/hi/lsp.md +113 -174
- package/docs/hi/readme.md +24 -24
- package/docs/id/configuration.md +10 -10
- package/docs/id/eslint.md +336 -0
- package/docs/id/interest_of_intlayer.md +24 -22
- package/docs/id/intlayer_with_svelte_kit.md +1 -1
- package/docs/id/intlayer_with_tanstack+solid.md +5 -3
- package/docs/id/intlayer_with_tanstack.md +5 -3
- package/docs/id/lsp.md +113 -174
- package/docs/id/readme.md +24 -24
- package/docs/it/configuration.md +10 -10
- package/docs/it/eslint.md +336 -0
- package/docs/it/interest_of_intlayer.md +24 -22
- package/docs/it/intlayer_with_svelte_kit.md +1 -1
- package/docs/it/intlayer_with_tanstack+solid.md +5 -3
- package/docs/it/intlayer_with_tanstack.md +5 -3
- package/docs/it/lsp.md +115 -176
- package/docs/it/readme.md +24 -24
- package/docs/ja/configuration.md +10 -10
- package/docs/ja/eslint.md +336 -0
- package/docs/ja/interest_of_intlayer.md +24 -22
- package/docs/ja/intlayer_with_react_router_v7.md +1 -146
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ja/intlayer_with_tanstack.md +5 -3
- package/docs/ja/intlayer_with_vite+react.md +5 -1
- package/docs/ja/lsp.md +113 -174
- package/docs/ja/readme.md +24 -24
- package/docs/ko/configuration.md +10 -10
- package/docs/ko/eslint.md +336 -0
- package/docs/ko/interest_of_intlayer.md +24 -22
- package/docs/ko/intlayer_with_lynx+react.md +4 -0
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ko/intlayer_with_storybook.md +5 -5
- package/docs/ko/intlayer_with_svelte_kit.md +1 -1
- package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ko/intlayer_with_tanstack.md +5 -3
- package/docs/ko/lsp.md +112 -173
- package/docs/ko/readme.md +24 -24
- package/docs/nl/configuration.md +10 -10
- package/docs/nl/eslint.md +336 -0
- package/docs/nl/interest_of_intlayer.md +24 -22
- package/docs/pl/configuration.md +10 -10
- package/docs/pl/eslint.md +336 -0
- package/docs/pl/interest_of_intlayer.md +4 -2
- package/docs/pl/intlayer_with_astro.md +1 -114
- package/docs/pl/intlayer_with_svelte_kit.md +1 -1
- package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pl/intlayer_with_tanstack.md +5 -3
- package/docs/pl/lsp.md +115 -176
- package/docs/pl/migration_from_i18next_to_intlayer.md +4 -0
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_next-intl_to_intlayer.md +11 -5
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_vue-i18n_to_intlayer.md +4 -0
- package/docs/pl/readme.md +24 -24
- package/docs/pt/configuration.md +10 -10
- package/docs/pt/eslint.md +336 -0
- package/docs/pt/interest_of_intlayer.md +24 -22
- package/docs/pt/intlayer_with_astro.md +1 -114
- package/docs/pt/intlayer_with_svelte_kit.md +1 -1
- package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pt/intlayer_with_tanstack.md +5 -3
- package/docs/pt/lsp.md +113 -174
- package/docs/pt/readme.md +24 -24
- package/docs/ru/configuration.md +10 -10
- package/docs/ru/eslint.md +336 -0
- package/docs/ru/interest_of_intlayer.md +24 -22
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_svelte_kit.md +1 -1
- package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ru/intlayer_with_tanstack.md +5 -3
- package/docs/ru/lsp.md +112 -173
- package/docs/ru/readme.md +24 -24
- package/docs/tr/configuration.md +10 -10
- package/docs/tr/eslint.md +336 -0
- package/docs/tr/interest_of_intlayer.md +24 -22
- package/docs/tr/intlayer_with_svelte_kit.md +1 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/tr/intlayer_with_tanstack.md +5 -3
- package/docs/tr/lsp.md +113 -174
- package/docs/tr/readme.md +24 -24
- package/docs/uk/configuration.md +10 -10
- package/docs/uk/eslint.md +336 -0
- package/docs/uk/interest_of_intlayer.md +4 -2
- package/docs/uk/intlayer_with_svelte_kit.md +1 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
- package/docs/uk/intlayer_with_tanstack.md +5 -3
- package/docs/uk/lsp.md +113 -174
- package/docs/uk/packages/angular-intlayer/exports.md +2 -2
- package/docs/uk/per_locale_file.md +1 -1
- package/docs/uk/readme.md +24 -24
- package/docs/ur/configuration.md +10 -10
- package/docs/ur/eslint.md +336 -0
- package/docs/ur/interest_of_intlayer.md +24 -22
- package/docs/vi/configuration.md +10 -10
- package/docs/vi/eslint.md +336 -0
- package/docs/vi/interest_of_intlayer.md +24 -22
- package/docs/vi/intlayer_with_svelte_kit.md +1 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/vi/intlayer_with_tanstack.md +5 -3
- package/docs/vi/lsp.md +115 -176
- package/docs/vi/readme.md +24 -24
- package/docs/zh/configuration.md +10 -10
- package/docs/zh/eslint.md +336 -0
- package/docs/zh/interest_of_intlayer.md +24 -22
- package/docs/zh/intlayer_with_create_react_app.md +4 -0
- package/docs/zh/intlayer_with_lynx+react.md +4 -0
- package/docs/zh/intlayer_with_nextjs_14.md +0 -2
- package/docs/zh/intlayer_with_nextjs_15.md +0 -2
- package/docs/zh/intlayer_with_nextjs_page_router.md +0 -2
- package/docs/zh/intlayer_with_nuxt.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +4 -0
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -0
- package/docs/zh/intlayer_with_solid_start.md +1 -1
- package/docs/zh/intlayer_with_svelte_kit.md +1 -1
- package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
- package/docs/zh/intlayer_with_tanstack.md +5 -3
- package/docs/zh/intlayer_with_vite+vue.md +0 -2
- package/docs/zh/lsp.md +113 -174
- package/docs/zh/readme.md +21 -21
- package/docs/zh-TW/eslint.md +336 -0
- package/docs/zh-TW/interest_of_intlayer.md +24 -22
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
package/docs/uk/readme.md
CHANGED
|
@@ -46,27 +46,27 @@ Intlayer, це **сучасне рішення для i18n** для веб- та
|
|
|
46
46
|
|
|
47
47
|
## Ключові переваги Intlayer:
|
|
48
48
|
|
|
49
|
-
| Особливість | Опис
|
|
50
|
-
| ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Підтримка" width="700"> | **Підтримка кількох фреймворків**<br><br>Intlayer сумісний з усіма основними фреймворками та бібліотеками, включно з Next.js, React, Vite, Vue.js, Nuxt, Preact, Express та іншими.
|
|
52
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="JavaScript" width="700"> | **Керування контентом за допомогою JavaScript**<br><br>Використовуйте гнучкість JavaScript, щоб ефективно визначати та керувати своїм контентом. <br><br> - [Оголошення контенту](https://intlayer.org/doc/concept/content)
|
|
53
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Файли" width="700"> | **Файл декларації контенту для кожної локалі**<br><br>Прискорте розробку, задекларувавши ваш контент лише один раз перед автоматичною генерацією.<br><br> - [Файл декларації контенту для кожної локалі](https://intlayer.org/doc/concept/per-locale-file)
|
|
54
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Compiler" width="700"> | **Компілятор**<br><br>Компілятор Intlayer автоматично витягує вміст із компонентів і генерує файли словників.<br><br> - [Компілятор](https://intlayer.org/doc/compiler)
|
|
55
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="TypeScript" width="700"> | **Типобезпечне середовище**<br><br>Використовуйте TypeScript, щоб гарантувати, що ваші визначення контенту та код позбавлені помилок, а також отримувати автозаповнення в IDE.<br><br> - [Налаштування TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript)
|
|
56
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Конфігурація" width="700"> | **Спрощене налаштування**<br><br>Швидко запустіть проект з мінімальною конфігурацією. Легко налаштовуйте параметри інтернаціоналізації, маршрутизації, AI, збірки та обробки контенту. <br><br> - [Дізнайтеся про інтеграцію Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
57
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Отримання контенту" width="700"> | **Спрощене отримання контенту**<br><br>Не потрібно викликати вашу функцію `t` для кожного фрагмента контенту. Отримуйте весь контент безпосередньо за допомогою одного hook.<br><br> - [Інтеграція з React](https://intlayer.org/doc/environment/create-react-app)
|
|
58
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Серверні компоненти" width="700"> | **Послідовна реалізація серверних компонентів**<br><br>Ідеально підходить для серверних компонентів Next.js: використовуйте одну й ту саму реалізацію як для клієнтських, так і для серверних компонентів, немає потреби передавати вашу функцію `t` через кожний серверний компонент. <br><br> - [Серверні компоненти](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code)
|
|
59
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Організація" width="700"> | **Організована codebase**<br><br>Тримайте свій codebase більш організованим: 1 компонент = 1 словник у тій самій папці. Переклади поруч із відповідними компонентами підвищують підтримуваність і зрозумілість. <br><br> - [Як працює Intlayer](https://intlayer.org/doc/concept/how-works-intlayer)
|
|
60
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Маршрутизація" width="700"> | **Покращена маршрутизація**<br><br>Повна підтримка маршрутизації застосунків, що безшовно адаптується до складних структур додатків для Next.js, React, Vite, Vue.js тощо.<br><br> - [Дізнатися про інтеграцію з Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
61
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Markdown" width="700"> | **Підтримка Markdown**<br><br>Імпортуйте та інтерпретуйте локалізовані файли і віддалений Markdown для багатомовного контенту, такого як політики конфіденційності, документація тощо. Інтерпретуйте та робіть метадані Markdown доступними у вашому коді.<br><br> - [Файли контенту](https://intlayer.org/doc/concept/content/file)
|
|
62
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Візуальний редактор" width="700"> | **Безкоштовний візуальний редактор та CMS**<br><br>Для авторів контенту доступні безкоштовний візуальний редактор та CMS, що усуває потребу в окремій платформі локалізації. Підтримуйте синхронізацію контенту за допомогою Git або зовнішньо розміщуйте його повністю чи частково через CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms)
|
|
63
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Bundle" width="700"> | **Tree-shakable контент**<br><br>Tree-shakable контент, що зменшує розмір фінального бандла. Завантажує контент на рівні компонента, виключаючи будь-який невикористаний контент із вашого бандла. Підтримує lazy loading для підвищення ефективності завантаження застосунку. <br><br> - [Оптимізація збірки додатка](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization)
|
|
64
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Static Rendering" width="700"> | **Статичний рендеринг**<br><br>Не блокує статичний рендеринг. <br><br> - [Інтеграція з Next.js](https://intlayer.org/doc/environment/nextjs)
|
|
65
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="AI" width="700"> | **Переклад на основі AI**<br><br>Перетворіть свій вебсайт на 231 мову всього за один клік, використовуючи розширені AI-інструменти перекладу Intlayer з вашим власним постачальником AI / ключем API. <br><br> - [Інтеграція CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Автозаповнення](https://intlayer.org/doc/concept/auto-fill)
|
|
66
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="MCP" width="700"> | **Інтеграція сервера MCP**<br><br>Надає сервер MCP (Model Context Protocol) для автоматизації IDE, що дозволяє безперешкодне керування контентом та i18n-робочі процеси безпосередньо у вашому середовищі розробки. <br><br> - [Сервер MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/mcp_server.md)
|
|
67
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Extension" width="700"> | **Розширення для VSCode**<br><br>Intlayer надає розширення для VSCode, яке допомагає керувати вашим контентом та перекладами, створювати словники, перекладати ваш контент та інше. <br><br> - [Розширення для VSCode](https://intlayer.org/doc/vs-code-extension)
|
|
68
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Interoperability" width="700"> | **Сумісність**<br><br>Забезпечує сумісність з react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer і react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer і next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer і next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer і vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) |
|
|
69
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Benchmark" width="700"> | **Продуктивність та бенчмарк**<br><br>Використовує вдосконалене розділення коду (tree-shaking) та динамічне завантаження для підвищення продуктивності та збереження максимальної легкості рішення. <br><br> - [Продуктивність та бенчмарк](https://intlayer.org/doc/benchmark)
|
|
49
|
+
| Особливість | Опис |
|
|
50
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Підтримка" width="700"> | **Підтримка кількох фреймворків**<br><br>Intlayer сумісний з усіма основними фреймворками та бібліотеками, включно з Next.js, React, Vite, Vue.js, Nuxt, Preact, Express та іншими. |
|
|
52
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="JavaScript" width="700"> | **Керування контентом за допомогою JavaScript**<br><br>Використовуйте гнучкість JavaScript, щоб ефективно визначати та керувати своїм контентом. <br><br> - [Оголошення контенту](https://intlayer.org/doc/concept/content) |
|
|
53
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Файли" width="700"> | **Файл декларації контенту для кожної локалі**<br><br>Прискорте розробку, задекларувавши ваш контент лише один раз перед автоматичною генерацією.<br><br> - [Файл декларації контенту для кожної локалі](https://intlayer.org/doc/concept/per-locale-file) |
|
|
54
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Compiler" width="700"> | **Компілятор**<br><br>Компілятор Intlayer автоматично витягує вміст із компонентів і генерує файли словників.<br><br> - [Компілятор](https://intlayer.org/doc/compiler) |
|
|
55
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="TypeScript" width="700"> | **Типобезпечне середовище**<br><br>Використовуйте TypeScript, щоб гарантувати, що ваші визначення контенту та код позбавлені помилок, а також отримувати автозаповнення в IDE.<br><br> - [Налаштування TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
|
|
56
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Конфігурація" width="700"> | **Спрощене налаштування**<br><br>Швидко запустіть проект з мінімальною конфігурацією. Легко налаштовуйте параметри інтернаціоналізації, маршрутизації, AI, збірки та обробки контенту. <br><br> - [Дізнайтеся про інтеграцію Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
57
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Отримання контенту" width="700"> | **Спрощене отримання контенту**<br><br>Не потрібно викликати вашу функцію `t` для кожного фрагмента контенту. Отримуйте весь контент безпосередньо за допомогою одного hook.<br><br> - [Інтеграція з React](https://intlayer.org/doc/environment/create-react-app) |
|
|
58
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Серверні компоненти" width="700"> | **Послідовна реалізація серверних компонентів**<br><br>Ідеально підходить для серверних компонентів Next.js: використовуйте одну й ту саму реалізацію як для клієнтських, так і для серверних компонентів, немає потреби передавати вашу функцію `t` через кожний серверний компонент. <br><br> - [Серверні компоненти](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
59
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Організація" width="700"> | **Організована codebase**<br><br>Тримайте свій codebase більш організованим: 1 компонент = 1 словник у тій самій папці. Переклади поруч із відповідними компонентами підвищують підтримуваність і зрозумілість. <br><br> - [Як працює Intlayer](https://intlayer.org/doc/concept/how-works-intlayer) |
|
|
60
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Маршрутизація" width="700"> | **Покращена маршрутизація**<br><br>Повна підтримка маршрутизації застосунків, що безшовно адаптується до складних структур додатків для Next.js, React, Vite, Vue.js тощо.<br><br> - [Дізнатися про інтеграцію з Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
61
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Markdown" width="700"> | **Підтримка Markdown**<br><br>Імпортуйте та інтерпретуйте локалізовані файли і віддалений Markdown для багатомовного контенту, такого як політики конфіденційності, документація тощо. Інтерпретуйте та робіть метадані Markdown доступними у вашому коді.<br><br> - [Файли контенту](https://intlayer.org/doc/concept/content/file) |
|
|
62
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Візуальний редактор" width="700"> | **Безкоштовний візуальний редактор та CMS**<br><br>Для авторів контенту доступні безкоштовний візуальний редактор та CMS, що усуває потребу в окремій платформі локалізації. Підтримуйте синхронізацію контенту за допомогою Git або зовнішньо розміщуйте його повністю чи частково через CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
|
|
63
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Bundle" width="700"> | **Tree-shakable контент**<br><br>Tree-shakable контент, що зменшує розмір фінального бандла. Завантажує контент на рівні компонента, виключаючи будь-який невикористаний контент із вашого бандла. Підтримує lazy loading для підвищення ефективності завантаження застосунку. <br><br> - [Оптимізація збірки додатка](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
64
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Static Rendering" width="700"> | **Статичний рендеринг**<br><br>Не блокує статичний рендеринг. <br><br> - [Інтеграція з Next.js](https://intlayer.org/doc/environment/nextjs) |
|
|
65
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="AI" width="700"> | **Переклад на основі AI**<br><br>Перетворіть свій вебсайт на 231 мову всього за один клік, використовуючи розширені AI-інструменти перекладу Intlayer з вашим власним постачальником AI / ключем API. <br><br> - [Інтеграція CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Автозаповнення](https://intlayer.org/doc/concept/auto-fill) |
|
|
66
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="MCP" width="700"> | **Інтеграція сервера MCP**<br><br>Надає сервер MCP (Model Context Protocol) для автоматизації IDE, що дозволяє безперешкодне керування контентом та i18n-робочі процеси безпосередньо у вашому середовищі розробки. <br><br> - [Сервер MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/mcp_server.md) |
|
|
67
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Extension" width="700"> | **Розширення для VSCode**<br><br>Intlayer надає розширення для VSCode, яке допомагає керувати вашим контентом та перекладами, створювати словники, перекладати ваш контент та інше. <br><br> - [Розширення для VSCode](https://intlayer.org/doc/vs-code-extension) |
|
|
68
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Interoperability" width="700"> | **Сумісність**<br><br>Забезпечує сумісність з react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer і react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer і next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer і next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer і vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) <br> - [Адаптери сумісності Intlayer](https://intlayer.org/doc/compatibility) |
|
|
69
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Benchmark" width="700"> | **Продуктивність та бенчмарк**<br><br>Використовує вдосконалене розділення коду (tree-shaking) та динамічне завантаження для підвищення продуктивності та збереження максимальної легкості рішення. <br><br> - [Продуктивність та бенчмарк](https://intlayer.org/doc/benchmark) |
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
@@ -173,7 +173,7 @@ const HomePage = () => {
|
|
|
173
173
|
<li><a href="https://intlayer.org/doc/concept/cms" rel=''>Intlayer CMS</a></li>
|
|
174
174
|
<li><a href="https://intlayer.org/doc/concept/content" rel=''>Словник</a>
|
|
175
175
|
<ul>
|
|
176
|
-
<li><a href="https://intlayer.org/doc/concept/
|
|
176
|
+
<li><a href="https://intlayer.org/doc/concept/per-locale-file" rel=''>Файл декларації контенту для кожної локалі</a></li>
|
|
177
177
|
<li><a href="https://intlayer.org/doc/concept/content/translation" rel=''>Переклад</a></li>
|
|
178
178
|
<li><a href="https://intlayer.org/doc/concept/content/enumeration" rel=''>Перелічення</a></li>
|
|
179
179
|
<li><a href="https://intlayer.org/doc/concept/content/condition" rel=''>Умова</a></li>
|
|
@@ -194,7 +194,7 @@ const HomePage = () => {
|
|
|
194
194
|
<ul>
|
|
195
195
|
<li><a href="https://intlayer.org/doc/environment/nextjs/15" rel=''>Next.js 15</a></li>
|
|
196
196
|
<li><a href="https://intlayer.org/doc/environment/nextjs/14" rel=''>Next.js 14 (App Router)</a></li>
|
|
197
|
-
<li><a href="https://intlayer.org/doc/environment/nextjs/next-with-
|
|
197
|
+
<li><a href="https://intlayer.org/doc/environment/nextjs/next-with-page-router" rel=''>Next.js Page Router</a></li>
|
|
198
198
|
<li><a href="https://intlayer.org/doc/environment/nextjs/compiler" rel=''>Next.js за допомогою компілятора</a></li>
|
|
199
199
|
</ul>
|
|
200
200
|
</li>
|
|
@@ -223,7 +223,7 @@ const HomePage = () => {
|
|
|
223
223
|
<li><a href="https://intlayer.org/doc/environment/sveltekit" rel=''>SvelteKit</a></li>
|
|
224
224
|
<li><a href="https://intlayer.org/doc/environment/vite-and-preact" rel=''>Vite + Preact</a></li>
|
|
225
225
|
<li><a href="https://intlayer.org/doc/environment/vite-and-vue" rel=''>Vite + Vue</a></li>
|
|
226
|
-
<li><a href="https://intlayer.org/doc/environment/
|
|
226
|
+
<li><a href="https://intlayer.org/doc/environment/nuxt-and-vue" rel=''>Vite + Nuxt</a></li>
|
|
227
227
|
<li><a href="https://intlayer.org/doc/environment/vite-and-solid" rel=''>Vite + Solid</a></li>
|
|
228
228
|
<li><a href="https://intlayer.org/doc/environment/angular" rel=''>Angular</a></li>
|
|
229
229
|
<li>
|
package/docs/ur/configuration.md
CHANGED
|
@@ -406,7 +406,7 @@ const config: IntlayerConfig = {
|
|
|
406
406
|
ai: {
|
|
407
407
|
/**
|
|
408
408
|
* استعمال کیا جانے والا AI فراہم کنندہ۔
|
|
409
|
-
* اختیارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
409
|
+
* اختیارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
|
|
410
410
|
* ڈیفالٹ: 'openai'
|
|
411
411
|
*/
|
|
412
412
|
provider: "openai",
|
|
@@ -1019,15 +1019,15 @@ Intlayer زیادہ سے زیادہ لچک کو یقینی بنانے کے لی
|
|
|
1019
1019
|
- **Together.ai**
|
|
1020
1020
|
- **LM Studio**
|
|
1021
1021
|
|
|
1022
|
-
| فیلڈ | وضاحت | قسم
|
|
1023
|
-
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
1024
|
-
| `provider` | Intlayer AI خصوصیات کے لیے استعمال کیا جانے والا فراہم کنندہ۔ | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | مختلف فراہم کنندگان کے لیے مختلف API کلیدوں کی ضرورت ہوتی ہے اور ان کی قیمتوں کا ڈھانچہ بھی مختلف ہوتا ہے۔ |
|
|
1025
|
-
| `model` | AI خصوصیات میں استعمال ہونے والا AI ماڈل۔ | `string`
|
|
1026
|
-
| `temperature` | AI کے جوابات میں بے ترتیبی (randomness) کو کنٹرول کرتا ہے۔ | `number`
|
|
1027
|
-
| `apiKey` | منتخب کردہ فراہم کنندہ کے لیے آپ کی API کلید۔ | `string`
|
|
1028
|
-
| `applicationContext` | آپ کی ایپلیکیشن کے بارے میں اضافی تناظر تاکہ AI کو زیادہ درست ترجمے تیار کرنے میں مدد ملے (ڈومین، ٹارگٹ آڈینس، لہجہ، اصطلاحات)۔ | `string`
|
|
1029
|
-
| `baseURL` | AI API کے لیے بنیادی URL۔ | `string`
|
|
1030
|
-
| `dataSerialization` | AI خصوصیات کے لیے ڈیٹا سیریلائزیشن فارمیٹ۔ | `'json'` | <br/> `'toon'`
|
|
1022
|
+
| فیلڈ | وضاحت | قسم | ڈیفالٹ | مثال | نوٹ |
|
|
1023
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1024
|
+
| `provider` | Intlayer AI خصوصیات کے لیے استعمال کیا جانے والا فراہم کنندہ۔ | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | <br/> `'moonshotai'` | `undefined` | `'anthropic'` | مختلف فراہم کنندگان کے لیے مختلف API کلیدوں کی ضرورت ہوتی ہے اور ان کی قیمتوں کا ڈھانچہ بھی مختلف ہوتا ہے۔ |
|
|
1025
|
+
| `model` | AI خصوصیات میں استعمال ہونے والا AI ماڈل۔ | `string` | کوئی نہیں | `'gpt-4o-2024-11-20'` | مخصوص ماڈلز فراہم کنندہ پر منحصر ہیں۔ |
|
|
1026
|
+
| `temperature` | AI کے جوابات میں بے ترتیبی (randomness) کو کنٹرول کرتا ہے۔ | `number` | کوئی نہیں | `0.1` | زیادہ ٹمپریچر = زیادہ تخلیقی لیکن کم قابل اعتماد جوابات۔ |
|
|
1027
|
+
| `apiKey` | منتخب کردہ فراہم کنندہ کے لیے آپ کی API کلید۔ | `string` | کوئی نہیں | `process.env.OPENAI_API_KEY` | خفیہ رکھیں؛ انوائرمنٹ ویری ایبلز میں محفوظ کریں۔ |
|
|
1028
|
+
| `applicationContext` | آپ کی ایپلیکیشن کے بارے میں اضافی تناظر تاکہ AI کو زیادہ درست ترجمے تیار کرنے میں مدد ملے (ڈومین، ٹارگٹ آڈینس، لہجہ، اصطلاحات)۔ | `string` | کوئی نہیں | `'میرا اپنا ایپلیکیشن تناظر'` | قواعد شامل کرنے کے لیے استعمال کیا جا سکتا ہے (مثلاً: `"آپ کو اپنے URLs کا ترجمہ نہیں کرنا چاہیے"`)۔ |
|
|
1029
|
+
| `baseURL` | AI API کے لیے بنیادی URL۔ | `string` | کوئی نہیں | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | کسی مقامی یا کسٹم AI API اینڈ پوائنٹ سے رجوع کر سکتا ہے۔ |
|
|
1030
|
+
| `dataSerialization` | AI خصوصیات کے لیے ڈیٹا سیریلائزیشن فارمیٹ۔ | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: ڈیفالٹ، قابل اعتماد؛ زیادہ ٹوکن لیتا ہے۔<br/>• `'toon'`: کم ٹوکن، کم مستحکم۔<br/>• ماڈل کو اضافی پیرامیٹرز بھیجتا ہے (استدلال کی کوششیں وغیرہ)۔ |
|
|
1031
1031
|
|
|
1032
1032
|
---
|
|
1033
1033
|
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-08-12
|
|
3
|
+
updatedAt: 2026-08-12
|
|
4
|
+
title: ESLint پلگ ان | Intlayer کے لیے لنٹ قواعد
|
|
5
|
+
description: eslint-plugin-intlayer کے ذریعے ہارڈ کوڈ شدہ سٹرنگز، ایسی ڈائنامک کالز جنہیں Intlayer کمپائلر بہتر نہیں بنا سکتا، اور غیر استعمال شدہ ڈکشنری مواد کو پکڑیں۔ React، Vue، Svelte، Angular اور Astro میں ESLint اور oxlint کے ساتھ کام کرتا ہے۔
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- ESLint
|
|
9
|
+
- oxlint
|
|
10
|
+
- لنٹنگ
|
|
11
|
+
- i18n
|
|
12
|
+
- بین الاقوامیت
|
|
13
|
+
- no-raw-text
|
|
14
|
+
- ہارڈ کوڈ شدہ سٹرنگز
|
|
15
|
+
- غیر استعمال شدہ ترجمے
|
|
16
|
+
- غیر فعال مواد
|
|
17
|
+
- React
|
|
18
|
+
- Vue
|
|
19
|
+
- Svelte
|
|
20
|
+
- Angular
|
|
21
|
+
slugs:
|
|
22
|
+
- doc
|
|
23
|
+
- eslint
|
|
24
|
+
history:
|
|
25
|
+
- version: 9.3.1
|
|
26
|
+
date: 2026-08-12
|
|
27
|
+
changes: "ابتدائی تاریخ"
|
|
28
|
+
author: aymericzip
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# ESLint x OXLint پلگ ان
|
|
32
|
+
|
|
33
|
+
`eslint-plugin-intlayer` ان i18n غلطیوں کو پکڑتا ہے جنہیں TypeScript نہیں پکڑ سکتا:
|
|
34
|
+
|
|
35
|
+
1. **ہارڈ کوڈ شدہ متن (Hardcoded text)** جو کبھی ڈکشنری میں شامل نہیں ہوا۔
|
|
36
|
+
2. **ڈائنامک کالز (Dynamic calls)** جو ٹائپ چیک پاس کرتی ہیں اور چلتی ہیں، لیکن Intlayer کمپائلر انہیں آپٹمائز نہیں کر سکتا۔
|
|
37
|
+
3. **غیر فعال مواد (Dead content)** — ڈکشنریز اور فیلڈز جنہیں پروجیکٹ میں کہیں بھی نہیں پڑھا جاتا (آپٹ ان)۔
|
|
38
|
+
|
|
39
|
+
نامعلوم ڈکشنری کیز، نامعلوم فیلڈ پاتھز اور غائب لوکیلز پہلے ہی کمپائل نقائص ہیں، اس لیے پلگ ان ان کو دوبارہ رپورٹ نہیں کرتا۔
|
|
40
|
+
|
|
41
|
+
## انسٹالیشن
|
|
42
|
+
|
|
43
|
+
```bash packageManager="npm"
|
|
44
|
+
npm install --save-dev eslint-plugin-intlayer
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```bash packageManager="pnpm"
|
|
48
|
+
pnpm add --save-dev eslint-plugin-intlayer
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```bash packageManager="yarn"
|
|
52
|
+
yarn add --dev eslint-plugin-intlayer
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
ESLint 9 یا اس سے نیا ورژن (flat config) درکار ہے۔
|
|
56
|
+
|
|
57
|
+
## استعمال
|
|
58
|
+
|
|
59
|
+
یہ پلگ ان ESLint اور [oxlint](https://oxc.rs) دونوں میں یکساں قواعد اور اختیارات کے ساتھ کام کرتا ہے۔
|
|
60
|
+
|
|
61
|
+
<Tabs defaultTab="eslint">
|
|
62
|
+
<Tab label="ESLint" value="eslint">
|
|
63
|
+
|
|
64
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
65
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
66
|
+
|
|
67
|
+
export default [...intlayer.configs.recommended];
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
یا قواعد کو ایک ایک کر کے فعال کریں:
|
|
71
|
+
|
|
72
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
73
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
74
|
+
|
|
75
|
+
export default [
|
|
76
|
+
{
|
|
77
|
+
plugins: { intlayer },
|
|
78
|
+
rules: {
|
|
79
|
+
"intlayer/no-raw-text": "warn",
|
|
80
|
+
"intlayer/static-dictionary-key": "error",
|
|
81
|
+
"intlayer/no-dynamic-field-access": "error",
|
|
82
|
+
"intlayer/enforce-adapter-import": "warn",
|
|
83
|
+
"intlayer/no-unused-content": "warn",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
</Tab>
|
|
90
|
+
<Tab label="oxlint" value="oxlint">
|
|
91
|
+
|
|
92
|
+
```json fileName=".oxlintrc.json"
|
|
93
|
+
{
|
|
94
|
+
"jsPlugins": ["eslint-plugin-intlayer"],
|
|
95
|
+
"rules": {
|
|
96
|
+
"intlayer/no-raw-text": "warn",
|
|
97
|
+
"intlayer/static-dictionary-key": "error",
|
|
98
|
+
"intlayer/no-dynamic-field-access": "error",
|
|
99
|
+
"intlayer/enforce-adapter-import": "warn"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
دو اہم باتیں: oxlint کی JS پلگ ان سپورٹ ابھی الفا مرحلے میں ہے، اور oxlint کسٹم پارسرز کو سپورٹ نہیں کرتا — لہذا `.vue`، `.svelte`، `.astro` اور Angular ٹیمپلیٹس وہاں لنٹ نہیں ہوتے۔ اپنی JS/TS/JSX فائلوں پر oxlint چلائیں اور باقی کے لیے ESLint برقرار رکھیں۔
|
|
105
|
+
|
|
106
|
+
`no-unused-content` کو اوپر جان بوجھ کر چھوڑ دیا گیا ہے: اسے رول سیاق و سباق سے ورکنگ ڈائرکٹری اور لنٹ شدہ فائل پاتھ کی ضرورت ہوتی ہے، جس کی الفا JS پلگ ان برج ضمانت نہیں دیتا۔ اسے ESLint کے تحت چلائیں۔
|
|
107
|
+
|
|
108
|
+
</Tab>
|
|
109
|
+
</Tabs>
|
|
110
|
+
|
|
111
|
+
### کنفیگریشنز (Configs)
|
|
112
|
+
|
|
113
|
+
| کنفیگ | `no-raw-text` | `static-dictionary-key` | `no-dynamic-field-access` | `enforce-adapter-import` | `no-unused-content` |
|
|
114
|
+
| --------------- | ----------------------- | ----------------------- | ------------------------- | ------------------------ | ------------------- |
|
|
115
|
+
| `recommended` | warn | error | error | off | off |
|
|
116
|
+
| `strict` | error (+ نان JSX لٹرلز) | error | error | error | off |
|
|
117
|
+
| `contract-only` | off | error | error | off | off |
|
|
118
|
+
|
|
119
|
+
`recommended` جان بوجھ کر `no-raw-text` کو `warn` پر رکھتا ہے: اسے کسی موجودہ کوڈ بیس پر لاگو کرنے سے تمام غیر ترجمہ شدہ سٹرنگز ایک ساتھ سامنے آ جاتی ہیں، جس سے پہلے ہی دن آپ کا بلڈ فیل نہیں ہونا چاہیے۔
|
|
120
|
+
|
|
121
|
+
`enforce-adapter-import` پہلے سے غیر فعال ہے — اگر آپ چاہیں تو اسے واضح طور پر فعال کریں۔
|
|
122
|
+
|
|
123
|
+
`no-unused-content` ہر کنفیگ میں بند ہے، بشمول `strict`۔ یہ واحد قاعدہ ہے جو آپ کی Intlayer کنفیگریشن کو پڑھتا ہے اور ڈسک سے آپ کی سورس فائلوں کو اسکین کرتا ہے، اس لیے اسے آن کرنا ایک دانستہ انتخاب ہونا چاہیے۔
|
|
124
|
+
|
|
125
|
+
## قواعد
|
|
126
|
+
|
|
127
|
+
### `no-raw-text`
|
|
128
|
+
|
|
129
|
+
صارف کے سامنے آنے والے ایسے متن کی رپورٹ کرتا ہے جو ڈکشنری میں ڈکلیئر نہیں ہے۔ یہ `intlayer extract` جیسی شناخت استعمال کرتا ہے، اس لیے برانڈ نام، CSS کلاسز اور تکنیکی شناخت کنندگان کو نظر انداز کر دیا جاتا ہے۔
|
|
130
|
+
|
|
131
|
+
```jsx
|
|
132
|
+
// ✗ رپورٹ کیا گیا
|
|
133
|
+
<h1>Welcome to our documentation</h1>
|
|
134
|
+
<input placeholder="Enter your email address" />
|
|
135
|
+
|
|
136
|
+
// ✓ درست
|
|
137
|
+
const { title } = useIntlayer("home");
|
|
138
|
+
<h1>{title}</h1>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
مواد کے اعلامیہ کی فائلیں (`*.content.ts`, …) چھوڑ دی جاتی ہیں۔
|
|
142
|
+
|
|
143
|
+
ایک ساتھ پوری فائل کو ٹھیک کرنے کے لیے، `npx intlayer extract` چلائیں اور کمپائلر کو سٹرنگز کو ڈکشنری میں منتقل کرنے دیں۔
|
|
144
|
+
|
|
145
|
+
**اختیارات**
|
|
146
|
+
|
|
147
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
148
|
+
{
|
|
149
|
+
"intlayer/no-raw-text": [
|
|
150
|
+
"warn",
|
|
151
|
+
{
|
|
152
|
+
// وہ اوصاف جن کی قدر صارف کے سامنے آنے والا متن ہے۔
|
|
153
|
+
// ڈیفالٹ: title, placeholder, alt, aria-label, label
|
|
154
|
+
attributes: ["title", "placeholder", "alt", "aria-label", "label"],
|
|
155
|
+
|
|
156
|
+
// وہ عناصر جن کا مواد کبھی بھی صارف کے سامنے آنے والا متن نہیں ہوتا۔
|
|
157
|
+
// ڈیفالٹ: code, pre, script, style
|
|
158
|
+
ignoreElements: ["code", "pre", "script", "style"],
|
|
159
|
+
|
|
160
|
+
// کبھی رپورٹ نہ کیے جانے والے متن کے ریگولر ایکسپریشنز۔
|
|
161
|
+
ignorePatterns: ["^Powered by"],
|
|
162
|
+
|
|
163
|
+
// مارک اپ سے باہر سٹرنگ لٹرلز کی بھی رپورٹ کریں۔ ڈیفالٹ: false
|
|
164
|
+
includeStringLiterals: false,
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### `static-dictionary-key`
|
|
171
|
+
|
|
172
|
+
ڈکشنری کی کے سٹرنگ لٹرل ہونے کا تقاضا کرتا ہے۔
|
|
173
|
+
|
|
174
|
+
کمپائلر صرف اسی صورت میں ڈکشنری کو پری لوڈ کر سکتا ہے جب وہ کال سائٹ پر براہ راست کی کو پڑھ سکے۔ حسابی کی کے ساتھ یہ خاموشی سے اصلاح کو چھوڑ دیتا ہے اور اس کے بجائے ہر ڈکشنری کو بنڈل کر دیتا ہے۔
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
// ✗ رپورٹ کیا گیا
|
|
178
|
+
useIntlayer(dictionaryKey);
|
|
179
|
+
useIntlayer(`home-${suffix}`);
|
|
180
|
+
getTranslations({ namespace: page });
|
|
181
|
+
|
|
182
|
+
// ✗ متغیر اب بھی لٹرل نہیں ہے
|
|
183
|
+
const key = "home";
|
|
184
|
+
useIntlayer(key);
|
|
185
|
+
|
|
186
|
+
// ✓ درست
|
|
187
|
+
useIntlayer("home");
|
|
188
|
+
getTranslations({ namespace: "home" });
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
یہ `useIntlayer`، `getIntlayer` اور ہر مطابقت پذیر اڈاپٹر (`useTranslation`، `useTranslations`، `formatMessage`، `<FormattedMessage id>`، `<Trans i18nKey>`، …) پر لاگو ہوتا ہے۔
|
|
192
|
+
|
|
193
|
+
### `no-dynamic-field-access`
|
|
194
|
+
|
|
195
|
+
ڈکشنری سے پڑھی جانے والی فیلڈ کے جامد طور پر معلوم ہونے کا تقاضا کرتا ہے۔
|
|
196
|
+
|
|
197
|
+
کمپائلر ان فیلڈز کو ہٹا دیتا ہے جنہیں وہ استعمال ہوتے ہوئے نہیں دیکھتا۔ ایک حسابی رسائی اس کے لیے غیر مرئی ہوتی ہے، اس لیے رن ٹائم پر پڑھنا `undefined` واپس کر سکتا ہے۔
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// ✗ رپورٹ کیا گیا
|
|
201
|
+
const content = useIntlayer("home");
|
|
202
|
+
content[fieldName];
|
|
203
|
+
|
|
204
|
+
const t = useTranslations("home");
|
|
205
|
+
t(messageKey);
|
|
206
|
+
|
|
207
|
+
// ✓ درست
|
|
208
|
+
content.title;
|
|
209
|
+
content["title"];
|
|
210
|
+
content.items[0];
|
|
211
|
+
t("hero.title");
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### `enforce-adapter-import`
|
|
215
|
+
|
|
216
|
+
اصل پیکیج کے مقابلے `@intlayer/*` مطابقت پذیر اڈاپٹر کو ترجیح دیتا ہے۔ اصل پیکیج صرف اس وقت Intlayer پر حل ہوتا ہے جب بنڈلر عرف تشکیل دیا گیا ہو؛ اڈاپٹر ہمیشہ حل ہوتا ہے۔ `--fix` کے ساتھ خودکار طور پر درست کیا جا سکتا ہے۔
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
// ✗ رپورٹ کیا گیا
|
|
220
|
+
import { useTranslation } from "react-i18next";
|
|
221
|
+
import { getTranslations } from "next-intl/server";
|
|
222
|
+
|
|
223
|
+
// ✓ درست
|
|
224
|
+
import { useTranslation } from "@intlayer/react-i18next";
|
|
225
|
+
import { getTranslations } from "@intlayer/next-intl/server";
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### `no-unused-content`
|
|
229
|
+
|
|
230
|
+
**پہلے سے غیر فعال ہے۔** ایسے مواد کی رپورٹ کرتا ہے جسے پروجیکٹ میں کوئی نہیں پڑھتا، نیز ایک سے زیادہ جگہوں پر ڈکلیئر کی گئی ڈکشنری کیز۔
|
|
231
|
+
|
|
232
|
+
```typescript fileName="src/home.content.ts"
|
|
233
|
+
export default {
|
|
234
|
+
key: "home", // ✗ تب رپورٹ ہوتا ہے جب پروجیکٹ میں کوئی "home" کی درخواست نہیں کرتا
|
|
235
|
+
content: {
|
|
236
|
+
title: t({ ur: "عنوان", en: "Title" }),
|
|
237
|
+
|
|
238
|
+
// ✗ جب کوئی چیز `hero` نہیں پڑھتی تو رپورٹ ہوتا ہے
|
|
239
|
+
hero: {
|
|
240
|
+
subtitle: t({ ur: "ذیلی عنوان", en: "Subtitle" }),
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
دوسرے قواعد کے برعکس، یہ قاعدہ صرف سامنے موجود فائل سے فیصلہ نہیں کر سکتا — ایک فیلڈ صرف پورے پروجیکٹ کے تناظر میں غیر استعمال شدہ ہوتی ہے۔ لنٹ رن کے پہلے مواد کے اعلان پر یہ آپ کی Intlayer کنفیگریشن لوڈ کرتا ہے، ان سورس فائلوں کو اسکین کرتا ہے جن کا وہ کنفیگریشن اعلان کرتی ہے (`build.traversePattern`, `compiler.transformPattern`) اور وہی تجزیہ کار چلاتا ہے جو `@intlayer/lsp` اور VS Code ایکسٹینشن میں "غیر استعمال شدہ" کو سپورٹ کرتا ہے۔ نتیجہ `cacheTtl` ملی سیکنڈ کے لیے محفوظ ہوتا ہے، اس لیے اسکین ہر فائل کے بجائے فی رن ایک بار ہوتا ہے۔
|
|
247
|
+
|
|
248
|
+
**اختیارات**
|
|
249
|
+
|
|
250
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
251
|
+
{
|
|
252
|
+
"intlayer/no-unused-content": [
|
|
253
|
+
"warn",
|
|
254
|
+
{
|
|
255
|
+
// ان ڈکشنری کیز کی رپورٹ کریں جن کا کوئی حوالہ نہیں ہے۔ ڈیفالٹ: true
|
|
256
|
+
reportUnusedDictionaries: true,
|
|
257
|
+
|
|
258
|
+
// ان فیلڈز کی رپورٹ کریں جنہیں کچھ نہیں پڑھتا۔ ڈیفالٹ: true
|
|
259
|
+
reportUnusedFields: true,
|
|
260
|
+
|
|
261
|
+
// ایک سے زیادہ جگہوں پر ڈکلیئر کیز کی رپورٹ کریں۔ ڈیفالٹ: true
|
|
262
|
+
reportDuplicateKeys: true,
|
|
263
|
+
|
|
264
|
+
// فیلڈ پاتھز کے ریگولر ایکسپریشنز جنہیں کبھی رپورٹ نہیں کیا جائے گا۔
|
|
265
|
+
ignoreFields: ["^meta"],
|
|
266
|
+
|
|
267
|
+
// پروجیکٹ روٹ جہاں سے اسکین شروع ہوتا ہے۔ ڈیفالٹ: ESLint کی ورکنگ ڈائرکٹری
|
|
268
|
+
baseDir: process.cwd(),
|
|
269
|
+
|
|
270
|
+
// ایک پروجیکٹ اسکین کو کتنی دیر تک دوبارہ استعمال کیا جائے گا (ms میں)۔ ڈیفالٹ: 30000
|
|
271
|
+
cacheTtl: 30000,
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
جب آپ طویل مدتی ایڈیٹر سرور سے لنٹ کر رہے ہوں اور چاہتے ہیں کہ ترامیم جلد نظر آئیں تو `cacheTtl` کو کم کریں؛ جب ایک ہی لنٹ رن ایک مونوریپو میں متعدد Intlayer پروجیکٹس پر محیط ہو تو `baseDir` سیٹ کریں۔
|
|
278
|
+
|
|
279
|
+
> **یہ خاموش رہنے کو ترجیح دیتا ہے۔** یہاں غلط مثبت رپورٹ ایک ترجمہ کو حذف کر سکتی ہے، اس لیے جب ڈکشنری کو ایسے طریقے سے استعمال کیا جاتا ہے جسے تجزیہ ٹریک نہیں کر سکتا تو کچھ بھی رپورٹ نہیں کیا جاتا: پورا مواد کا آبجیکٹ پاس کرنا، اس سے منسلک ٹرانسلیٹر فنکشن (`const t = useTranslations("home")`)، براہ راست درآمد کے ذریعے رسائی حاصل کردہ اعلان (`useDictionary(myDictionary)`)، کسی دوسری ڈکشنری سے `nest()`، یا اسپرڈ آپریٹر کی وجہ سے غیر جامع بنائی گئی فیلڈ لسٹ۔ سنگل فائل اجزاء (`.vue`, `.svelte`, `.astro`) کو ان تمام فیلڈز کا استعمال کرتے ہوئے شمار کیا جاتا ہے جن کا وہ ذکر کرتے ہیں، کیونکہ ان کے اسکرپٹ بلاکس یہاں پارس نہیں ہوتے۔
|
|
280
|
+
|
|
281
|
+
`reportDuplicateKeys` ان ان مرجڈ ڈکشنریز کو پڑھتا ہے جنہیں بلڈ `.intlayer/` کے تحت لکھتا ہے، اس لیے یہ تب تک خاموش رہتا ہے جب تک کہ پروجیکٹ کو کم از کم ایک بار بلڈ نہ کیا جائے۔ دو اعلانات جو ایک کی کا اشتراک کرتے ہیں وہ ضم ہو جاتے ہیں، جو کہ ایک درست پیٹرن ہے — رپورٹ اس لیے موجود ہے کیونکہ دونوں طرف بیان کردہ فیلڈ خاموشی سے صرف ایک قدر رکھتی ہے۔
|
|
282
|
+
|
|
283
|
+
تجزیہ کار `@intlayer/lsp` سے لوڈ ہوتا ہے، جو ESM کے طور پر فراہم کیا جاتا ہے۔ اس لیے قاعدے کے لیے ایسے Node ورژن کی ضرورت ہوتی ہے جو ES ماڈیول کو `require()` کر سکے — Node 20.19+ یا 22.12+۔ پرانے ورژنز پر یہ لنٹ رن کو فیل کرنے کے بجائے کچھ بھی رپورٹ نہیں کرتا۔
|
|
284
|
+
|
|
285
|
+
## فریم ورکس
|
|
286
|
+
|
|
287
|
+
ہر قاعدہ تمام Intlayer انٹیگریشنز میں کام کرتا ہے، بشمول Vue، Svelte اور Angular ٹیمپلیٹس۔ آپ کو صرف ESLint کو بتانے کی ضرورت ہے کہ کون سا پارسر ہر فائل کی قسم کو پڑھتا ہے۔
|
|
288
|
+
|
|
289
|
+
| فریم ورک | فائلیں | پارسر (Parser) |
|
|
290
|
+
| ------------------------- | ----------------- | --------------------------------- |
|
|
291
|
+
| React, Preact, Solid, Lit | `.jsx` `.tsx` | `typescript-eslint` |
|
|
292
|
+
| Next.js | `.jsx` `.tsx` | `typescript-eslint` |
|
|
293
|
+
| Vue, Nuxt | `.vue` | `vue-eslint-parser` |
|
|
294
|
+
| Svelte, SvelteKit | `.svelte` | `svelte-eslint-parser` |
|
|
295
|
+
| Angular | `.ts` | `typescript-eslint` |
|
|
296
|
+
| Angular ٹیمپلیٹس | `.component.html` | `@angular-eslint/template-parser` |
|
|
297
|
+
| Astro | `.astro` | `astro-eslint-parser` |
|
|
298
|
+
|
|
299
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
300
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
301
|
+
import tseslint from "typescript-eslint";
|
|
302
|
+
import vueParser from "vue-eslint-parser";
|
|
303
|
+
import svelteParser from "svelte-eslint-parser";
|
|
304
|
+
import angularTemplateParser from "@angular-eslint/template-parser";
|
|
305
|
+
|
|
306
|
+
export default [
|
|
307
|
+
...intlayer.configs.recommended,
|
|
308
|
+
|
|
309
|
+
{
|
|
310
|
+
files: ["**/*.{ts,tsx,jsx}"],
|
|
311
|
+
languageOptions: { parser: tseslint.parser },
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
files: ["**/*.vue"],
|
|
315
|
+
languageOptions: {
|
|
316
|
+
parser: vueParser,
|
|
317
|
+
parserOptions: { parser: tseslint.parser },
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
files: ["**/*.svelte"],
|
|
322
|
+
languageOptions: {
|
|
323
|
+
parser: svelteParser,
|
|
324
|
+
parserOptions: { parser: tseslint.parser },
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
files: ["**/*.component.html"],
|
|
329
|
+
languageOptions: { parser: angularTemplateParser },
|
|
330
|
+
},
|
|
331
|
+
];
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
صرف وہی پارسر انسٹال کریں جن کی آپ کے پروجیکٹ کو ضرورت ہے۔
|
|
335
|
+
|
|
336
|
+
> **معلوم حد بندی۔** Vue اور Angular ٹیمپلیٹس میں `{{ content[key] }}` جیسے ایکسپریشن کو `no-dynamic-field-access` کے ذریعے چیک نہیں کیا جاتا۔ اسکرپٹ بلاک کے اندر لکھی گئی ڈائنامک ریڈنگز معمول کے مطابق پکڑی جاتی ہیں۔
|