@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.
Files changed (217) hide show
  1. package/README.md +24 -24
  2. package/blog/ar/rag_powered_documentation_assistant.md +1 -1
  3. package/blog/pl/rag_powered_documentation_assistant.md +1 -1
  4. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
  5. package/dist/cjs/authors2.cjs +0 -1
  6. package/dist/cjs/common.cjs.map +1 -1
  7. package/dist/cjs/generated/blog.entry.cjs +4 -2
  8. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  9. package/dist/cjs/generated/docs.entry.cjs +24 -2
  10. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  11. package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
  12. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  13. package/dist/cjs/generated/legal.entry.cjs +4 -2
  14. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  15. package/dist/esm/generated/blog.entry.mjs +4 -2
  16. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  17. package/dist/esm/generated/docs.entry.mjs +24 -2
  18. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  19. package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
  20. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  21. package/dist/esm/generated/legal.entry.mjs +4 -2
  22. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  23. package/dist/types/generated/docs.entry.d.ts +1 -0
  24. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  25. package/docs/ar/configuration.md +10 -10
  26. package/docs/ar/eslint.md +336 -0
  27. package/docs/ar/interest_of_intlayer.md +24 -22
  28. package/docs/ar/intlayer_with_express.md +1 -1
  29. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
  30. package/docs/ar/intlayer_with_svelte_kit.md +1 -1
  31. package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
  32. package/docs/ar/intlayer_with_tanstack.md +5 -3
  33. package/docs/ar/lsp.md +114 -175
  34. package/docs/ar/readme.md +25 -25
  35. package/docs/bn/configuration.md +10 -10
  36. package/docs/bn/eslint.md +336 -0
  37. package/docs/bn/interest_of_intlayer.md +24 -22
  38. package/docs/cs/configuration.md +10 -10
  39. package/docs/cs/eslint.md +336 -0
  40. package/docs/cs/interest_of_intlayer.md +24 -22
  41. package/docs/de/configuration.md +10 -10
  42. package/docs/de/eslint.md +336 -0
  43. package/docs/de/interest_of_intlayer.md +24 -22
  44. package/docs/de/intlayer_with_svelte_kit.md +1 -1
  45. package/docs/de/intlayer_with_tanstack+solid.md +5 -3
  46. package/docs/de/intlayer_with_tanstack.md +5 -3
  47. package/docs/de/lsp.md +111 -172
  48. package/docs/de/readme.md +24 -24
  49. package/docs/en/configuration.md +10 -10
  50. package/docs/en/eslint.md +336 -0
  51. package/docs/en/interest_of_intlayer.md +24 -22
  52. package/docs/en/intlayer_with_svelte_kit.md +1 -1
  53. package/docs/en/intlayer_with_tanstack+solid.md +5 -3
  54. package/docs/en/intlayer_with_tanstack.md +5 -3
  55. package/docs/en/lsp.md +109 -170
  56. package/docs/en/readme.md +24 -24
  57. package/docs/en-GB/configuration.md +10 -10
  58. package/docs/en-GB/eslint.md +336 -0
  59. package/docs/en-GB/interest_of_intlayer.md +24 -22
  60. package/docs/en-GB/intlayer_with_create_react_app.md +32 -35
  61. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
  62. package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
  63. package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
  64. package/docs/en-GB/intlayer_with_tanstack.md +5 -3
  65. package/docs/en-GB/lsp.md +109 -170
  66. package/docs/en-GB/readme.md +24 -24
  67. package/docs/es/configuration.md +10 -10
  68. package/docs/es/eslint.md +336 -0
  69. package/docs/es/interest_of_intlayer.md +24 -22
  70. package/docs/es/intlayer_with_svelte_kit.md +1 -1
  71. package/docs/es/intlayer_with_tanstack+solid.md +5 -3
  72. package/docs/es/intlayer_with_tanstack.md +5 -3
  73. package/docs/es/lsp.md +114 -175
  74. package/docs/es/readme.md +24 -24
  75. package/docs/fr/configuration.md +10 -10
  76. package/docs/fr/eslint.md +336 -0
  77. package/docs/fr/interest_of_intlayer.md +24 -22
  78. package/docs/fr/intlayer_with_svelte_kit.md +1 -1
  79. package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
  80. package/docs/fr/intlayer_with_tanstack.md +5 -3
  81. package/docs/fr/lsp.md +110 -171
  82. package/docs/fr/readme.md +24 -24
  83. package/docs/hi/configuration.md +10 -10
  84. package/docs/hi/eslint.md +336 -0
  85. package/docs/hi/interest_of_intlayer.md +24 -22
  86. package/docs/hi/intlayer_with_express.md +1 -1
  87. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  88. package/docs/hi/intlayer_with_svelte_kit.md +1 -1
  89. package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
  90. package/docs/hi/intlayer_with_tanstack.md +5 -3
  91. package/docs/hi/intlayer_with_vite+svelte.md +2 -2
  92. package/docs/hi/lsp.md +113 -174
  93. package/docs/hi/readme.md +24 -24
  94. package/docs/id/configuration.md +10 -10
  95. package/docs/id/eslint.md +336 -0
  96. package/docs/id/interest_of_intlayer.md +24 -22
  97. package/docs/id/intlayer_with_svelte_kit.md +1 -1
  98. package/docs/id/intlayer_with_tanstack+solid.md +5 -3
  99. package/docs/id/intlayer_with_tanstack.md +5 -3
  100. package/docs/id/lsp.md +113 -174
  101. package/docs/id/readme.md +24 -24
  102. package/docs/it/configuration.md +10 -10
  103. package/docs/it/eslint.md +336 -0
  104. package/docs/it/interest_of_intlayer.md +24 -22
  105. package/docs/it/intlayer_with_svelte_kit.md +1 -1
  106. package/docs/it/intlayer_with_tanstack+solid.md +5 -3
  107. package/docs/it/intlayer_with_tanstack.md +5 -3
  108. package/docs/it/lsp.md +115 -176
  109. package/docs/it/readme.md +24 -24
  110. package/docs/ja/configuration.md +10 -10
  111. package/docs/ja/eslint.md +336 -0
  112. package/docs/ja/interest_of_intlayer.md +24 -22
  113. package/docs/ja/intlayer_with_react_router_v7.md +1 -146
  114. package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
  115. package/docs/ja/intlayer_with_tanstack.md +5 -3
  116. package/docs/ja/intlayer_with_vite+react.md +5 -1
  117. package/docs/ja/lsp.md +113 -174
  118. package/docs/ja/readme.md +24 -24
  119. package/docs/ko/configuration.md +10 -10
  120. package/docs/ko/eslint.md +336 -0
  121. package/docs/ko/interest_of_intlayer.md +24 -22
  122. package/docs/ko/intlayer_with_lynx+react.md +4 -0
  123. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
  124. package/docs/ko/intlayer_with_storybook.md +5 -5
  125. package/docs/ko/intlayer_with_svelte_kit.md +1 -1
  126. package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
  127. package/docs/ko/intlayer_with_tanstack.md +5 -3
  128. package/docs/ko/lsp.md +112 -173
  129. package/docs/ko/readme.md +24 -24
  130. package/docs/nl/configuration.md +10 -10
  131. package/docs/nl/eslint.md +336 -0
  132. package/docs/nl/interest_of_intlayer.md +24 -22
  133. package/docs/pl/configuration.md +10 -10
  134. package/docs/pl/eslint.md +336 -0
  135. package/docs/pl/interest_of_intlayer.md +4 -2
  136. package/docs/pl/intlayer_with_astro.md +1 -114
  137. package/docs/pl/intlayer_with_svelte_kit.md +1 -1
  138. package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
  139. package/docs/pl/intlayer_with_tanstack.md +5 -3
  140. package/docs/pl/lsp.md +115 -176
  141. package/docs/pl/migration_from_i18next_to_intlayer.md +4 -0
  142. package/docs/pl/migration_from_next-i18next_to_intlayer.md +8 -4
  143. package/docs/pl/migration_from_next-intl_to_intlayer.md +11 -5
  144. package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
  145. package/docs/pl/migration_from_react-i18next_to_intlayer.md +8 -4
  146. package/docs/pl/migration_from_vue-i18n_to_intlayer.md +4 -0
  147. package/docs/pl/readme.md +24 -24
  148. package/docs/pt/configuration.md +10 -10
  149. package/docs/pt/eslint.md +336 -0
  150. package/docs/pt/interest_of_intlayer.md +24 -22
  151. package/docs/pt/intlayer_with_astro.md +1 -114
  152. package/docs/pt/intlayer_with_svelte_kit.md +1 -1
  153. package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
  154. package/docs/pt/intlayer_with_tanstack.md +5 -3
  155. package/docs/pt/lsp.md +113 -174
  156. package/docs/pt/readme.md +24 -24
  157. package/docs/ru/configuration.md +10 -10
  158. package/docs/ru/eslint.md +336 -0
  159. package/docs/ru/interest_of_intlayer.md +24 -22
  160. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  161. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  162. package/docs/ru/intlayer_with_svelte_kit.md +1 -1
  163. package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
  164. package/docs/ru/intlayer_with_tanstack.md +5 -3
  165. package/docs/ru/lsp.md +112 -173
  166. package/docs/ru/readme.md +24 -24
  167. package/docs/tr/configuration.md +10 -10
  168. package/docs/tr/eslint.md +336 -0
  169. package/docs/tr/interest_of_intlayer.md +24 -22
  170. package/docs/tr/intlayer_with_svelte_kit.md +1 -1
  171. package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
  172. package/docs/tr/intlayer_with_tanstack.md +5 -3
  173. package/docs/tr/lsp.md +113 -174
  174. package/docs/tr/readme.md +24 -24
  175. package/docs/uk/configuration.md +10 -10
  176. package/docs/uk/eslint.md +336 -0
  177. package/docs/uk/interest_of_intlayer.md +4 -2
  178. package/docs/uk/intlayer_with_svelte_kit.md +1 -1
  179. package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
  180. package/docs/uk/intlayer_with_tanstack.md +5 -3
  181. package/docs/uk/lsp.md +113 -174
  182. package/docs/uk/packages/angular-intlayer/exports.md +2 -2
  183. package/docs/uk/per_locale_file.md +1 -1
  184. package/docs/uk/readme.md +24 -24
  185. package/docs/ur/configuration.md +10 -10
  186. package/docs/ur/eslint.md +336 -0
  187. package/docs/ur/interest_of_intlayer.md +24 -22
  188. package/docs/vi/configuration.md +10 -10
  189. package/docs/vi/eslint.md +336 -0
  190. package/docs/vi/interest_of_intlayer.md +24 -22
  191. package/docs/vi/intlayer_with_svelte_kit.md +1 -1
  192. package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
  193. package/docs/vi/intlayer_with_tanstack.md +5 -3
  194. package/docs/vi/lsp.md +115 -176
  195. package/docs/vi/readme.md +24 -24
  196. package/docs/zh/configuration.md +10 -10
  197. package/docs/zh/eslint.md +336 -0
  198. package/docs/zh/interest_of_intlayer.md +24 -22
  199. package/docs/zh/intlayer_with_create_react_app.md +4 -0
  200. package/docs/zh/intlayer_with_lynx+react.md +4 -0
  201. package/docs/zh/intlayer_with_nextjs_14.md +0 -2
  202. package/docs/zh/intlayer_with_nextjs_15.md +0 -2
  203. package/docs/zh/intlayer_with_nextjs_page_router.md +0 -2
  204. package/docs/zh/intlayer_with_nuxt.md +1 -1
  205. package/docs/zh/intlayer_with_react_router_v7.md +4 -0
  206. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -0
  207. package/docs/zh/intlayer_with_solid_start.md +1 -1
  208. package/docs/zh/intlayer_with_svelte_kit.md +1 -1
  209. package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
  210. package/docs/zh/intlayer_with_tanstack.md +5 -3
  211. package/docs/zh/intlayer_with_vite+vue.md +0 -2
  212. package/docs/zh/lsp.md +113 -174
  213. package/docs/zh/readme.md +21 -21
  214. package/docs/zh-TW/eslint.md +336 -0
  215. package/docs/zh-TW/interest_of_intlayer.md +24 -22
  216. package/package.json +6 -6
  217. package/src/generated/docs.entry.ts +20 -0
package/docs/pl/readme.md CHANGED
@@ -46,27 +46,27 @@ Dzięki **plikom z treścią dla każdego języka**, **autouzupełnianiu w TypeS
46
46
 
47
47
  ## Kluczowe zalety Intlayer:
48
48
 
49
- | Funkcja | Opis |
50
- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Funkcja" width="700"> | **Wsparcie dla wielu frameworków**<br><br>Intlayer jest kompatybilny ze wszystkimi głównymi frameworkami i bibliotekami, w tym Next.js, React, Vite, Vue.js, Nuxt, Preact, Express i wieloma innymi. |
52
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Funkcja" width="700"> | **Zarządzanie treścią oparte na JavaScript**<br><br>Wykorzystaj elastyczność JavaScript do efektywnego definiowania i zarządzania swoją treścią. <br><br> - [Deklaracja treści](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="Funkcja" width="700"> | **Plik deklaracji treści dla każdego języka**<br><br>Przyspiesz swój rozwój, deklarując treść raz, przed automatycznym generowaniem.<br><br> - [Plik deklaracji treści dla każdego języka](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="Funkcja" width="700"> | **Kompilator**<br><br>Kompilator Intlayer automatycznie wyodrębnia treść z komponentów i generuje pliki słowników.<br><br> - [Kompilator](https://intlayer.org/doc/compiler) |
55
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Funkcja" width="700"> | **Środowisko z bezpiecznym typowaniem**<br><br>Wykorzystaj TypeScript, aby zapewnić, że definicje treści i kod są wolne od błędów, a także skorzystaj z autouzupełniania w IDE.<br><br> - [Konfiguracja 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="Funkcja" width="700"> | **Uproszczona konfiguracja**<br><br>Rozpocznij pracę szybko przy minimalnej konfiguracji. Łatwo dostosuj ustawienia dotyczące internacjonalizacji, routingu, AI, budowania oraz obsługi treści. <br><br> - [Poznaj integrację z 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="Funkcja" width="700"> | **Uproszczone pobieranie treści**<br><br>Nie musisz wywoływać funkcji `t` dla każdej części treści. Pobierz całą swoją zawartość bezpośrednio za pomocą jednego hooka.<br><br> - [Integracja z 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="Funkcja" width="700"> | **Spójna implementacja komponentów serwerowych**<br><br>Idealnie dopasowana do komponentów serwerowych Next.js, używaj tej samej implementacji zarówno dla komponentów klienta, jak i serwera, bez potrzeby przekazywania funkcji `t` przez każdy komponent serwerowy. <br><br> - [Komponenty serwerowe](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="Funkcja" width="700"> | **Zorganizowana baza kodu**<br><br>Utrzymuj swoją bazę kodu w lepszym porządku: 1 komponent = 1 słownik w tym samym folderze. Tłumaczenia blisko odpowiednich komponentów, co zwiększa łatwość utrzymania i przejrzystość. <br><br> - [Jak działa 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="Funkcja" width="700"> | **Ulepszone routowanie**<br><br>Pełne wsparcie routingu aplikacji, płynnie dostosowujące się do złożonych struktur aplikacji, dla Next.js, React, Vite, Vue.js itp.<br><br> - [Poznaj integrację z 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="Funkcja" width="700"> | **Wsparcie Markdown**<br><br>Importuj i interpretuj pliki lokalizacyjne oraz zdalne pliki Markdown dla wielojęzycznych treści, takich jak polityki prywatności, dokumentacja itp. Interpretuj i udostępniaj metadane Markdown w swoim kodzie.<br><br> - [Pliki treści](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="Funkcja" width="700"> | **Bezpłatny edytor wizualny i CMS**<br><br>Dostępny jest bezpłatny edytor wizualny i CMS dla twórców treści, eliminując potrzebę korzystania z platformy lokalizacyjnej. Utrzymuj synchronizację treści za pomocą Git lub zewnętrznie zarządzaj nią całkowicie lub częściowo za pomocą CMS.<br><br> - [Edytor Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS Intlayer](https://intlayer.org/doc/concept/cms) |
63
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Funkcja" width="700"> | **Treść możliwa do tree-shakingu**<br><br>Treść możliwa do tree-shakingu, zmniejszająca rozmiar finalnego bundla. Ładuje treść na poziomie komponentu, wykluczając nieużywaną zawartość z bundla. Obsługuje lazy loading, aby zwiększyć efektywność ładowania aplikacji. <br><br> - [Optymalizacja budowania aplikacji](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="Funkcja" width="700"> | **Renderowanie statyczne**<br><br>Nie blokuje renderowania statycznego. <br><br> - [Integracja z 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="Funkcja" width="700"> | **Tłumaczenie wspomagane AI**<br><br>Przekształć swoją stronę internetową na 231 języków za pomocą jednego kliknięcia, korzystając z zaawansowanych narzędzi tłumaczeniowych Intlayer opartych na AI, używając własnego dostawcy AI / klucza API. <br><br> - [Integracja CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Automatyczne wypełnianie](https://intlayer.org/doc/concept/auto-fill) |
66
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="Funkcja" width="700"> | **Integracja serwera MCP**<br><br>Udostępnia serwer MCP (Model Context Protocol) do automatyzacji IDE, umożliwiając płynne zarządzanie treścią i przepływy pracy i18n bezpośrednio w Twoim środowisku programistycznym. <br><br> - [Serwer MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/mcp_server.md) |
67
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **Rozszerzenie VSCode**<br><br>Intlayer dostarcza rozszerzenie do VSCode, które pomaga zarządzać Twoimi treściami i tłumaczeniami, budować słowniki, tłumaczyć zawartość i nie tylko. <br><br> - [Rozszerzenie 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="Feature" width="700"> | **Interoperacyjność**<br><br>Umożliwia interoperacyjność z react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer i react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer i next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer i next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer i 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="Feature" width="700"> | **Wydajność i Benchmark**<br><br>Wykorzystuje zaawansowane tree-shaking i dynamiczne ładowanie, aby zwiększyć wydajność i utrzymać rozwiązanie jak najlżejszym. <br><br> - [Wydajność i Benchmark](https://intlayer.org/doc/benchmark) |
49
+ | Funkcja | Opis |
50
+ | --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Funkcja" width="700"> | **Wsparcie dla wielu frameworków**<br><br>Intlayer jest kompatybilny ze wszystkimi głównymi frameworkami i bibliotekami, w tym Next.js, React, Vite, Vue.js, Nuxt, Preact, Express i wieloma innymi. |
52
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Funkcja" width="700"> | **Zarządzanie treścią oparte na JavaScript**<br><br>Wykorzystaj elastyczność JavaScript do efektywnego definiowania i zarządzania swoją treścią. <br><br> - [Deklaracja treści](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="Funkcja" width="700"> | **Plik deklaracji treści dla każdego języka**<br><br>Przyspiesz swój rozwój, deklarując treść raz, przed automatycznym generowaniem.<br><br> - [Plik deklaracji treści dla każdego języka](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="Funkcja" width="700"> | **Kompilator**<br><br>Kompilator Intlayer automatycznie wyodrębnia treść z komponentów i generuje pliki słowników.<br><br> - [Kompilator](https://intlayer.org/doc/compiler) |
55
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Funkcja" width="700"> | **Środowisko z bezpiecznym typowaniem**<br><br>Wykorzystaj TypeScript, aby zapewnić, że definicje treści i kod są wolne od błędów, a także skorzystaj z autouzupełniania w IDE.<br><br> - [Konfiguracja 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="Funkcja" width="700"> | **Uproszczona konfiguracja**<br><br>Rozpocznij pracę szybko przy minimalnej konfiguracji. Łatwo dostosuj ustawienia dotyczące internacjonalizacji, routingu, AI, budowania oraz obsługi treści. <br><br> - [Poznaj integrację z 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="Funkcja" width="700"> | **Uproszczone pobieranie treści**<br><br>Nie musisz wywoływać funkcji `t` dla każdej części treści. Pobierz całą swoją zawartość bezpośrednio za pomocą jednego hooka.<br><br> - [Integracja z 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="Funkcja" width="700"> | **Spójna implementacja komponentów serwerowych**<br><br>Idealnie dopasowana do komponentów serwerowych Next.js, używaj tej samej implementacji zarówno dla komponentów klienta, jak i serwera, bez potrzeby przekazywania funkcji `t` przez każdy komponent serwerowy. <br><br> - [Komponenty serwerowe](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="Funkcja" width="700"> | **Zorganizowana baza kodu**<br><br>Utrzymuj swoją bazę kodu w lepszym porządku: 1 komponent = 1 słownik w tym samym folderze. Tłumaczenia blisko odpowiednich komponentów, co zwiększa łatwość utrzymania i przejrzystość. <br><br> - [Jak działa 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="Funkcja" width="700"> | **Ulepszone routowanie**<br><br>Pełne wsparcie routingu aplikacji, płynnie dostosowujące się do złożonych struktur aplikacji, dla Next.js, React, Vite, Vue.js itp.<br><br> - [Poznaj integrację z 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="Funkcja" width="700"> | **Wsparcie Markdown**<br><br>Importuj i interpretuj pliki lokalizacyjne oraz zdalne pliki Markdown dla wielojęzycznych treści, takich jak polityki prywatności, dokumentacja itp. Interpretuj i udostępniaj metadane Markdown w swoim kodzie.<br><br> - [Pliki treści](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="Funkcja" width="700"> | **Bezpłatny edytor wizualny i CMS**<br><br>Dostępny jest bezpłatny edytor wizualny i CMS dla twórców treści, eliminując potrzebę korzystania z platformy lokalizacyjnej. Utrzymuj synchronizację treści za pomocą Git lub zewnętrznie zarządzaj nią całkowicie lub częściowo za pomocą CMS.<br><br> - [Edytor Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS Intlayer](https://intlayer.org/doc/concept/cms) |
63
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Funkcja" width="700"> | **Treść możliwa do tree-shakingu**<br><br>Treść możliwa do tree-shakingu, zmniejszająca rozmiar finalnego bundla. Ładuje treść na poziomie komponentu, wykluczając nieużywaną zawartość z bundla. Obsługuje lazy loading, aby zwiększyć efektywność ładowania aplikacji. <br><br> - [Optymalizacja budowania aplikacji](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="Funkcja" width="700"> | **Renderowanie statyczne**<br><br>Nie blokuje renderowania statycznego. <br><br> - [Integracja z 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="Funkcja" width="700"> | **Tłumaczenie wspomagane AI**<br><br>Przekształć swoją stronę internetową na 231 języków za pomocą jednego kliknięcia, korzystając z zaawansowanych narzędzi tłumaczeniowych Intlayer opartych na AI, używając własnego dostawcy AI / klucza API. <br><br> - [Integracja CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Automatyczne wypełnianie](https://intlayer.org/doc/concept/auto-fill) |
66
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="Funkcja" width="700"> | **Integracja serwera MCP**<br><br>Udostępnia serwer MCP (Model Context Protocol) do automatyzacji IDE, umożliwiając płynne zarządzanie treścią i przepływy pracy i18n bezpośrednio w Twoim środowisku programistycznym. <br><br> - [Serwer MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/mcp_server.md) |
67
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **Rozszerzenie VSCode**<br><br>Intlayer dostarcza rozszerzenie do VSCode, które pomaga zarządzać Twoimi treściami i tłumaczeniami, budować słowniki, tłumaczyć zawartość i nie tylko. <br><br> - [Rozszerzenie 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="Feature" width="700"> | **Interoperacyjność**<br><br>Umożliwia interoperacyjność z react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer i react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer i next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer i next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer i vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) <br> - [Adaptery kompatybilności Intlayer](https://intlayer.org/doc/compatibility) |
69
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Feature" width="700"> | **Wydajność i Benchmark**<br><br>Wykorzystuje zaawansowane tree-shaking i dynamiczne ładowanie, aby zwiększyć wydajność i utrzymać rozwiązanie jak najlżejszym. <br><br> - [Wydajność i Benchmark](https://intlayer.org/doc/benchmark) |
70
70
 
71
71
  ---
72
72
 
@@ -173,7 +173,7 @@ Poznaj naszą obszerną dokumentację, aby rozpocząć pracę z Intlayer i dowie
173
173
  <li><a href="https://intlayer.org/doc/concept/cms" rel=''>CMS Intlayer</a></li>
174
174
  <li><a href="https://intlayer.org/doc/concept/content" rel=''>Słownik</a>
175
175
  <ul>
176
- <li><a href="https://intlayer.org/doc/concept/content/per-locale-file" rel=''>Plik deklaracji treści na lokalizację</a></li>
176
+ <li><a href="https://intlayer.org/doc/concept/per-locale-file" rel=''>Plik deklaracji treści na lokalizację</a></li>
177
177
  <li><a href="https://intlayer.org/doc/concept/content/translation" rel=''>Tłumaczenie</a></li>
178
178
  <li><a href="https://intlayer.org/doc/concept/content/enumeration" rel=''>Enumeracja</a></li>
179
179
  <li><a href="https://intlayer.org/doc/concept/content/condition" rel=''>Warunek</a></li>
@@ -194,7 +194,7 @@ Poznaj naszą obszerną dokumentację, aby rozpocząć pracę z Intlayer i dowie
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-Page-Router" rel=''>Next.js Page Router</a></li>
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 używając kompilatora</a></li>
199
199
  </ul>
200
200
  </li>
@@ -223,7 +223,7 @@ Poznaj naszą obszerną dokumentację, aby rozpocząć pracę z Intlayer i dowie
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/vite-and-nuxt" rel=''>Vite + Nuxt</a></li>
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>
@@ -404,7 +404,7 @@ const config: IntlayerConfig = {
404
404
  ai: {
405
405
  /**
406
406
  * Provedor de IA a utilizar.
407
- * Opções: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
407
+ * Opções: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
408
408
  * Padrão: 'openai'
409
409
  */
410
410
  provider: "openai",
@@ -1035,15 +1035,15 @@ O Intlayer suporta múltiplos provedores de IA para máxima flexibilidade. Os pr
1035
1035
  - **Together.ai**
1036
1036
  - **LM Studio**
1037
1037
 
1038
- | Campo | Descrição | Tipo | Padrão | Exemplo | Nota |
1039
- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1040
- | `provider` | O provedor a utilizar para as funcionalidades de IA do Intlayer. | `'openai'` &#124; <br/> `'anthropic'` &#124; <br/> `'mistral'` &#124; <br/> `'deepseek'` &#124; <br/> `'gemini'` &#124; <br/> `'ollama'` &#124; <br/> `'openrouter'` &#124; <br/> `'alibaba'` &#124; <br/> `'fireworks'` &#124; <br/> `'groq'` &#124; <br/> `'huggingface'` &#124; <br/> `'bedrock'` &#124; <br/> `'googleaistudio'` &#124; <br/> `'googlevertex'` &#124; <br/> `'togetherai'` &#124; <br/> `'lmstudio'` | `undefined` | `'anthropic'` | Diferentes provedores requerem diferentes chaves de API e têm preços diferentes. |
1041
- | `model` | O modelo a utilizar para as funcionalidades de IA. | `string` | Nenhum | `'gpt-4o-2024-11-20'` | O modelo específico varia de acordo com o provedor. |
1042
- | `temperature` | Controla a aleatoriedade das respostas da IA. | `number` | Nenhum | `0.1` | Temperatura mais alta = mais criativo e menos previsível. |
1043
- | `apiKey` | A sua chave de API para o provedor selecionado. | `string` | Nenhum | `process.env.OPENAI_API_KEY` | Para ser mantido secreto; armazenar em variáveis de ambiente. |
1044
- | `applicationContext` | Contexto adicional sobre a sua aplicação para ajudar a IA a gerar traduções mais precisas (domínio, público-alvo, tom, terminologia). | `string` | Nenhum | `'O meu contexto de aplicação'` | Pode ser usado para adicionar regras (ex: `"Não deves transformar os URLs"`). |
1045
- | `baseURL` | O URL base para a API de IA. | `string` | Nenhum | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Pode apontar para um endpoint de API de IA local ou personalizado. |
1046
- | `dataSerialization` | Formato de serialização de dados para as funcionalidades de IA. | `'json'` &#124; <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: padrão, fiável; consome mais tokens.<br/>• `'toon'`: menos tokens, menos consistente.<br/>• Parâmetros adicionais são passados para o modelo como contexto (esforço de raciocínio, etc.). |
1038
+ | Campo | Descrição | Tipo | Padrão | Exemplo | Nota |
1039
+ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1040
+ | `provider` | O provedor a utilizar para as funcionalidades de IA do Intlayer. | `'openai'` &#124; <br/> `'anthropic'` &#124; <br/> `'mistral'` &#124; <br/> `'deepseek'` &#124; <br/> `'gemini'` &#124; <br/> `'ollama'` &#124; <br/> `'openrouter'` &#124; <br/> `'alibaba'` &#124; <br/> `'fireworks'` &#124; <br/> `'groq'` &#124; <br/> `'huggingface'` &#124; <br/> `'bedrock'` &#124; <br/> `'googleaistudio'` &#124; <br/> `'googlevertex'` &#124; <br/> `'togetherai'` &#124; <br/> `'lmstudio'` &#124; <br/> `'moonshotai'` | `undefined` | `'anthropic'` | Diferentes provedores requerem diferentes chaves de API e têm preços diferentes. |
1041
+ | `model` | O modelo a utilizar para as funcionalidades de IA. | `string` | Nenhum | `'gpt-4o-2024-11-20'` | O modelo específico varia de acordo com o provedor. |
1042
+ | `temperature` | Controla a aleatoriedade das respostas da IA. | `number` | Nenhum | `0.1` | Temperatura mais alta = mais criativo e menos previsível. |
1043
+ | `apiKey` | A sua chave de API para o provedor selecionado. | `string` | Nenhum | `process.env.OPENAI_API_KEY` | Para ser mantido secreto; armazenar em variáveis de ambiente. |
1044
+ | `applicationContext` | Contexto adicional sobre a sua aplicação para ajudar a IA a gerar traduções mais precisas (domínio, público-alvo, tom, terminologia). | `string` | Nenhum | `'O meu contexto de aplicação'` | Pode ser usado para adicionar regras (ex: `"Não deves transformar os URLs"`). |
1045
+ | `baseURL` | O URL base para a API de IA. | `string` | Nenhum | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Pode apontar para um endpoint de API de IA local ou personalizado. |
1046
+ | `dataSerialization` | Formato de serialização de dados para as funcionalidades de IA. | `'json'` &#124; <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: padrão, fiável; consome mais tokens.<br/>• `'toon'`: menos tokens, menos consistente.<br/>• Parâmetros adicionais são passados para o modelo como contexto (esforço de raciocínio, etc.). |
1047
1047
 
1048
1048
  ---
1049
1049
 
@@ -0,0 +1,336 @@
1
+ ---
2
+ createdAt: 2026-08-12
3
+ updatedAt: 2026-08-12
4
+ title: Plugin ESLint | Regras de lint para o Intlayer
5
+ description: Detecte strings codificadas diretamente, chamadas dinâmicas que o compilador do Intlayer não consegue otimizar e conteúdo de dicionário não utilizado com eslint-plugin-intlayer. Compatível com ESLint e oxlint, no React, Vue, Svelte, Angular e Astro.
6
+ keywords:
7
+ - Intlayer
8
+ - ESLint
9
+ - oxlint
10
+ - Linting
11
+ - i18n
12
+ - Internacionalização
13
+ - no-raw-text
14
+ - Strings codificadas diretamente
15
+ - Traduções não utilizadas
16
+ - Conteúdo morto
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: "Histórico inicial"
28
+ author: aymericzip
29
+ ---
30
+
31
+ # Plugin ESLint x OXLint
32
+
33
+ O `eslint-plugin-intlayer` detecta os tipos de erros de i18n que o TypeScript não consegue identificar:
34
+
35
+ 1. **Texto codificado diretamente (hardcoded)** que nunca chegou a um dicionário.
36
+ 2. **Chamadas dinâmicas** que passam na verificação de tipos e são executadas, mas que o compilador do Intlayer não consegue otimizar.
37
+ 3. **Conteúdo morto** — dicionários e campos que nada no projeto lê (ativação opcional).
38
+
39
+ Chaves de dicionário desconhecidas, caminhos de campos desconhecidos e idiomas ausentes já são erros de compilação, portanto o plugin não os repete.
40
+
41
+ ## Instalação
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
+ Requer o ESLint 9 ou superior (flat config).
56
+
57
+ ## Utilização
58
+
59
+ O plugin funciona tanto no ESLint quanto no [oxlint](https://oxc.rs) — com as mesmas regras e as mesmas opções.
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
+ Ou ative as regras uma a uma:
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
+ Duas ressalvas: o suporte a plugins JS no oxlint ainda está em versão alfa e o oxlint não suporta parsers customizados — portanto, arquivos `.vue`, `.svelte`, `.astro` e templates do Angular não são verificados lá. Execute o oxlint nos seus arquivos JS/TS/JSX e mantenha o ESLint para o restante.
105
+
106
+ O `no-unused-content` foi omitido acima de propósito: ele precisa do diretório de trabalho e do caminho do arquivo analisado a partir do contexto da regra, o que a ponte alfa de plugins JS não garante. Execute-o no ESLint.
107
+
108
+ </Tab>
109
+ </Tabs>
110
+
111
+ ### Configurações
112
+
113
+ | Configuração | `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 (+ literais fora de JSX) | error | error | error | off |
117
+ | `contract-only` | off | error | error | off | off |
118
+
119
+ A configuração `recommended` mantém deliberadamente `no-raw-text` como `warn`: apontá-la para uma base de código existente traz à tona todas as strings não traduzidas de uma só vez, o que não deve quebrar a sua compilação logo no primeiro dia.
120
+
121
+ O `enforce-adapter-import` fica desativado por padrão — ative-o explicitamente se desejar.
122
+
123
+ O `no-unused-content` fica desativado em todas as configurações, inclusive na `strict`. É a única regra que lê sua configuração do Intlayer e percorre seus arquivos de código no disco; portanto, ativá-la deve ser uma escolha consciente e não algo imposto por uma predefinição.
124
+
125
+ ## Regras
126
+
127
+ ### `no-raw-text`
128
+
129
+ Reporta texto voltado ao usuário que não esteja declarado em um dicionário. Ele usa a mesma detecção do `intlayer extract`, portanto nomes de marcas, classes CSS e identificadores técnicos são ignorados.
130
+
131
+ ```jsx
132
+ // ✗ Reportado
133
+ <h1>Welcome to our documentation</h1>
134
+ <input placeholder="Enter your email address" />
135
+
136
+ // ✓ Correto
137
+ const { title } = useIntlayer("home");
138
+ <h1>{title}</h1>
139
+ ```
140
+
141
+ Arquivos de declaração de conteúdo (`*.content.ts`, …) são ignorados.
142
+
143
+ Para corrigir um arquivo inteiro de uma só vez, execute `npx intlayer extract` e deixe o compilador mover as strings para um dicionário para você.
144
+
145
+ **Opções**
146
+
147
+ ```javascript fileName="eslint.config.mjs" codeFormat="esm"
148
+ {
149
+ "intlayer/no-raw-text": [
150
+ "warn",
151
+ {
152
+ // Atributos cujo valor é texto voltado ao usuário.
153
+ // Padrão: title, placeholder, alt, aria-label, label
154
+ attributes: ["title", "placeholder", "alt", "aria-label", "label"],
155
+
156
+ // Elementos cujo conteúdo nunca é texto voltado ao usuário.
157
+ // Padrão: code, pre, script, style
158
+ ignoreElements: ["code", "pre", "script", "style"],
159
+
160
+ // Expressões regulares para textos que nunca devem ser reportados.
161
+ ignorePatterns: ["^Powered by"],
162
+
163
+ // Também reportar literais de string fora do markup. Padrão: false
164
+ includeStringLiterals: false,
165
+ },
166
+ ],
167
+ }
168
+ ```
169
+
170
+ ### `static-dictionary-key`
171
+
172
+ Exige que a chave do dicionário seja uma string literal.
173
+
174
+ O compilador só consegue pré-carregar um dicionário quando pode ler a chave diretamente no local da chamada. Com uma chave calculada, ele pula silenciosamente a otimização e inclui todos os dicionários no bundle.
175
+
176
+ ```typescript
177
+ // ✗ Reportado
178
+ useIntlayer(dictionaryKey);
179
+ useIntlayer(`home-${suffix}`);
180
+ getTranslations({ namespace: page });
181
+
182
+ // ✗ Uma variável ainda não é um literal
183
+ const key = "home";
184
+ useIntlayer(key);
185
+
186
+ // ✓ Correto
187
+ useIntlayer("home");
188
+ getTranslations({ namespace: "home" });
189
+ ```
190
+
191
+ Isso se aplica ao `useIntlayer`, `getIntlayer` e a todos os adaptadores de compatibilidade (`useTranslation`, `useTranslations`, `formatMessage`, `<FormattedMessage id>`, `<Trans i18nKey>`, …).
192
+
193
+ ### `no-dynamic-field-access`
194
+
195
+ Exige que o campo lido de um dicionário seja conhecido estaticamente.
196
+
197
+ O compilador remove campos que não são identificados como utilizados. Um acesso computado é invisível para ele, portanto a leitura pode retornar `undefined` em tempo de execução.
198
+
199
+ ```typescript
200
+ // ✗ Reportado
201
+ const content = useIntlayer("home");
202
+ content[fieldName];
203
+
204
+ const t = useTranslations("home");
205
+ t(messageKey);
206
+
207
+ // ✓ Correto
208
+ content.title;
209
+ content["title"];
210
+ content.items[0];
211
+ t("hero.title");
212
+ ```
213
+
214
+ ### `enforce-adapter-import`
215
+
216
+ Prefere o adaptador de compatibilidade `@intlayer/*` ao pacote original. O original só é resolvido para o Intlayer quando o alias do empacotador está configurado; o adaptador sempre funciona. Corrigível automaticamente com `--fix`.
217
+
218
+ ```typescript
219
+ // ✗ Reportado
220
+ import { useTranslation } from "react-i18next";
221
+ import { getTranslations } from "next-intl/server";
222
+
223
+ // ✓ Correto
224
+ import { useTranslation } from "@intlayer/react-i18next";
225
+ import { getTranslations } from "@intlayer/next-intl/server";
226
+ ```
227
+
228
+ ### `no-unused-content`
229
+
230
+ **Desativada por padrão.** Reporta conteúdo que nada em seu projeto lê, além de chaves de dicionário declaradas em mais de um local.
231
+
232
+ ```typescript fileName="src/home.content.ts"
233
+ export default {
234
+ key: "home", // ✗ Reportado se nenhum chamador no projeto solicitar "home"
235
+ content: {
236
+ title: t({ pt: "Título", en: "Title" }),
237
+
238
+ // ✗ Reportado se nada ler `hero`
239
+ hero: {
240
+ subtitle: t({ pt: "Subtítulo", en: "Subtitle" }),
241
+ },
242
+ },
243
+ };
244
+ ```
245
+
246
+ Ao contrário das outras regras, esta não pode responder apenas com base no arquivo analisado — um campo só é considerado não utilizado em relação ao projeto inteiro. Na primeira declaração de conteúdo de uma execução do linter, ela carrega a sua configuração do Intlayer, busca os arquivos de código declarados por essa configuração (`build.traversePattern`, `compiler.transformPattern`) e executa o mesmo analisador de uso que alimenta o `@intlayer/lsp` e o tachado de "não utilizado" na extensão do VS Code. O resultado é armazenado em cache por `cacheTtl` milissegundos, para que a varredura ocorra uma vez por execução e não a cada arquivo.
247
+
248
+ **Opções**
249
+
250
+ ```javascript fileName="eslint.config.mjs" codeFormat="esm"
251
+ {
252
+ "intlayer/no-unused-content": [
253
+ "warn",
254
+ {
255
+ // Reportar chaves de dicionário que nada referencia. Padrão: true
256
+ reportUnusedDictionaries: true,
257
+
258
+ // Reportar campos de conteúdo que nada lê. Padrão: true
259
+ reportUnusedFields: true,
260
+
261
+ // Reportar chaves declaradas em mais de um lugar. Padrão: true
262
+ reportDuplicateKeys: true,
263
+
264
+ // Expressões regulares para caminhos de campos que nunca devem ser reportados.
265
+ ignoreFields: ["^meta"],
266
+
267
+ // Raiz do projeto a partir de onde a verificação começa. Padrão: diretório de trabalho do ESLint
268
+ baseDir: process.cwd(),
269
+
270
+ // Tempo de reutilização de uma varredura de projeto, em ms. Padrão: 30000
271
+ cacheTtl: 30000,
272
+ },
273
+ ],
274
+ }
275
+ ```
276
+
277
+ Diminua `cacheTtl` ao executar o lint a partir de um servidor de editor de longa duração e quiser que as alterações apareçam mais rápido; defina `baseDir` quando uma única execução de lint cobrir vários projetos Intlayer em um monorepo.
278
+
279
+ > **Tende ao silêncio.** Um falso positivo aqui apagaria uma tradução; portanto, nada é reportado quando o dicionário é consumido de uma forma que a análise não consiga rastrear: o objeto de conteúdo passado por completo, uma função de tradução vinculada a partir dele (`const t = useTranslations("home")`), uma declaração acessada por importação direta (`useDictionary(myDictionary)`), um `nest()` de outro dicionário ou uma lista de campos tornada não exaustiva por um spread. Componentes de arquivo único (`.vue`, `.svelte`, `.astro`) são considerados como usuários de todos os campos dos dicionários mencionados, pois seus blocos de script não são analisados aqui.
280
+
281
+ O `reportDuplicateKeys` lê os dicionários não mesclados que o build grava em `.intlayer/`, portanto permanece em silêncio até que o projeto tenha sido construído pelo menos uma vez. Duas declarações compartilhando uma chave são mescladas, o que é um padrão válido — o aviso existe porque um campo definido em ambos os lados mantém silenciosamente apenas um dos dois valores.
282
+
283
+ O analisador é carregado a partir do `@intlayer/lsp`, distribuído como ESM. A regra requer, portanto, uma versão do Node compatível com `require()` em módulos ES — Node 20.19+ ou 22.12+. Em versões anteriores, ela não reporta nada em vez de falhar a execução do lint.
284
+
285
+ ## Frameworks
286
+
287
+ Todas as regras funcionam em todas as integrações do Intlayer, inclusive dentro de templates Vue, Svelte e Angular. Você só precisa informar ao ESLint qual parser lê cada tipo de arquivo.
288
+
289
+ | Framework | Arquivos | 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
+ | Templates do 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
+ Instale apenas os parsers de que seu projeto precisa.
335
+
336
+ > **Limitação conhecida.** Em templates do Vue e Angular, uma expressão como `{{ content[key] }}` não é verificada pelo `no-dynamic-field-access`. Leituras dinâmicas escritas no bloco script são identificadas normalmente.