@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.
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +20 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/benchmark/index.md +0 -3
- package/docs/ar/benchmark/nextjs.md +15 -6
- package/docs/ar/benchmark/solid.md +155 -0
- package/docs/ar/benchmark/svelte.md +148 -0
- package/docs/ar/benchmark/tanstack.md +12 -3
- package/docs/ar/benchmark/vue.md +160 -0
- package/docs/ar/configuration.md +16 -12
- package/docs/ar/dictionary/content_file.md +51 -1
- package/docs/ar/mcp_server.md +30 -17
- package/docs/ar/plugins/sync-po.md +333 -0
- package/docs/bn/configuration.md +16 -12
- package/docs/cs/configuration.md +16 -12
- package/docs/de/benchmark/index.md +0 -3
- package/docs/de/benchmark/nextjs.md +15 -6
- package/docs/de/benchmark/solid.md +155 -0
- package/docs/de/benchmark/svelte.md +148 -0
- package/docs/de/benchmark/tanstack.md +12 -3
- package/docs/de/benchmark/vue.md +160 -0
- package/docs/de/configuration.md +16 -12
- package/docs/de/dictionary/content_file.md +52 -2
- package/docs/de/mcp_server.md +29 -16
- package/docs/de/plugins/sync-po.md +332 -0
- package/docs/en/benchmark/nextjs.md +11 -2
- package/docs/en/benchmark/solid.md +22 -4
- package/docs/en/benchmark/svelte.md +17 -5
- package/docs/en/benchmark/tanstack.md +18 -3
- package/docs/en/benchmark/vue.md +17 -11
- package/docs/en/configuration.md +16 -13
- package/docs/en/dictionary/content_file.md +51 -1
- package/docs/en/mcp_server.md +31 -18
- package/docs/en/plugins/sync-po.md +333 -0
- package/docs/en-GB/benchmark/index.md +0 -3
- package/docs/en-GB/benchmark/nextjs.md +15 -6
- package/docs/en-GB/benchmark/solid.md +155 -0
- package/docs/en-GB/benchmark/svelte.md +148 -0
- package/docs/en-GB/benchmark/tanstack.md +12 -3
- package/docs/en-GB/benchmark/vue.md +160 -0
- package/docs/en-GB/configuration.md +15 -11
- package/docs/en-GB/dictionary/content_file.md +51 -1
- package/docs/en-GB/mcp_server.md +31 -18
- package/docs/en-GB/plugins/sync-po.md +333 -0
- package/docs/es/benchmark/index.md +0 -3
- package/docs/es/benchmark/nextjs.md +15 -6
- package/docs/es/benchmark/solid.md +155 -0
- package/docs/es/benchmark/svelte.md +148 -0
- package/docs/es/benchmark/tanstack.md +12 -3
- package/docs/es/benchmark/vue.md +160 -0
- package/docs/es/configuration.md +16 -12
- package/docs/es/dictionary/content_file.md +51 -1
- package/docs/es/mcp_server.md +30 -17
- package/docs/es/plugins/sync-po.md +333 -0
- package/docs/fr/benchmark/index.md +0 -3
- package/docs/fr/benchmark/nextjs.md +15 -6
- package/docs/fr/benchmark/solid.md +155 -0
- package/docs/fr/benchmark/svelte.md +148 -0
- package/docs/fr/benchmark/tanstack.md +12 -3
- package/docs/fr/benchmark/vue.md +160 -0
- package/docs/fr/configuration.md +16 -12
- package/docs/fr/dictionary/content_file.md +51 -1
- package/docs/fr/mcp_server.md +30 -17
- package/docs/fr/plugins/sync-po.md +333 -0
- package/docs/hi/benchmark/nextjs.md +15 -6
- package/docs/hi/benchmark/solid.md +155 -0
- package/docs/hi/benchmark/svelte.md +148 -0
- package/docs/hi/benchmark/tanstack.md +12 -3
- package/docs/hi/benchmark/vue.md +160 -0
- package/docs/hi/configuration.md +16 -12
- package/docs/hi/dictionary/content_file.md +51 -1
- package/docs/hi/mcp_server.md +31 -18
- package/docs/hi/plugins/sync-po.md +333 -0
- package/docs/id/benchmark/index.md +0 -3
- package/docs/id/benchmark/nextjs.md +15 -6
- package/docs/id/benchmark/solid.md +155 -0
- package/docs/id/benchmark/svelte.md +148 -0
- package/docs/id/benchmark/tanstack.md +12 -3
- package/docs/id/benchmark/vue.md +160 -0
- package/docs/id/configuration.md +16 -12
- package/docs/id/dictionary/content_file.md +51 -1
- package/docs/id/mcp_server.md +30 -17
- package/docs/id/plugins/sync-po.md +333 -0
- package/docs/it/benchmark/index.md +1 -4
- package/docs/it/benchmark/nextjs.md +15 -6
- package/docs/it/benchmark/solid.md +155 -0
- package/docs/it/benchmark/svelte.md +148 -0
- package/docs/it/benchmark/tanstack.md +12 -3
- package/docs/it/benchmark/vue.md +160 -0
- package/docs/it/configuration.md +16 -12
- package/docs/it/dictionary/content_file.md +51 -1
- package/docs/it/mcp_server.md +30 -17
- package/docs/it/plugins/sync-po.md +333 -0
- package/docs/ja/benchmark/index.md +5 -5
- package/docs/ja/benchmark/nextjs.md +15 -6
- package/docs/ja/benchmark/solid.md +155 -0
- package/docs/ja/benchmark/svelte.md +148 -0
- package/docs/ja/benchmark/tanstack.md +12 -3
- package/docs/ja/benchmark/vue.md +160 -0
- package/docs/ja/configuration.md +16 -12
- package/docs/ja/dictionary/content_file.md +50 -2
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +4 -3
- package/docs/ja/mcp_server.md +29 -16
- package/docs/ja/plugins/sync-po.md +333 -0
- package/docs/ko/benchmark/nextjs.md +15 -6
- package/docs/ko/benchmark/solid.md +155 -0
- package/docs/ko/benchmark/svelte.md +148 -0
- package/docs/ko/benchmark/tanstack.md +12 -3
- package/docs/ko/benchmark/vue.md +160 -0
- package/docs/ko/configuration.md +16 -12
- package/docs/ko/dictionary/content_file.md +51 -1
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +3 -2
- package/docs/ko/mcp_server.md +31 -18
- package/docs/ko/plugins/sync-po.md +333 -0
- package/docs/nl/configuration.md +16 -12
- package/docs/pl/benchmark/index.md +0 -3
- package/docs/pl/benchmark/nextjs.md +15 -6
- package/docs/pl/benchmark/solid.md +155 -0
- package/docs/pl/benchmark/svelte.md +148 -0
- package/docs/pl/benchmark/tanstack.md +12 -3
- package/docs/pl/benchmark/vue.md +160 -0
- package/docs/pl/configuration.md +16 -12
- package/docs/pl/dictionary/content_file.md +51 -1
- package/docs/pl/mcp_server.md +30 -17
- package/docs/pl/plugins/sync-po.md +333 -0
- package/docs/pt/benchmark/index.md +0 -3
- package/docs/pt/benchmark/nextjs.md +16 -7
- package/docs/pt/benchmark/solid.md +155 -0
- package/docs/pt/benchmark/svelte.md +148 -0
- package/docs/pt/benchmark/tanstack.md +13 -4
- package/docs/pt/benchmark/vue.md +160 -0
- package/docs/pt/configuration.md +16 -12
- package/docs/pt/dictionary/content_file.md +51 -1
- package/docs/pt/mcp_server.md +30 -17
- package/docs/pt/plugins/sync-po.md +333 -0
- package/docs/ru/benchmark/nextjs.md +15 -6
- package/docs/ru/benchmark/solid.md +155 -0
- package/docs/ru/benchmark/svelte.md +148 -0
- package/docs/ru/benchmark/tanstack.md +12 -3
- package/docs/ru/benchmark/vue.md +160 -0
- package/docs/ru/configuration.md +16 -12
- package/docs/ru/dictionary/content_file.md +52 -2
- package/docs/ru/mcp_server.md +30 -17
- package/docs/ru/plugins/sync-po.md +333 -0
- package/docs/tr/benchmark/index.md +0 -3
- package/docs/tr/benchmark/nextjs.md +15 -6
- package/docs/tr/benchmark/solid.md +155 -0
- package/docs/tr/benchmark/svelte.md +148 -0
- package/docs/tr/benchmark/tanstack.md +12 -3
- package/docs/tr/benchmark/vue.md +160 -0
- package/docs/tr/configuration.md +16 -12
- package/docs/tr/dictionary/content_file.md +51 -1
- package/docs/tr/mcp_server.md +31 -18
- package/docs/tr/plugins/sync-po.md +333 -0
- package/docs/uk/benchmark/nextjs.md +15 -6
- package/docs/uk/benchmark/solid.md +155 -0
- package/docs/uk/benchmark/svelte.md +148 -0
- package/docs/uk/benchmark/tanstack.md +12 -3
- package/docs/uk/benchmark/vue.md +160 -0
- package/docs/uk/configuration.md +16 -12
- package/docs/uk/dictionary/content_file.md +51 -1
- package/docs/uk/mcp_server.md +29 -16
- package/docs/uk/plugins/sync-po.md +333 -0
- package/docs/ur/configuration.md +16 -12
- package/docs/vi/benchmark/index.md +0 -3
- package/docs/vi/benchmark/nextjs.md +15 -6
- package/docs/vi/benchmark/solid.md +155 -0
- package/docs/vi/benchmark/svelte.md +148 -0
- package/docs/vi/benchmark/tanstack.md +12 -3
- package/docs/vi/benchmark/vue.md +160 -0
- package/docs/vi/configuration.md +16 -12
- package/docs/vi/dictionary/content_file.md +51 -1
- package/docs/vi/intlayer_with_nextjs_15.md +10 -57
- package/docs/vi/mcp_server.md +30 -17
- package/docs/vi/plugins/sync-po.md +333 -0
- package/docs/zh/benchmark/nextjs.md +15 -6
- package/docs/zh/benchmark/solid.md +155 -0
- package/docs/zh/benchmark/svelte.md +148 -0
- package/docs/zh/benchmark/tanstack.md +12 -3
- package/docs/zh/benchmark/vue.md +160 -0
- package/docs/zh/configuration.md +16 -12
- package/docs/zh/dictionary/content_file.md +51 -3
- package/docs/zh/mcp_server.md +31 -18
- package/docs/zh/plugins/sync-po.md +333 -0
- package/frequent_questions/ar/intlayerNode.md +3 -3
- package/frequent_questions/de/intlayerNode.md +3 -3
- package/frequent_questions/en/intlayerNode.md +3 -3
- package/frequent_questions/en-GB/intlayerNode.md +3 -3
- package/frequent_questions/es/intlayerNode.md +3 -3
- package/frequent_questions/fr/intlayerNode.md +3 -3
- package/frequent_questions/hi/intlayerNode.md +3 -3
- package/frequent_questions/id/intlayerNode.md +3 -3
- package/frequent_questions/it/intlayerNode.md +3 -3
- package/frequent_questions/ja/intlayerNode.md +3 -3
- package/frequent_questions/ko/intlayerNode.md +3 -3
- package/frequent_questions/pl/intlayerNode.md +3 -3
- package/frequent_questions/pt/intlayerNode.md +3 -3
- package/frequent_questions/ru/intlayerNode.md +3 -3
- package/frequent_questions/tr/intlayerNode.md +3 -3
- package/frequent_questions/uk/intlayerNode.md +3 -3
- package/frequent_questions/vi/intlayerNode.md +3 -3
- package/frequent_questions/zh/intlayerNode.md +3 -3
- package/package.json +8 -8
- package/src/generated/docs.entry.ts +20 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-02-07
|
|
3
|
-
updatedAt: 2026-
|
|
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ą
|
package/docs/pl/mcp_server.md
CHANGED
|
@@ -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
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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,
|
|
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 (
|
|
134
|
+
### Serwer zdalny (Streamable HTTP)
|
|
135
135
|
|
|
136
|
-
Aby połączyć się ze zdalnym serwerem Intlayer MCP za pomocą Server-Sent Events (
|
|
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
|
-
"
|
|
143
|
-
"
|
|
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 (
|
|
175
|
+
### Serwer zdalny (Streamable HTTP)
|
|
176
176
|
|
|
177
|
-
Aby połączyć się ze zdalnym serwerem Intlayer MCP za pomocą Server-Sent Events (
|
|
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
|
-
"
|
|
184
|
-
"
|
|
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 (
|
|
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)
|