@intlayer/docs 8.9.4-canary.0 → 8.9.5

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 (207) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +20 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +20 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +1 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/benchmark/index.md +0 -3
  8. package/docs/ar/benchmark/nextjs.md +15 -6
  9. package/docs/ar/benchmark/solid.md +155 -0
  10. package/docs/ar/benchmark/svelte.md +148 -0
  11. package/docs/ar/benchmark/tanstack.md +12 -3
  12. package/docs/ar/benchmark/vue.md +160 -0
  13. package/docs/ar/configuration.md +16 -12
  14. package/docs/ar/dictionary/content_file.md +51 -1
  15. package/docs/ar/mcp_server.md +30 -17
  16. package/docs/ar/plugins/sync-po.md +333 -0
  17. package/docs/bn/configuration.md +16 -12
  18. package/docs/cs/configuration.md +16 -12
  19. package/docs/de/benchmark/index.md +0 -3
  20. package/docs/de/benchmark/nextjs.md +15 -6
  21. package/docs/de/benchmark/solid.md +155 -0
  22. package/docs/de/benchmark/svelte.md +148 -0
  23. package/docs/de/benchmark/tanstack.md +12 -3
  24. package/docs/de/benchmark/vue.md +160 -0
  25. package/docs/de/configuration.md +16 -12
  26. package/docs/de/dictionary/content_file.md +52 -2
  27. package/docs/de/mcp_server.md +29 -16
  28. package/docs/de/plugins/sync-po.md +332 -0
  29. package/docs/en/benchmark/nextjs.md +11 -2
  30. package/docs/en/benchmark/solid.md +22 -4
  31. package/docs/en/benchmark/svelte.md +17 -5
  32. package/docs/en/benchmark/tanstack.md +18 -3
  33. package/docs/en/benchmark/vue.md +17 -11
  34. package/docs/en/configuration.md +16 -13
  35. package/docs/en/dictionary/content_file.md +51 -1
  36. package/docs/en/mcp_server.md +31 -18
  37. package/docs/en/plugins/sync-po.md +333 -0
  38. package/docs/en-GB/benchmark/index.md +0 -3
  39. package/docs/en-GB/benchmark/nextjs.md +15 -6
  40. package/docs/en-GB/benchmark/solid.md +155 -0
  41. package/docs/en-GB/benchmark/svelte.md +148 -0
  42. package/docs/en-GB/benchmark/tanstack.md +12 -3
  43. package/docs/en-GB/benchmark/vue.md +160 -0
  44. package/docs/en-GB/configuration.md +15 -11
  45. package/docs/en-GB/dictionary/content_file.md +51 -1
  46. package/docs/en-GB/mcp_server.md +31 -18
  47. package/docs/en-GB/plugins/sync-po.md +333 -0
  48. package/docs/es/benchmark/index.md +0 -3
  49. package/docs/es/benchmark/nextjs.md +15 -6
  50. package/docs/es/benchmark/solid.md +155 -0
  51. package/docs/es/benchmark/svelte.md +148 -0
  52. package/docs/es/benchmark/tanstack.md +12 -3
  53. package/docs/es/benchmark/vue.md +160 -0
  54. package/docs/es/configuration.md +16 -12
  55. package/docs/es/dictionary/content_file.md +51 -1
  56. package/docs/es/mcp_server.md +30 -17
  57. package/docs/es/plugins/sync-po.md +333 -0
  58. package/docs/fr/benchmark/index.md +0 -3
  59. package/docs/fr/benchmark/nextjs.md +15 -6
  60. package/docs/fr/benchmark/solid.md +155 -0
  61. package/docs/fr/benchmark/svelte.md +148 -0
  62. package/docs/fr/benchmark/tanstack.md +12 -3
  63. package/docs/fr/benchmark/vue.md +160 -0
  64. package/docs/fr/configuration.md +16 -12
  65. package/docs/fr/dictionary/content_file.md +51 -1
  66. package/docs/fr/mcp_server.md +30 -17
  67. package/docs/fr/plugins/sync-po.md +333 -0
  68. package/docs/hi/benchmark/nextjs.md +15 -6
  69. package/docs/hi/benchmark/solid.md +155 -0
  70. package/docs/hi/benchmark/svelte.md +148 -0
  71. package/docs/hi/benchmark/tanstack.md +12 -3
  72. package/docs/hi/benchmark/vue.md +160 -0
  73. package/docs/hi/configuration.md +16 -12
  74. package/docs/hi/dictionary/content_file.md +51 -1
  75. package/docs/hi/mcp_server.md +31 -18
  76. package/docs/hi/plugins/sync-po.md +333 -0
  77. package/docs/id/benchmark/index.md +0 -3
  78. package/docs/id/benchmark/nextjs.md +15 -6
  79. package/docs/id/benchmark/solid.md +155 -0
  80. package/docs/id/benchmark/svelte.md +148 -0
  81. package/docs/id/benchmark/tanstack.md +12 -3
  82. package/docs/id/benchmark/vue.md +160 -0
  83. package/docs/id/configuration.md +16 -12
  84. package/docs/id/dictionary/content_file.md +51 -1
  85. package/docs/id/mcp_server.md +30 -17
  86. package/docs/id/plugins/sync-po.md +333 -0
  87. package/docs/it/benchmark/index.md +1 -4
  88. package/docs/it/benchmark/nextjs.md +15 -6
  89. package/docs/it/benchmark/solid.md +155 -0
  90. package/docs/it/benchmark/svelte.md +148 -0
  91. package/docs/it/benchmark/tanstack.md +12 -3
  92. package/docs/it/benchmark/vue.md +160 -0
  93. package/docs/it/configuration.md +16 -12
  94. package/docs/it/dictionary/content_file.md +51 -1
  95. package/docs/it/mcp_server.md +30 -17
  96. package/docs/it/plugins/sync-po.md +333 -0
  97. package/docs/ja/benchmark/index.md +5 -5
  98. package/docs/ja/benchmark/nextjs.md +15 -6
  99. package/docs/ja/benchmark/solid.md +155 -0
  100. package/docs/ja/benchmark/svelte.md +148 -0
  101. package/docs/ja/benchmark/tanstack.md +12 -3
  102. package/docs/ja/benchmark/vue.md +160 -0
  103. package/docs/ja/configuration.md +16 -12
  104. package/docs/ja/dictionary/content_file.md +50 -2
  105. package/docs/ja/intlayer_with_nextjs_no_locale_path.md +4 -3
  106. package/docs/ja/mcp_server.md +29 -16
  107. package/docs/ja/plugins/sync-po.md +333 -0
  108. package/docs/ko/benchmark/nextjs.md +15 -6
  109. package/docs/ko/benchmark/solid.md +155 -0
  110. package/docs/ko/benchmark/svelte.md +148 -0
  111. package/docs/ko/benchmark/tanstack.md +12 -3
  112. package/docs/ko/benchmark/vue.md +160 -0
  113. package/docs/ko/configuration.md +16 -12
  114. package/docs/ko/dictionary/content_file.md +51 -1
  115. package/docs/ko/intlayer_with_nextjs_no_locale_path.md +3 -2
  116. package/docs/ko/mcp_server.md +31 -18
  117. package/docs/ko/plugins/sync-po.md +333 -0
  118. package/docs/nl/configuration.md +16 -12
  119. package/docs/pl/benchmark/index.md +0 -3
  120. package/docs/pl/benchmark/nextjs.md +15 -6
  121. package/docs/pl/benchmark/solid.md +155 -0
  122. package/docs/pl/benchmark/svelte.md +148 -0
  123. package/docs/pl/benchmark/tanstack.md +12 -3
  124. package/docs/pl/benchmark/vue.md +160 -0
  125. package/docs/pl/configuration.md +16 -12
  126. package/docs/pl/dictionary/content_file.md +51 -1
  127. package/docs/pl/mcp_server.md +30 -17
  128. package/docs/pl/plugins/sync-po.md +333 -0
  129. package/docs/pt/benchmark/index.md +0 -3
  130. package/docs/pt/benchmark/nextjs.md +16 -7
  131. package/docs/pt/benchmark/solid.md +155 -0
  132. package/docs/pt/benchmark/svelte.md +148 -0
  133. package/docs/pt/benchmark/tanstack.md +13 -4
  134. package/docs/pt/benchmark/vue.md +160 -0
  135. package/docs/pt/configuration.md +16 -12
  136. package/docs/pt/dictionary/content_file.md +51 -1
  137. package/docs/pt/mcp_server.md +30 -17
  138. package/docs/pt/plugins/sync-po.md +333 -0
  139. package/docs/ru/benchmark/nextjs.md +15 -6
  140. package/docs/ru/benchmark/solid.md +155 -0
  141. package/docs/ru/benchmark/svelte.md +148 -0
  142. package/docs/ru/benchmark/tanstack.md +12 -3
  143. package/docs/ru/benchmark/vue.md +160 -0
  144. package/docs/ru/configuration.md +16 -12
  145. package/docs/ru/dictionary/content_file.md +52 -2
  146. package/docs/ru/mcp_server.md +30 -17
  147. package/docs/ru/plugins/sync-po.md +333 -0
  148. package/docs/tr/benchmark/index.md +0 -3
  149. package/docs/tr/benchmark/nextjs.md +15 -6
  150. package/docs/tr/benchmark/solid.md +155 -0
  151. package/docs/tr/benchmark/svelte.md +148 -0
  152. package/docs/tr/benchmark/tanstack.md +12 -3
  153. package/docs/tr/benchmark/vue.md +160 -0
  154. package/docs/tr/configuration.md +16 -12
  155. package/docs/tr/dictionary/content_file.md +51 -1
  156. package/docs/tr/mcp_server.md +31 -18
  157. package/docs/tr/plugins/sync-po.md +333 -0
  158. package/docs/uk/benchmark/nextjs.md +15 -6
  159. package/docs/uk/benchmark/solid.md +155 -0
  160. package/docs/uk/benchmark/svelte.md +148 -0
  161. package/docs/uk/benchmark/tanstack.md +12 -3
  162. package/docs/uk/benchmark/vue.md +160 -0
  163. package/docs/uk/configuration.md +16 -12
  164. package/docs/uk/dictionary/content_file.md +51 -1
  165. package/docs/uk/mcp_server.md +29 -16
  166. package/docs/uk/plugins/sync-po.md +333 -0
  167. package/docs/ur/configuration.md +16 -12
  168. package/docs/vi/benchmark/index.md +0 -3
  169. package/docs/vi/benchmark/nextjs.md +15 -6
  170. package/docs/vi/benchmark/solid.md +155 -0
  171. package/docs/vi/benchmark/svelte.md +148 -0
  172. package/docs/vi/benchmark/tanstack.md +12 -3
  173. package/docs/vi/benchmark/vue.md +160 -0
  174. package/docs/vi/configuration.md +16 -12
  175. package/docs/vi/dictionary/content_file.md +51 -1
  176. package/docs/vi/intlayer_with_nextjs_15.md +10 -57
  177. package/docs/vi/mcp_server.md +30 -17
  178. package/docs/vi/plugins/sync-po.md +333 -0
  179. package/docs/zh/benchmark/nextjs.md +15 -6
  180. package/docs/zh/benchmark/solid.md +155 -0
  181. package/docs/zh/benchmark/svelte.md +148 -0
  182. package/docs/zh/benchmark/tanstack.md +12 -3
  183. package/docs/zh/benchmark/vue.md +160 -0
  184. package/docs/zh/configuration.md +16 -12
  185. package/docs/zh/dictionary/content_file.md +51 -3
  186. package/docs/zh/mcp_server.md +31 -18
  187. package/docs/zh/plugins/sync-po.md +333 -0
  188. package/frequent_questions/ar/intlayerNode.md +3 -3
  189. package/frequent_questions/de/intlayerNode.md +3 -3
  190. package/frequent_questions/en/intlayerNode.md +3 -3
  191. package/frequent_questions/en-GB/intlayerNode.md +3 -3
  192. package/frequent_questions/es/intlayerNode.md +3 -3
  193. package/frequent_questions/fr/intlayerNode.md +3 -3
  194. package/frequent_questions/hi/intlayerNode.md +3 -3
  195. package/frequent_questions/id/intlayerNode.md +3 -3
  196. package/frequent_questions/it/intlayerNode.md +3 -3
  197. package/frequent_questions/ja/intlayerNode.md +3 -3
  198. package/frequent_questions/ko/intlayerNode.md +3 -3
  199. package/frequent_questions/pl/intlayerNode.md +3 -3
  200. package/frequent_questions/pt/intlayerNode.md +3 -3
  201. package/frequent_questions/ru/intlayerNode.md +3 -3
  202. package/frequent_questions/tr/intlayerNode.md +3 -3
  203. package/frequent_questions/uk/intlayerNode.md +3 -3
  204. package/frequent_questions/vi/intlayerNode.md +3 -3
  205. package/frequent_questions/zh/intlayerNode.md +3 -3
  206. package/package.json +8 -8
  207. package/src/generated/docs.entry.ts +20 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-02-07
3
- updatedAt: 2026-01-28
3
+ updatedAt: 2026-05-12
4
4
  title: Plik z Treścią
5
5
  description: Dowiedz się, jak dostosować rozszerzenia dla plików deklaracji treści. Postępuj zgodnie z tą dokumentacją, aby efektywnie wdrażać warunki w swoim projekcie.
6
6
  keywords:
@@ -12,6 +12,9 @@ slugs:
12
12
  - concept
13
13
  - content
14
14
  history:
15
+ - version: 8.9.0
16
+ date: 2026-05-12
17
+ changes: "Add `plural` content node type"
15
18
  - version: 8.0.0
16
19
  date: 2026-01-28
17
20
  changes: "Dodano typ węzła zawartości `html`"
@@ -66,6 +69,7 @@ import { type ReactNode } from "react";
66
69
  import {
67
70
  t,
68
71
  enu,
72
+ plural,
69
73
  cond,
70
74
  nest,
71
75
  md,
@@ -85,6 +89,7 @@ interface Content {
85
89
  };
86
90
  multilingualContent: string;
87
91
  quantityContent: string;
92
+ pluralContent: string;
88
93
  conditionalContent: string;
89
94
  markdownContent: never;
90
95
  htmlContent: never;
@@ -120,6 +125,10 @@ export default {
120
125
  ">5": "Kilka samochodów",
121
126
  ">19": "Wiele samochodów",
122
127
  }),
128
+ pluralContent: plural({
129
+ one: "One car",
130
+ other: "{{count}} cars",
131
+ }),
123
132
  conditionalContent: cond({
124
133
  true: "Walidacja jest włączona",
125
134
  false: "Walidacja jest wyłączona",
@@ -174,6 +183,13 @@ export default {
174
183
  ">5": "Kilka samochodów",
175
184
  ">19": "Wiele samochodów",
176
185
  },
186
+ "pluralContent": {
187
+ "nodeType": "plural",
188
+ "plural": {
189
+ "one": "One car",
190
+ "other": "{{count}} cars",
191
+ },
192
+ },
177
193
  },
178
194
  "conditionalContent": {
179
195
  "nodeType": "condition",
@@ -221,6 +237,7 @@ Węzły treści są podstawowymi elementami zawartości słownika. Mogą to być
221
237
  - **Wartości prymitywne**: łańcuchy znaków, liczby, wartości logiczne, null, undefined
222
238
  - **Węzły typowane**: Specjalne typy zawartości, takie jak tłumaczenia, warunki, markdown itp.
223
239
  - **Funkcje**: Dynamiczna zawartość, która może być oceniana w czasie wykonywania [zobacz Pobieranie funkcji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/function_fetching.md)
240
+ - **Plural Content**: See Plural Content [See Plural Content](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/plural.md)
224
241
  - **Zagnieżdżona zawartość**: Odwołania do innych słowników
225
242
 
226
243
  #### Typy zawartości
@@ -551,6 +568,8 @@ multilingualContent: t({
551
568
  });
552
569
  ```
553
570
 
571
+ > See [Zawartość tłumaczenia (`t`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/translation.md) for more information.
572
+
554
573
  ### Zawartość warunkowa (`cond`)
555
574
 
556
575
  Treść, która zmienia się w zależności od warunków logicznych (boolean):
@@ -564,6 +583,8 @@ conditionalContent: cond({
564
583
  });
565
584
  ```
566
585
 
586
+ > See [Zawartość warunkowa (`cond`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/condition.md) for more information.
587
+
567
588
  ### Treść enumeracyjna (`enu`)
568
589
 
569
590
  Treść, która zmienia się w zależności od wartości enumeracyjnych:
@@ -578,6 +599,23 @@ statusContent: enu({
578
599
  });
579
600
  ```
580
601
 
602
+ > See [Treść enumeracyjna (`enu`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/enumeration.md) for more information.
603
+
604
+ ### Plural Content (`plural`)
605
+
606
+ Content that varies based on plural rules:
607
+
608
+ ```typescript
609
+ import { plural } from "intlayer";
610
+
611
+ pluralContent: plural({
612
+ one: "One car",
613
+ other: "{{count}} cars",
614
+ });
615
+ ```
616
+
617
+ > See [Plural Content Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/plural.md) for more information.
618
+
581
619
  ### Treść wstawiana (`insert`)
582
620
 
583
621
  Treść, którą można wstawić do innej treści:
@@ -588,6 +626,8 @@ import { insert } from "intlayer";
588
626
  insertionContent: insert("Ten tekst można wstawić w dowolne miejsce");
589
627
  ```
590
628
 
629
+ > See [Treść wstawiana (`insert`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/insertion.md) for more information.
630
+
591
631
  ### Treść zagnieżdżona (`nest`)
592
632
 
593
633
  Odniesienia do innych słowników:
@@ -598,6 +638,8 @@ import { nest } from "intlayer";
598
638
  nestedContent: nest("about-page");
599
639
  ```
600
640
 
641
+ > See [Treść zagnieżdżona (`nest`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/nesting.md) for more information.
642
+
601
643
  ### Zawartość Markdown (`md`)
602
644
 
603
645
  Treść sformatowana w Markdown:
@@ -610,6 +652,8 @@ markdownContent: md(
610
652
  );
611
653
  ```
612
654
 
655
+ > See [Zawartość Markdown (`md`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/markdown.md) for more information.
656
+
613
657
  ### Zawartość HTML (`html`)
614
658
 
615
659
  Zawartość HTML, która może używać standardowych tagów lub niestandardowych komponentów:
@@ -627,6 +671,8 @@ localizedHtmlContent: t({
627
671
  });
628
672
  ```
629
673
 
674
+ > See [Zawartość HTML (`html`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/html.md) for more information.
675
+
630
676
  ### Zawartość według płci (`gender`)
631
677
 
632
678
  Treść zmieniająca się w zależności od płci:
@@ -641,6 +687,8 @@ genderContent: gender({
641
687
  });
642
688
  ```
643
689
 
690
+ > See [Zawartość według płci (`gender`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/gender.md) for more information.
691
+
644
692
  ### Zawartość pliku (`file`)
645
693
 
646
694
  Odniesienia do plików zewnętrznych:
@@ -651,6 +699,8 @@ import { file } from "intlayer";
651
699
  fileContent: file("./path/to/content.txt");
652
700
  ```
653
701
 
702
+ > See [Zawartość pliku (`file`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/file.md) for more information.
703
+
654
704
  ## Tworzenie plików z zawartością
655
705
 
656
706
  ### Podstawowa struktura pliku z zawartością
@@ -23,7 +23,7 @@ history:
23
23
  changes: "Dodano konfigurację Claude Desktop"
24
24
  - version: 5.5.12
25
25
  date: 2025-07-10
26
- changes: "Dodano transport SSE i zdalny serwer"
26
+ changes: "Dodano transport Streamable HTTP i zdalny serwer"
27
27
  - version: 5.5.10
28
28
  date: 2025-06-29
29
29
  changes: "Inicjalizacja historii"
@@ -51,12 +51,12 @@ Włączając Serwer Intlayer MCP w swoim IDE, zyskujesz:
51
51
 
52
52
  > Pełną listę poleceń i opcji znajdziesz w [dokumentacji Intlayer CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/cli/index.md).
53
53
 
54
- ## Serwer lokalny (stdio) vs Serwer zdalny (SSE)
54
+ ## Serwer lokalny (stdio) vs Serwer zdalny (Streamable HTTP)
55
55
 
56
56
  Serwer MCP można używać na dwa sposoby:
57
57
 
58
58
  - Serwer lokalny (stdio)
59
- - Serwer zdalny (SSE)
59
+ - Serwer zdalny (Streamable HTTP)
60
60
 
61
61
  ### Serwer lokalny (stdio) (zalecany)
62
62
 
@@ -64,7 +64,7 @@ Intlayer udostępnia pakiet NPM, który można zainstalować lokalnie na swoim k
64
64
 
65
65
  Ten serwer jest zalecanym sposobem korzystania z serwera MCP, ponieważ integruje wszystkie funkcje serwera MCP, w tym narzędzia CLI.
66
66
 
67
- ### Serwer zdalny (SSE)
67
+ ### Serwer zdalny (Streamable HTTP)
68
68
 
69
69
  Serwer MCP może być również używany zdalnie, korzystając z metody transportu SSE. Serwer ten jest hostowany przez Intlayer i jest dostępny pod adresem https://mcp.intlayer.org. Do tego serwera można uzyskać dostęp publicznie, bez żadnej autoryzacji, i jest on bezpłatny w użyciu.
70
70
 
@@ -97,7 +97,7 @@ bun x intlayer init mcp
97
97
  To polecenie:
98
98
 
99
99
  1. Zapyta, której platformy używasz (Cursor, VS Code, Claude Desktop itp.).
100
- 2. Zapyta, której metody transportu chcesz użyć (serwer lokalny (stdio) lub serwer zdalny (SSE)).
100
+ 2. Zapyta, której metody transportu chcesz użyć (serwer lokalny (stdio) lub serwer zdalny (Streamable HTTP)).
101
101
  3. Automatycznie zaktualizuje Twój plik konfiguracyjny (np. `.cursor/mcp.json`, `.vscode/mcp.json` lub globalną konfigurację Claude Desktop).
102
102
 
103
103
  ---
@@ -107,7 +107,7 @@ To polecenie:
107
107
  1. Otwórz paletę komend (Ctrl+Shift+P lub Cmd+Shift+P).
108
108
  2. Wpisz `Intlayer: Setup AI Agent Skills`
109
109
  3. Wybierze platformę, której używasz (np. `VS Code`, `Cursor`, `Windsurf`, `OpenCode`, `Claude Code`, `GitHub Copilot Workspace` itp.).
110
- 4. Wybierz MCP do zainstalowania (stdio, SSE)
110
+ 4. Wybierz MCP do zainstalowania (stdio, Streamable HTTP)
111
111
  5. Naciśnij Enter.
112
112
 
113
113
  ---
@@ -131,16 +131,16 @@ W katalogu głównym projektu dodaj następujący plik konfiguracyjny `.cursor/m
131
131
  }
132
132
  ```
133
133
 
134
- ### Serwer zdalny (SSE)
134
+ ### Serwer zdalny (Streamable HTTP)
135
135
 
136
- Aby połączyć się ze zdalnym serwerem Intlayer MCP za pomocą Server-Sent Events (SSE), możesz skonfigurować swojego klienta MCP do łączenia się z usługą hostowaną.
136
+ Aby połączyć się ze zdalnym serwerem Intlayer MCP za pomocą Server-Sent Events (Streamable HTTP), możesz skonfigurować swojego klienta MCP do łączenia się z usługą hostowaną.
137
137
 
138
138
  ```json fileName=".cursor/mcp.json"
139
139
  {
140
140
  "mcpServers": {
141
- "intlayer": {
142
- "url": "https://mcp.intlayer.org",
143
- "transport": "sse"
141
+ "intlayer-sse": {
142
+ "command": "npx",
143
+ "args": ["-y", "mcp-remote@latest", "https://mcp.intlayer.org"]
144
144
  }
145
145
  }
146
146
  }
@@ -172,16 +172,16 @@ Utwórz plik `.vscode/mcp.json` w katalogu głównym projektu:
172
172
  }
173
173
  ```
174
174
 
175
- ### Serwer zdalny (SSE)
175
+ ### Serwer zdalny (Streamable HTTP)
176
176
 
177
- Aby połączyć się ze zdalnym serwerem Intlayer MCP za pomocą Server-Sent Events (SSE), możesz skonfigurować swojego klienta MCP do łączenia się z usługą hostowaną.
177
+ Aby połączyć się ze zdalnym serwerem Intlayer MCP za pomocą Server-Sent Events (Streamable HTTP), możesz skonfigurować swojego klienta MCP do łączenia się z usługą hostowaną.
178
178
 
179
179
  ```json fileName=".vscode/mcp.json"
180
180
  {
181
181
  "servers": {
182
- "intlayer": {
183
- "url": "https://mcp.intlayer.org",
184
- "type": "sse"
182
+ "intlayer-sse": {
183
+ "command": "npx",
184
+ "args": ["-y", "mcp-remote@latest", "https://mcp.intlayer.org"]
185
185
  }
186
186
  }
187
187
  }
@@ -191,7 +191,7 @@ Aby połączyć się ze zdalnym serwerem Intlayer MCP za pomocą Server-Sent Eve
191
191
 
192
192
  ## Konfiguracja w ChatGPT
193
193
 
194
- ### Serwer zdalny (SSE)
194
+ ### Serwer zdalny (Streamable HTTP)
195
195
 
196
196
  Postępuj zgodnie z [oficjalną dokumentacją](https://platform.openai.com/docs/mcp#test-and-connect-your-mcp-server), aby skonfigurować serwer MCP w ChatGPT.
197
197
 
@@ -232,6 +232,19 @@ Postępuj zgodnie z [oficjalną dokumentacją](https://modelcontextprotocol.io/q
232
232
  }
233
233
  ```
234
234
 
235
+ ### Serwer zdalny (Streamable HTTP)
236
+
237
+ ```json fileName="claude_desktop_config.json"
238
+ {
239
+ "mcpServers": {
240
+ "intlayer-sse": {
241
+ "command": "npx",
242
+ "args": ["-y", "mcp-remote@latest", "https://mcp.intlayer.org"]
243
+ }
244
+ }
245
+ }
246
+ ```
247
+
235
248
  ---
236
249
 
237
250
  ## Korzystanie z serwera MCP przez CLI
@@ -0,0 +1,333 @@
1
+ ---
2
+ createdAt: 2026-05-10
3
+ updatedAt: 2026-05-10
4
+ title: Plugin Sync PO
5
+ description: Synchronizuj słowniki Intlayer z plikami Gettext PO. Zachowaj istniejące i18n, używając Intlayer do zarządzania, tłumaczenia i testowania swoich komunikatów.
6
+ keywords:
7
+ - Intlayer
8
+ - Sync PO
9
+ - Gettext
10
+ - i18n
11
+ - tłumaczenia
12
+ slugs:
13
+ - doc
14
+ - plugin
15
+ - sync-po
16
+ youtubeVideo: https://www.youtube.com/watch?v=MpGMxniDHNg
17
+ history:
18
+ - version: 8.9.4
19
+ date: 2026-05-10
20
+ changes: "Początkowa dokumentacja pluginu Sync PO"
21
+ ---
22
+
23
+ # Sync PO (mosty i18n) - Sync PO ze wsparciem ICU / i18next
24
+
25
+ Używaj Intlayer jako dodatku do swojego istniejącego stosu i18n. Ten plugin utrzymuje synchronizację komunikatów Gettext PO ze słownikami Intlayer, dzięki czemu możesz:
26
+
27
+ - Zachować istniejący przepływ pracy tłumaczeń oparty na plikach PO.
28
+ - Zarządzać i tłumaczyć swoje komunikaty za pomocą Intlayer (CLI, CI, dostawcy, CMS), bez refaktoryzacji aplikacji.
29
+ - Dostarczać samouczki i treści SEO skierowane do każdego ekosystemu, sugerując Intlayer jako warstwę zarządzania plikami PO.
30
+
31
+ Uwagi i aktualny zakres:
32
+
33
+ - Externalizacja do CMS działa dla tłumaczeń i klasycznego tekstu.
34
+ - Brak jeszcze wsparcia dla wstawek, liczb mnogich/ICU lub zaawansowanych funkcji runtime innych bibliotek wewnątrz samych wpisów PO.
35
+ - Edytor wizualny nie jest jeszcze wspierany dla wyjść i18n firm trzecich.
36
+
37
+ ### Kiedy używać tego pluginu
38
+
39
+ - Używasz już plików Gettext PO do swoich tłumaczeń.
40
+ - Chcesz korzystać z wypełniania wspomaganego przez AI, testów w CI i operacji na treści bez zmiany swojego runtime'u renderowania.
41
+
42
+ ## Instalacja
43
+
44
+ ```bash
45
+ pnpm add -D @intlayer/sync-po-plugin
46
+ # lub
47
+ npm i -D @intlayer/sync-po-plugin
48
+ ```
49
+
50
+ ## Pluginy
51
+
52
+ Ten pakiet dostarcza dwa pluginy:
53
+
54
+ - `loadPO`: Ładuje pliki PO do słowników Intlayer.
55
+ - Ten plugin służy do ładowania plików PO ze źródła i zostaną one wczytane do słowników Intlayer. Może on przeszukiwać całą bazę kodu w poszukiwaniu konkretnych plików PO.
56
+ Plugin ten może być używany:
57
+ - jeśli używasz biblioteki i18n, która narzuca określoną lokalizację dla ładowania plików PO, ale chcesz umieścić swoją deklarację treści w dowolnym miejscu w swojej bazie kodu.
58
+ - Może być również używany, jeśli chcesz pobierać komunikaty ze zdalnego źródła (np. CMS, API itp.) i przechowywać je w plikach PO.
59
+
60
+ > Pod maską ten plugin przeszuka całą bazę kodu, znajdzie konkretne pliki PO i załaduje je do słowników Intlayer.
61
+ > Pamiętaj, że ten plugin nie będzie zapisywał wyników i tłumaczeń z powrotem do plików PO.
62
+
63
+ - `syncPO`: Synchronizuje pliki PO ze słownikami Intlayer.
64
+ - Ten plugin służy do synchronizacji plików PO ze słownikami Intlayer. Może on przeszukiwać podaną lokalizację i ładować pliki PO pasujące do wzorca. Plugin ten jest przydatny, jeśli chcesz czerpać korzyści z Intlayer, korzystając jednocześnie z innej biblioteki i18n.
65
+
66
+ ## Używanie obu pluginów
67
+
68
+ ```ts fileName="intlayer.config.ts"
69
+ import { Locales, type IntlayerConfig } from "intlayer";
70
+ import { loadPO, syncPO } from "@intlayer/sync-po-plugin";
71
+
72
+ const config: IntlayerConfig = {
73
+ internationalization: {
74
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
75
+ defaultLocale: Locales.ENGLISH,
76
+ },
77
+
78
+ // Utrzymuj synchronizację aktualnych plików PO ze słownikami Intlayer
79
+ plugins: [
80
+ /**
81
+ * Załaduje wszystkie pliki PO w src pasujące do wzorca {key}.i18n.po
82
+ */
83
+ loadPO({
84
+ source: ({ key }) => `./src/**/${key}.i18n.po`,
85
+ locale: Locales.ENGLISH,
86
+ priority: 1, // Zapewnia, że te pliki PO mają pierwszeństwo przed plikami w `./locales/en/${key}.po`
87
+ }),
88
+ /**
89
+ * Załaduje i zapisze wyniki oraz tłumaczenia z powrotem do plików PO w katalogu locales
90
+ */
91
+ syncPO({
92
+ source: ({ key, locale }) => `./locales/${locale}/${key}.po`,
93
+ priority: 0,
94
+ }),
95
+ ],
96
+ };
97
+
98
+ export default config;
99
+ ```
100
+
101
+ ## Plugin `syncPO`
102
+
103
+ ### Szybki start
104
+
105
+ Dodaj plugin do swojego `intlayer.config.ts` i skieruj go na istniejącą strukturę plików PO.
106
+
107
+ ```ts fileName="intlayer.config.ts"
108
+ import { Locales, type IntlayerConfig } from "intlayer";
109
+ import { syncPO } from "@intlayer/sync-po-plugin";
110
+
111
+ const config: IntlayerConfig = {
112
+ internationalization: {
113
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
114
+ defaultLocale: Locales.ENGLISH,
115
+ },
116
+
117
+ // Utrzymuj synchronizację aktualnych plików PO ze słownikami Intlayer
118
+ plugins: [
119
+ syncPO({
120
+ // Układ według języka i przestrzeni nazw
121
+ source: ({ key, locale }) => `./locales/${locale}/${key}.po`,
122
+ }),
123
+ ],
124
+ };
125
+
126
+ export default config;
127
+ ```
128
+
129
+ Alternatywa: pojedynczy plik na język:
130
+
131
+ ```ts fileName="intlayer.config.ts"
132
+ import { Locales, type IntlayerConfig } from "intlayer";
133
+ import { syncPO } from "@intlayer/sync-po-plugin";
134
+
135
+ const config: IntlayerConfig = {
136
+ internationalization: {
137
+ locales: [Locales.ENGLISH, Locales.FRENCH],
138
+ defaultLocale: Locales.ENGLISH,
139
+ },
140
+ plugins: [
141
+ syncPO({
142
+ source: ({ locale }) => `./locales/${locale}.po`,
143
+ }),
144
+ ],
145
+ };
146
+
147
+ export default config;
148
+ ```
149
+
150
+ #### Jak to działa
151
+
152
+ - Odczyt: plugin wykrywa pliki PO za pomocą konstruktora `source` i ładuje je jako słowniki Intlayer.
153
+ - Zapis: po zbudowaniu i wypełnieniu, zapisuje zlokalizowane pliki PO z powrotem pod tymi samymi ścieżkami (z odpowiednimi nagłówkami Gettext).
154
+ - Automatyczne wypełnianie: plugin deklaruje ścieżkę `autoFill` dla każdego słownika. Uruchomienie `intlayer fill` domyślnie aktualizuje tylko brakujące tłumaczenia w plikach PO.
155
+
156
+ API:
157
+
158
+ ```ts
159
+ syncPO({
160
+ source: ({ key, locale }) => string, // wymagane
161
+ location?: string, // opcjonalna etykieta, domyślnie: "sync-po::path/to/source"
162
+ priority?: number, // opcjonalny priorytet dla rozwiązywania konfliktów, domyślnie: 0
163
+ });
164
+ ```
165
+
166
+ ### Wiele źródeł PO i priorytet
167
+
168
+ Możesz dodać wiele pluginów `syncPO`, aby synchronizować różne źródła PO. Jest to przydatne, gdy masz wiele źródeł tłumaczeń lub różne struktury PO w swoim projekcie.
169
+
170
+ #### System priorytetów
171
+
172
+ Gdy wiele pluginów celuje w ten sam klucz słownika, parametr `priority` decyduje, który plugin ma pierwszeństwo:
173
+
174
+ - Wyższe numery priorytetu wygrywają z niższymi
175
+ - Domyślny priorytet plików `.content` to `0`
176
+ - Domyślny priorytet pluginów to `0`
177
+ - Pluginy o tym samym priorytecie są przetwarzane w kolejności, w jakiej pojawiają się w konfiguracji
178
+
179
+ ```ts fileName="intlayer.config.ts"
180
+ import { Locales, type IntlayerConfig } from "intlayer";
181
+ import { syncPO } from "@intlayer/sync-po-plugin";
182
+
183
+ const config: IntlayerConfig = {
184
+ internationalization: {
185
+ locales: [Locales.ENGLISH, Locales.FRENCH],
186
+ defaultLocale: Locales.ENGLISH,
187
+ },
188
+
189
+ plugins: [
190
+ // Główne źródło PO (najwyższy priorytet)
191
+ syncPO({
192
+ source: ({ key, locale }) => `./locales/${locale}/${key}.po`,
193
+ location: "main-translations",
194
+ priority: 10,
195
+ }),
196
+
197
+ // Zapasowe źródło PO (niższy priorytet)
198
+ syncPO({
199
+ source: ({ locale }) => `./fallback-locales/${locale}.po`,
200
+ location: "fallback-translations",
201
+ priority: 5,
202
+ }),
203
+
204
+ // Starsze źródło PO (najniższy priorytet)
205
+ syncPO({
206
+ source: ({ locale }) => `/my/other/app/legacy/${locale}/messages.po`,
207
+ location: "legacy-translations",
208
+ priority: 1,
209
+ }),
210
+ ],
211
+ };
212
+
213
+ export default config;
214
+ ```
215
+
216
+ ## Plugin Load PO
217
+
218
+ ### Szybki start
219
+
220
+ Dodaj plugin do swojego `intlayer.config.ts`, aby wczytać istniejące pliki PO jako słowniki Intlayer. Ten plugin jest tylko do odczytu (brak zapisu na dysku):
221
+
222
+ ```ts fileName="intlayer.config.ts"
223
+ import { Locales, type IntlayerConfig } from "intlayer";
224
+ import { loadPO } from "@intlayer/sync-po-plugin";
225
+
226
+ const config: IntlayerConfig = {
227
+ internationalization: {
228
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
229
+ defaultLocale: Locales.ENGLISH,
230
+ },
231
+
232
+ plugins: [
233
+ // Wczytaj komunikaty PO znajdujące się w dowolnym miejscu w drzewie źródeł
234
+ loadPO({
235
+ source: ({ key }) => `./src/**/${key}.i18n.po`,
236
+ // Ładuj jeden język na instancję pluginu (domyślnie defaultLocale z konfiguracji)
237
+ locale: Locales.ENGLISH,
238
+ priority: 0,
239
+ }),
240
+ ],
241
+ };
242
+
243
+ export default config;
244
+ ```
245
+
246
+ Alternatywa: układ według języka, nadal tylko do odczytu (ładowany jest tylko wybrany język):
247
+
248
+ ```ts fileName="intlayer.config.ts"
249
+ import { Locales, type IntlayerConfig } from "intlayer";
250
+ import { loadPO } from "@intlayer/sync-po-plugin";
251
+
252
+ const config: IntlayerConfig = {
253
+ internationalization: {
254
+ locales: [Locales.ENGLISH, Locales.FRENCH],
255
+ defaultLocale: Locales.ENGLISH,
256
+ },
257
+ plugins: [
258
+ loadPO({
259
+ // Tylko pliki dla Locales.FRENCH zostaną wczytane z tego wzorca
260
+ source: ({ key, locale }) => `./locales/${locale}/${key}.po`,
261
+ locale: Locales.FRENCH,
262
+ }),
263
+ ],
264
+ };
265
+
266
+ export default config;
267
+ ```
268
+
269
+ ### Jak to działa
270
+
271
+ - Wykrywanie: buduje glob z konstruktora `source` i zbiera pasujące pliki PO.
272
+ - Wczytywanie: ładuje każdy plik PO jako słownik Intlayer z podanym `locale`.
273
+ - Tylko do odczytu: nie zapisuje ani nie formatuje plików wynikowych; użyj `syncPO`, jeśli potrzebujesz synchronizacji w obie strony.
274
+ - Gotowy do automatycznego wypełniania: definiuje ścieżkę `fill`, aby `intlayer content fill` mógł uzupełnić brakujące klucze.
275
+
276
+ ### API
277
+
278
+ ```ts
279
+ loadPO({
280
+ // Buduj ścieżki do plików PO. `locale` jest opcjonalny, jeśli Twoja struktura nie ma segmentu języka
281
+ source: ({ key, locale }) => string,
282
+
283
+ // Docelowy język dla słowników ładowanych przez tę instancję pluginu
284
+ // Domyślnie configuration.internationalization.defaultLocale
285
+ locale?: Locale,
286
+
287
+ // Opcjonalna etykieta do identyfikacji źródła
288
+ location?: string, // domyślnie: "plugin"
289
+
290
+ // Priorytet używany do rozwiązywania konfliktów z innymi źródłami
291
+ priority?: number, // domyślnie: 0
292
+ });
293
+ ```
294
+
295
+ ### Zachowanie i konwencje
296
+
297
+ - Jeśli maska `source` zawiera symbol zastępczy języka, wczytywane są tylko pliki dla wybranego `locale`.
298
+ - Jeśli w masce nie ma segmentu `{key}`, kluczem słownika jest "index".
299
+ - Klucze są wyprowadzane ze ścieżek plików poprzez zastąpienie symbolu zastępczego `{key}` w konstruktorze `source`.
300
+ - Plugin używa tylko wykrytych plików i nie tworzy brakujących języków ani kluczy.
301
+ - Ścieżka `fill` jest wywnioskowana z `source` i używana do aktualizacji brakujących wartości przez CLI, gdy się na to zdecydujesz.
302
+
303
+ ## Rozwiązywanie konfliktów
304
+
305
+ Gdy ten sam klucz tłumaczenia istnieje w wielu źródłach PO:
306
+
307
+ 1. Plugin o najwyższym priorytecie określa ostateczną wartość
308
+ 2. Źródła o niższym priorytecie są używane jako rezerwowe dla brakujących kluczy
309
+ 3. Pozwala to na zachowanie starszych tłumaczeń przy jednoczesnym stopniowym przechodzeniu na nowe struktury
310
+
311
+ ## CLI
312
+
313
+ Zsynchronizowane pliki PO będą traktowane jak inne pliki `.content`. Oznacza to, że wszystkie polecenia intlayer będą dostępne dla zsynchronizowanych plików PO. W tym:
314
+
315
+ - `intlayer content test` aby przetestować, czy brakuje tłumaczeń
316
+ - `intlayer content list` aby wyświetlić listę zsynchronizowanych plików PO
317
+ - `intlayer content fill` aby wypełnić brakujące tłumaczenia
318
+ - `intlayer content push` aby wysłać zsynchronizowane pliki PO
319
+ - `intlayer content pull` aby pobrać zsynchronizowane pliki PO
320
+
321
+ Zobacz [Intlayer CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/index.md) po więcej szczegółów.
322
+
323
+ ## Ograniczenia (aktualne)
324
+
325
+ - Brak wsparcia dla wstawek lub liczb mnogich/ICU przy celowaniu w biblioteki firm trzecich.
326
+ - Edytor wizualny nie jest jeszcze dostępny dla runtime'ów innych niż Intlayer.
327
+ - Tylko synchronizacja PO; formaty katalogów inne niż PO nie są wspierane.
328
+
329
+ ## Dlaczego to ważne
330
+
331
+ - Możemy polecać uznane rozwiązania i18n i pozycjonować Intlayer jako dodatek.
332
+ - Wykorzystujemy ich SEO/słowa kluczowe za pomocą samouczków, które kończą się sugestią użycia Intlayer do zarządzania plikami PO.
333
+ - Rozszerza grono odbiorców z „nowych projektów” na „każdy zespół korzystający już z i18n”.
@@ -30,6 +30,3 @@ Abaixo estão os relatórios detalhados e a documentação técnica de cada fram
30
30
  - [**Vue Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/vue.md)
31
31
  - [**Solid Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/solid.md)
32
32
  - [**Svelte Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/svelte.md)
33
- - [**Vue Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/vue.md)
34
- - [**Solid Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/solid.md)
35
- - [**Svelte Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/svelte.md)