@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: File di Contenuto
5
5
  description: Scopri come personalizzare le estensioni per i tuoi file di dichiarazione dei contenuti. Segui questa documentazione per implementare condizioni in modo efficiente nel tuo progetto.
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: "Aggiungi il tipo di nodo di contenuto `plural`"
15
18
  - version: 8.0.0
16
19
  date: 2026-01-28
17
20
  changes: "Aggiunto tipo di nodo contenuto `html`"
@@ -63,6 +66,7 @@ import { type ReactNode } from "react";
63
66
  import {
64
67
  t,
65
68
  enu,
69
+ plural,
66
70
  cond,
67
71
  nest,
68
72
  md,
@@ -82,6 +86,7 @@ interface Content {
82
86
  };
83
87
  multilingualContent: string;
84
88
  quantityContent: string;
89
+ pluralContent: string;
85
90
  conditionalContent: string;
86
91
  markdownContent: never;
87
92
  htmlContent: never;
@@ -118,6 +123,10 @@ export default {
118
123
  ">5": "Alcune macchine",
119
124
  ">19": "Molte macchine",
120
125
  }),
126
+ pluralContent: plural({
127
+ one: "One car",
128
+ other: "{{count}} cars",
129
+ }),
121
130
  conditionalContent: cond({
122
131
  true: "La validazione è abilitata",
123
132
  false: "La validazione è disabilitata",
@@ -172,6 +181,13 @@ export default {
172
181
  ">5": "Alcune auto",
173
182
  ">19": "Molte auto",
174
183
  },
184
+ "pluralContent": {
185
+ "nodeType": "plural",
186
+ "plural": {
187
+ "one": "One car",
188
+ "other": "{{count}} cars",
189
+ },
190
+ },
175
191
  },
176
192
  "conditionalContent": {
177
193
  "nodeType": "condizione",
@@ -219,6 +235,7 @@ I nodi di contenuto sono i mattoni fondamentali del contenuto del dizionario. Po
219
235
  - **Valori primitivi**: stringhe, numeri, booleani, null, undefined
220
236
  - **Nodi tipizzati**: Tipi di contenuto speciali come traduzioni, condizioni, markdown, ecc.
221
237
  - **Funzioni**: Contenuto dinamico che può essere valutato a runtime [vedi Recupero Funzioni](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/function_fetching.md)
238
+ - **Contenuto Plurale**: Vedere Contenuto Plurale [Vedere Contenuto Plurale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/plural.md)
222
239
  - **Contenuto annidato**: Riferimenti ad altri dizionari
223
240
 
224
241
  #### Tipi di Contenuto
@@ -544,6 +561,8 @@ multilingualContent: t({
544
561
  });
545
562
  ```
546
563
 
564
+ > Vedere [Contenuto di Traduzione (`t`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/translation.md) per ulteriori informazioni.
565
+
547
566
  ### Contenuto Condizionale (`cond`)
548
567
 
549
568
  Contenuto che cambia in base a condizioni booleane:
@@ -557,6 +576,8 @@ conditionalContent: cond({
557
576
  });
558
577
  ```
559
578
 
579
+ > Vedere [Contenuto Condizionale (`cond`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/condition.md) per ulteriori informazioni.
580
+
560
581
  ### Contenuto Enumerato (`enu`)
561
582
 
562
583
  Contenuto che varia in base a valori enumerati:
@@ -571,6 +592,23 @@ statusContent: enu({
571
592
  });
572
593
  ```
573
594
 
595
+ > Vedere [Contenuto Enumerato (`enu`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/enumeration.md) per ulteriori informazioni.
596
+
597
+ ### Contenuto Plurale (`plural`)
598
+
599
+ Contenuto che varia in base alle regole del plurale:
600
+
601
+ ```typescript
602
+ import { plural } from "intlayer";
603
+
604
+ pluralContent: plural({
605
+ one: "One car",
606
+ other: "{{count}} cars",
607
+ });
608
+ ```
609
+
610
+ > Vedere [Contenuto Plurale Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/plural.md) per ulteriori informazioni.
611
+
574
612
  ### Contenuto di Inserimento (`insert`)
575
613
 
576
614
  Contenuto che può essere inserito in altri contenuti:
@@ -581,6 +619,8 @@ import { insert } from "intlayer";
581
619
  insertionContent: insert("Questo testo può essere inserito ovunque");
582
620
  ```
583
621
 
622
+ > Vedere [Contenuto di Inserimento (`insert`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/insertion.md) per ulteriori informazioni.
623
+
584
624
  ### Contenuto Nidificato (`nest`)
585
625
 
586
626
  Riferimenti ad altri dizionari:
@@ -591,6 +631,8 @@ import { nest } from "intlayer";
591
631
  nestedContent: nest("about-page");
592
632
  ```
593
633
 
634
+ > Vedere [Contenuto Nidificato (`nest`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/nesting.md) per ulteriori informazioni.
635
+
594
636
  ### Contenuto Markdown (`md`)
595
637
 
596
638
  Contenuto di testo ricco in formato Markdown:
@@ -603,6 +645,8 @@ markdownContent: md(
603
645
  );
604
646
  ```
605
647
 
648
+ > Vedere [Contenuto Markdown (`md`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/markdown.md) per ulteriori informazioni.
649
+
606
650
  ### Contenuto HTML (`html`)
607
651
 
608
652
  Contenuto HTML ricco che può usare tag standard o componenti personalizzati:
@@ -620,6 +664,8 @@ localizedHtmlContent: t({
620
664
  });
621
665
  ```
622
666
 
667
+ > Vedere [Contenuto HTML (`html`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/html.md) per ulteriori informazioni.
668
+
623
669
  ### Contenuto per Genere (`gender`)
624
670
 
625
671
  Contenuto che varia in base al genere:
@@ -634,6 +680,8 @@ genderContent: gender({
634
680
  });
635
681
  ```
636
682
 
683
+ > Vedere [Contenuto per Genere (`gender`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/gender.md) per ulteriori informazioni.
684
+
637
685
  ### Contenuto da File (`file`)
638
686
 
639
687
  Riferimenti a file esterni:
@@ -644,6 +692,8 @@ import { file } from "intlayer";
644
692
  fileContent: file("./path/to/content.txt");
645
693
  ```
646
694
 
695
+ > Vedere [Contenuto da File (`file`) Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/file.md) per ulteriori informazioni.
696
+
647
697
  ## Creazione di File di Contenuto
648
698
 
649
699
  ### Struttura Base di un File di Contenuto
@@ -23,7 +23,7 @@ history:
23
23
  changes: "Aggiunta configurazione di Claude Desktop"
24
24
  - version: 5.5.12
25
25
  date: 2025-07-10
26
- changes: "Aggiunto trasporto SSE e server remoto"
26
+ changes: "Aggiunto trasporto Streamable HTTP e server remoto"
27
27
  - version: 5.5.10
28
28
  date: 2025-06-29
29
29
  changes: "Inizializzazione della cronologia"
@@ -51,12 +51,12 @@ Abilitando il Server MCP di Intlayer nel tuo IDE, sblocchi:
51
51
 
52
52
  > Visualizza l'elenco completo dei comandi e delle opzioni nella [documentazione CLI di Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/index.md).
53
53
 
54
- ## Server locale (stdio) vs Server remoto (SSE)
54
+ ## Server locale (stdio) vs Server remoto (Streamable HTTP)
55
55
 
56
56
  Il server MCP può essere utilizzato in due modi:
57
57
 
58
58
  - Server locale (stdio)
59
- - Server remoto (SSE)
59
+ - Server remoto (Streamable HTTP)
60
60
 
61
61
  ### Server locale (stdio) (consigliato)
62
62
 
@@ -64,7 +64,7 @@ Intlayer fornisce un pacchetto NPM che può essere installato localmente sulla t
64
64
 
65
65
  Questo server è il modo consigliato per utilizzare il server MCP, in quanto integra tutte le funzionalità del server MCP, inclusi gli strumenti CLI.
66
66
 
67
- ### Server remoto (SSE)
67
+ ### Server remoto (Streamable HTTP)
68
68
 
69
69
  Il server MCP può essere utilizzato anche da remoto, utilizzando il metodo di trasporto SSE. Questo server è ospitato da Intlayer ed è disponibile all'indirizzo https://mcp.intlayer.org. Questo server è accessibile pubblicamente, senza alcuna autenticazione, ed è gratuito.
70
70
 
@@ -97,7 +97,7 @@ bun x intlayer init mcp
97
97
  Questo comando permetterà di:
98
98
 
99
99
  1. Chiederti quale piattaforma stai utilizzando (Cursor, VS Code, Claude Desktop, ecc.).
100
- 2. Chiederti quale metodo di trasporto vuoi utilizzare (Server locale (stdio) o Server remoto (SSE)).
100
+ 2. Chiederti quale metodo di trasporto vuoi utilizzare (Server locale (stdio) o Server remoto (Streamable HTTP)).
101
101
  3. Aggiornare automaticamente il tuo file di configurazione (ad esempio, `.cursor/mcp.json`, `.vscode/mcp.json` o la configurazione globale di Claude Desktop).
102
102
 
103
103
  ---
@@ -107,7 +107,7 @@ Questo comando permetterà di:
107
107
  1. Apri la tavolozza dei comandi (Ctrl+Shift+P o Cmd+Shift+P).
108
108
  2. Digita `Intlayer: Setup AI Agent Skills`
109
109
  3. Scegli la piattaforma che utilizzi (es. `VS Code`, `Cursor`, `Windsurf`, `OpenCode`, `Claude Code`, `GitHub Copilot Workspace`, ecc.).
110
- 4. Scegli l'MCP da installare (stdio, SSE)
110
+ 4. Scegli l'MCP da installare (stdio, Streamable HTTP)
111
111
  5. Premi Invio.
112
112
 
113
113
  ---
@@ -131,16 +131,16 @@ Nella radice del tuo progetto, aggiungi il seguente file di configurazione `.cur
131
131
  }
132
132
  ```
133
133
 
134
- ### Server remoto (SSE)
134
+ ### Server remoto (Streamable HTTP)
135
135
 
136
- Per connettersi a un server MCP Intlayer remoto utilizzando Server-Sent Events (SSE), puoi configurare il tuo client MCP per connettersi al servizio ospitato.
136
+ Per connettersi a un server MCP Intlayer remoto utilizzando Server-Sent Events (Streamable HTTP), puoi configurare il tuo client MCP per connettersi al servizio ospitato.
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 @@ Crea un file `.vscode/mcp.json` nella radice del tuo progetto:
172
172
  }
173
173
  ```
174
174
 
175
- ### Server remoto (SSE)
175
+ ### Server remoto (Streamable HTTP)
176
176
 
177
- Per connettersi a un server MCP Intlayer remoto utilizzando Server-Sent Events (SSE), puoi configurare il tuo client MCP per connettersi al servizio ospitato.
177
+ Per connettersi a un server MCP Intlayer remoto utilizzando Server-Sent Events (Streamable HTTP), puoi configurare il tuo client MCP per connettersi al servizio ospitato.
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 @@ Per connettersi a un server MCP Intlayer remoto utilizzando Server-Sent Events (
191
191
 
192
192
  ## Configurazione in ChatGPT
193
193
 
194
- ### Server remoto (SSE)
194
+ ### Server remoto (Streamable HTTP)
195
195
 
196
196
  Segui la [documentazione ufficiale](https://platform.openai.com/docs/mcp#test-and-connect-your-mcp-server) per configurare il server MCP in ChatGPT.
197
197
 
@@ -232,6 +232,19 @@ Percorso del file di configurazione:
232
232
  }
233
233
  ```
234
234
 
235
+ ### Server remoto (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
  ## Utilizzo del Server MCP tramite CLI
@@ -0,0 +1,333 @@
1
+ ---
2
+ createdAt: 2026-05-10
3
+ updatedAt: 2026-05-10
4
+ title: Plugin Sync PO
5
+ description: Sincronizza i dizionari Intlayer con i file Gettext PO. Mantieni la tua i18n esistente utilizzando Intlayer per gestire, tradurre e testare i tuoi messaggi.
6
+ keywords:
7
+ - Intlayer
8
+ - Sync PO
9
+ - Gettext
10
+ - i18n
11
+ - traduzioni
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: "Documentazione iniziale del plugin Sync PO"
21
+ ---
22
+
23
+ # Sync PO (ponti i18n) - Sync PO con supporto ICU / i18next
24
+
25
+ Usa Intlayer come componente aggiuntivo per il tuo stack i18n esistente. Questo plugin mantiene i tuoi messaggi Gettext PO sincronizzati con i dizionari Intlayer in modo da poter:
26
+
27
+ - Mantenere il tuo attuale workflow di traduzione basato su PO.
28
+ - Gestire e tradurre i tuoi messaggi con Intlayer (CLI, CI, provider, CMS), senza rifattorizzare la tua app.
29
+ - Distribuire tutorial e contenuti SEO mirati a ciascun ecosistema, suggerendo Intlayer come livello di gestione PO.
30
+
31
+ Note e ambito attuale:
32
+
33
+ - L'esternalizzazione al CMS funziona per le traduzioni e il testo classico.
34
+ - Non c'è ancora supporto per inserimenti, plurali/ICU o funzionalità avanzate di runtime di altre librerie all'interno delle voci PO stesse.
35
+ - L'editor visuale non è ancora supportato per gli output i18n di terze parti.
36
+
37
+ ### Quando usare questo plugin
38
+
39
+ - Usi già i file Gettext PO per le tue traduzioni.
40
+ - Desideri il riempimento assistito da IA, i test in CI e le operazioni sui contenuti senza modificare il runtime di rendering.
41
+
42
+ ## Installazione
43
+
44
+ ```bash
45
+ pnpm add -D @intlayer/sync-po-plugin
46
+ # oppure
47
+ npm i -D @intlayer/sync-po-plugin
48
+ ```
49
+
50
+ ## Plugin
51
+
52
+ Questo pacchetto fornisce due plugin:
53
+
54
+ - `loadPO`: Carica i file PO nei dizionari Intlayer.
55
+ - Questo plugin viene utilizzato per caricare file PO da una sorgente e verranno inseriti nei dizionari Intlayer. Può scansionare l'intera base di codice e cercare file PO specifici.
56
+ Questo plugin può essere utilizzato:
57
+ - se utilizzi una libreria i18n che impone una posizione specifica per il caricamento dei tuoi file PO, ma vuoi posizionare la tua dichiarazione di contenuto dove preferisci nella tua base di codice.
58
+ - Può essere utilizzato anche se vuoi recuperare i tuoi messaggi da una sorgente remota (es: un CMS, un'API, ecc.) e memorizzare i tuoi messaggi in file PO.
59
+
60
+ > Sotto il cofano, questo plugin scansionerà tutta la base di codice, cercherà file PO specifici e li caricherà nei dizionari Intlayer.
61
+ > Nota che questo plugin non scriverà l'output e le traduzioni nei file PO.
62
+
63
+ - `syncPO`: Sincronizza i file PO con i dizionari Intlayer.
64
+ - Questo plugin viene utilizzato per sincronizzare i file PO con i dizionari Intlayer. Può scansionare la posizione specificata e caricare i PO che corrispondono al pattern per file PO specifici. Questo plugin è utile se vuoi ottenere i vantaggi di Intlayer utilizzando un'altra libreria i18n.
65
+
66
+ ## Utilizzo di entrambi i plugin
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
+ // Mantieni i tuoi attuali file PO sincronizzati con i dizionari Intlayer
79
+ plugins: [
80
+ /**
81
+ * Caricherà tutti i file PO in src che corrispondono al pattern {key}.i18n.po
82
+ */
83
+ loadPO({
84
+ source: ({ key }) => `./src/**/${key}.i18n.po`,
85
+ locale: Locales.ENGLISH,
86
+ priority: 1, // Assicura che questi file PO abbiano la precedenza sui file in `./locales/en/${key}.po`
87
+ }),
88
+ /**
89
+ * Caricherà e scriverà l'output e le traduzioni nei file PO nella directory 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
+ ### Avvio rapido
104
+
105
+ Aggiungi il plugin al tuo `intlayer.config.ts` e puntalo alla tua struttura PO esistente.
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
+ // Mantieni i tuoi attuali file PO sincronizzati con i dizionari Intlayer
118
+ plugins: [
119
+ syncPO({
120
+ // Layout per lingua e per namespace
121
+ source: ({ key, locale }) => `./locales/${locale}/${key}.po`,
122
+ }),
123
+ ],
124
+ };
125
+
126
+ export default config;
127
+ ```
128
+
129
+ Alternativa: file singolo per lingua:
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
+ #### Come funziona
151
+
152
+ - Lettura: il plugin scopre i file PO dal tuo costruttore `source` e li carica come dizionari Intlayer.
153
+ - Scrittura: dopo le build e i riempimenti, scrive i PO localizzati negli stessi percorsi (con gli header Gettext appropriati).
154
+ - Riempimento automatico: il plugin dichiara un percorso `autoFill` per ogni dizionario. L'esecuzione di `intlayer fill` aggiorna per impostazione predefinita solo le traduzioni mancanti nei tuoi file PO.
155
+
156
+ API:
157
+
158
+ ```ts
159
+ syncPO({
160
+ source: ({ key, locale }) => string, // richiesto
161
+ location?: string, // etichetta opzionale, default: "sync-po::path/to/source"
162
+ priority?: number, // priorità opzionale per la risoluzione dei conflitti, default: 0
163
+ });
164
+ ```
165
+
166
+ ### Sorgenti PO multiple e priorità
167
+
168
+ Puoi aggiungere più plugin `syncPO` per sincronizzare diverse sorgenti PO. Questo è utile quando hai più sorgenti di traduzione o diverse strutture PO nel tuo progetto.
169
+
170
+ #### Sistema di priorità
171
+
172
+ Quando più plugin puntano alla stessa chiave del dizionario, il parametro `priority` determina quale plugin ha la precedenza:
173
+
174
+ - I numeri di priorità più alti vincono su quelli più bassi
175
+ - La priorità predefinita dei file `.content` è `0`
176
+ - La priorità predefinita dei plugin è `0`
177
+ - I plugin con la stessa priorità vengono elaborati nell'ordine in cui appaiono nella configurazione
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
+ // Sorgente PO primaria (priorità massima)
191
+ syncPO({
192
+ source: ({ key, locale }) => `./locales/${locale}/${key}.po`,
193
+ location: "main-translations",
194
+ priority: 10,
195
+ }),
196
+
197
+ // Sorgente PO di fallback (priorità inferiore)
198
+ syncPO({
199
+ source: ({ locale }) => `./fallback-locales/${locale}.po`,
200
+ location: "fallback-translations",
201
+ priority: 5,
202
+ }),
203
+
204
+ // Sorgente PO legacy (priorità minima)
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
+ ### Avvio rapido
219
+
220
+ Aggiungi il plugin al tuo `intlayer.config.ts` per ingerire file PO esistenti come dizionari Intlayer. Questo plugin è di sola lettura (nessuna scrittura su disco):
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
+ // Ingerisci i messaggi PO situati ovunque nel tuo albero dei sorgenti
234
+ loadPO({
235
+ source: ({ key }) => `./src/**/${key}.i18n.po`,
236
+ // Carica una singola lingua per istanza di plugin (impostata di default sulla defaultLocale della configurazione)
237
+ locale: Locales.ENGLISH,
238
+ priority: 0,
239
+ }),
240
+ ],
241
+ };
242
+
243
+ export default config;
244
+ ```
245
+
246
+ Alternativa: layout per lingua, ancora di sola lettura (viene caricata solo la lingua selezionata):
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
+ // Solo i file per Locales.FRENCH verranno caricati da questo pattern
260
+ source: ({ key, locale }) => `./locales/${locale}/${key}.po`,
261
+ locale: Locales.FRENCH,
262
+ }),
263
+ ],
264
+ };
265
+
266
+ export default config;
267
+ ```
268
+
269
+ ### Come funziona
270
+
271
+ - Scoperta: costruisce un glob dal tuo costruttore `source` e raccoglie i file PO corrispondenti.
272
+ - Ingestione: carica ogni file PO come dizionario Intlayer con la `locale` fornita.
273
+ - Sola lettura: non scrive né formatta i file di output; usa `syncPO` se hai bisogno della sincronizzazione round-trip.
274
+ - Pronto per il riempimento automatico: definisce un percorso `fill` in modo che `intlayer content fill` possa popolare le chiavi mancanti.
275
+
276
+ ### API
277
+
278
+ ```ts
279
+ loadPO({
280
+ // Costruisce i percorsi per i tuoi PO. `locale` è opzionale se la tua struttura non ha un segmento per la lingua
281
+ source: ({ key, locale }) => string,
282
+
283
+ // Lingua di destinazione per i dizionari caricati da questa istanza di plugin
284
+ // Di default configuration.internationalization.defaultLocale
285
+ locale?: Locale,
286
+
287
+ // Etichetta opzionale per identificare la sorgente
288
+ location?: string, // default: "plugin"
289
+
290
+ // Priorità utilizzata per la risoluzione dei conflitti con altre sorgenti
291
+ priority?: number, // default: 0
292
+ });
293
+ ```
294
+
295
+ ### Comportamento e convenzioni
296
+
297
+ - Se la tua maschera `source` include un segnaposto per la lingua, vengono ingeriti solo i file per la `locale` selezionata.
298
+ - Se non c'è un segmento `{key}` nella tua maschera, la chiave del dizionario è "index".
299
+ - Le chiavi sono derivate dai percorsi dei file sostituendo il segnaposto `{key}` nel tuo costruttore `source`.
300
+ - Il plugin utilizza solo i file scoperti e non fabbrica lingue o chiavi mancanti.
301
+ - Il percorso `fill` è dedotto dalla tua `source` e utilizzato per aggiornare i valori mancanti tramite CLI quando acconsenti.
302
+
303
+ ## Risoluzione dei conflitti
304
+
305
+ Quando la stessa chiave di traduzione esiste in più sorgenti PO:
306
+
307
+ 1. Il plugin con la priorità più alta determina il valore finale
308
+ 2. Le sorgenti con priorità inferiore vengono utilizzate come fallback per le chiavi mancanti
309
+ 3. Questo ti consente di mantenere le traduzioni legacy mentre migri gradualmente verso nuove strutture
310
+
311
+ ## CLI
312
+
313
+ I file PO sincronizzati saranno considerati come gli altri file `.content`. Ciò significa che tutti i comandi intlayer saranno disponibili per i file PO sincronizzati. Inclusi:
314
+
315
+ - `intlayer content test` per testare se mancano traduzioni
316
+ - `intlayer content list` per elencare i file PO sincronizzati
317
+ - `intlayer content fill` per riempire le traduzioni mancanti
318
+ - `intlayer content push` per inviare i file PO sincronizzati
319
+ - `intlayer content pull` per recuperare i file PO sincronizzati
320
+
321
+ Vedi [Intlayer CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/index.md) per maggiori dettagli.
322
+
323
+ ## Limitazioni (attuali)
324
+
325
+ - Nessun supporto per inserimenti o plurali/ICU quando si puntano librerie di terze parti.
326
+ - L'editor visuale non è ancora disponibile per runtime diversi da Intlayer.
327
+ - Solo sincronizzazione PO; i formati di catalogo non-PO non sono supportati.
328
+
329
+ ## Perché è importante
330
+
331
+ - Possiamo raccomandare soluzioni i18n consolidate e posizionare Intlayer come componente aggiuntivo.
332
+ - Sfruttiamo la loro SEO/parole chiave con tutorial che terminano suggerendo Intlayer per gestire i PO.
333
+ - Espande il pubblico potenziale dai "nuovi progetti" a "qualsiasi team che utilizzi già i18n".
@@ -25,8 +25,8 @@ Benchmark Bloom は、複数の React フレームワークとロード戦略に
25
25
 
26
26
  各フレームワークの詳細レポートと技術ドキュメントは次のとおりです。
27
27
 
28
- - [**Next.js Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/nextjs.md)
29
- - [**TanStack Start Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/tanstack.md)
30
- - [**Vue Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/vue.md)
31
- - [**Solid Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/solid.md)
32
- - [**Svelte Benchmark Report**](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/benchmark/svelte.md)
28
+ - [**Next.js ベンチマークレポート**](./nextjs.md)
29
+ - [**TanStack Start ベンチマークレポート**](./tanstack.md)
30
+ - [**Vue ベンチマークレポート**](./vue.md)
31
+ - [**Solid ベンチマークレポート**](./solid.md)
32
+ - [**Svelte ベンチマークレポート**](./svelte.md)