@intlayer/docs 7.0.0-canary.2 → 7.0.0
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/common.cjs.map +1 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/types/common.d.ts +5 -0
- package/dist/types/common.d.ts.map +1 -1
- package/docs/ar/configuration.md +0 -24
- package/docs/ar/intlayer_with_nextjs_16.md +1652 -0
- package/docs/ar/releases/v7.md +485 -0
- package/docs/de/configuration.md +0 -24
- package/docs/de/intlayer_with_nextjs_16.md +1662 -0
- package/docs/de/releases/v7.md +502 -0
- package/docs/en/autoFill.md +3 -1
- package/docs/en/configuration.md +53 -58
- package/docs/en/intlayer_with_nextjs_15.md +5 -2
- package/docs/en/intlayer_with_nextjs_16.md +4 -4
- package/docs/en/releases/v7.md +142 -2
- package/docs/en-GB/configuration.md +9 -30
- package/docs/en-GB/intlayer_with_nextjs_16.md +1642 -0
- package/docs/en-GB/releases/v7.md +485 -0
- package/docs/es/configuration.md +0 -24
- package/docs/es/intlayer_with_nextjs_16.md +1670 -0
- package/docs/es/releases/v7.md +502 -0
- package/docs/fr/configuration.md +0 -24
- package/docs/fr/intlayer_with_nextjs_16.md +1692 -0
- package/docs/fr/releases/v7.md +503 -0
- package/docs/hi/configuration.md +0 -24
- package/docs/hi/intlayer_with_nextjs_16.md +1618 -0
- package/docs/hi/releases/v7.md +485 -0
- package/docs/id/intlayer_with_nextjs_16.md +1604 -0
- package/docs/id/releases/v7.md +502 -0
- package/docs/it/configuration.md +0 -24
- package/docs/it/intlayer_with_nextjs_16.md +1600 -0
- package/docs/it/releases/v7.md +504 -0
- package/docs/ja/configuration.md +0 -24
- package/docs/ja/intlayer_CMS.md +0 -9
- package/docs/ja/intlayer_with_nextjs_16.md +1788 -0
- package/docs/ja/releases/v7.md +503 -0
- package/docs/ko/configuration.md +0 -24
- package/docs/ko/intlayer_with_nextjs_16.md +1641 -0
- package/docs/ko/releases/v7.md +503 -0
- package/docs/pl/intlayer_with_nextjs_16.md +1645 -0
- package/docs/pl/releases/v7.md +485 -0
- package/docs/pt/configuration.md +0 -24
- package/docs/pt/intlayer_with_nextjs_16.md +1646 -0
- package/docs/pt/introduction.md +0 -15
- package/docs/pt/releases/v7.md +485 -0
- package/docs/ru/configuration.md +0 -24
- package/docs/ru/intlayer_with_nextjs_16.md +1610 -0
- package/docs/ru/releases/v7.md +485 -0
- package/docs/tr/configuration.md +0 -24
- package/docs/tr/intlayer_with_nextjs_16.md +1599 -0
- package/docs/tr/releases/v7.md +485 -0
- package/docs/vi/intlayer_with_nextjs_16.md +1597 -0
- package/docs/vi/releases/v7.md +485 -0
- package/docs/zh/configuration.md +0 -24
- package/docs/zh/intlayer_CMS.md +0 -23
- package/docs/zh/intlayer_with_nextjs_16.md +1628 -0
- package/docs/zh/releases/v7.md +486 -0
- package/package.json +14 -14
- package/src/common.ts +5 -0
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-22
|
|
3
|
+
updatedAt: 2025-09-23
|
|
4
|
+
title: Nowy Intlayer v7 - Co nowego?
|
|
5
|
+
description: Odkryj, co nowego w Intlayer v7. Znaczące ulepszenia wydajności, doświadczenia deweloperskiego oraz nowe funkcje usprawniające proces internacjonalizacji.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Lokalizacja
|
|
9
|
+
- Rozwój
|
|
10
|
+
- Wydajność
|
|
11
|
+
- Doświadczenie Dewelopera
|
|
12
|
+
- Funkcje
|
|
13
|
+
- React
|
|
14
|
+
- Next.js
|
|
15
|
+
- JavaScript
|
|
16
|
+
- TypeScript
|
|
17
|
+
slugs:
|
|
18
|
+
- doc
|
|
19
|
+
- releases
|
|
20
|
+
- v7
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Nowy Intlayer v7 - Co nowego?
|
|
24
|
+
|
|
25
|
+
Witamy w Intlayer v7! To duże wydanie wprowadza znaczące ulepszenia w wydajności, bezpieczeństwie typów oraz doświadczeniu deweloperskim. Poniżej znajdują się najważniejsze zmiany, wraz z notatkami migracyjnymi i praktycznymi przykładami.
|
|
26
|
+
|
|
27
|
+
## Najważniejsze zmiany
|
|
28
|
+
|
|
29
|
+
- Strategia buforowania dla szybszych kompilacji
|
|
30
|
+
- Ulepszone generowanie typów TypeScript z typami specyficznymi dla lokalizacji
|
|
31
|
+
- Optymalizacja pakietu: lokalizacje jako łańcuchy znaków zamiast enumów
|
|
32
|
+
- Nowe tryby routingu: `prefix-no-default`, `prefix-all`, `no-prefix`, `search-params`
|
|
33
|
+
- Przechowywanie lokalizacji zgodne z RODO, domyślnie w localStorage
|
|
34
|
+
- Elastyczna konfiguracja przechowywania: cookies, localStorage, sessionStorage lub wiele jednocześnie
|
|
35
|
+
- Pakiet Visual Editor mniejszy o 30%
|
|
36
|
+
- Rozszerzone opcje konfiguracji middleware
|
|
37
|
+
- Zaktualizowane zachowanie polecenia fill dla lepszego zarządzania treścią
|
|
38
|
+
- Zwiększona stabilność dzięki pełnym aktualizacjom plików deklaracji treści
|
|
39
|
+
- Inteligentne zarządzanie ponownymi próbami dla dokładności tłumaczeń
|
|
40
|
+
- Równoległe przetwarzanie dla szybszej obsługi tłumaczeń
|
|
41
|
+
- Inteligentne dzielenie na fragmenty, aby obsłużyć duże pliki w ramach limitów kontekstu AI
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Wydajność: Caching dla szybszych kompilacji
|
|
46
|
+
|
|
47
|
+
Zamiast przebudowywać deklaracje treści za pomocą esbuild przy każdym buildzie, wersja 7 wprowadza strategię cache’owania, która przyspiesza proces budowania.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx intlayer build
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Nowy system cache’owania:
|
|
54
|
+
|
|
55
|
+
- Przechowuje skompilowane deklaracje treści, aby uniknąć zbędnego przetwarzania
|
|
56
|
+
- Wykrywa zmiany i przebudowuje tylko zmodyfikowane pliki
|
|
57
|
+
- Znacząco skraca czas budowania dużych projektów
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## TypeScript: Generowanie typów specyficznych dla lokalizacji
|
|
62
|
+
|
|
63
|
+
Typy TypeScript są teraz generowane dla każdej lokalizacji osobno, co zapewnia silniejsze typowanie i eliminuje typy unii obejmujące wszystkie lokalizacje.
|
|
64
|
+
|
|
65
|
+
**Zachowanie w wersji 6:**
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
const content = getIntlayer("my-title-content", "en");
|
|
69
|
+
// typeof content = { title: "My title" } | { title: "Mon titre" } | { title: "Mi título" }
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Zachowanie w wersji 7:**
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
const content = getIntlayer("my-title-content", "en");
|
|
76
|
+
// typeof content = { title: "My title" }
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Korzyści:
|
|
80
|
+
|
|
81
|
+
- Bardziej precyzyjne podpowiedzi w Twoim IDE
|
|
82
|
+
- Lepsze bezpieczeństwo typów bez zanieczyszczenia typów między lokalizacjami
|
|
83
|
+
- Poprawiona wydajność dzięki zmniejszeniu złożoności typów
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Optymalizacja bundla: Lokalizacje jako stringi
|
|
88
|
+
|
|
89
|
+
Typ `Locales` nie jest już enumeracją, co oznacza, że jest teraz w pełni możliwy do tree-shakingu i nie będzie powiększał Twojego bundla o tysiące nieużywanych rekordów lokalizacji.
|
|
90
|
+
|
|
91
|
+
**v6:**
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
import { Locales } from "intlayer";
|
|
95
|
+
// Enum zawierający wszystkie lokalizacje -> nie jest możliwy do tree-shakingu
|
|
96
|
+
|
|
97
|
+
const locale: Locales = Locales.ENGLISH;
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**v7:**
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import { Locales, Locale } from "intlayer";
|
|
104
|
+
// Typ string -> w pełni możliwy do tree-shakingu
|
|
105
|
+
|
|
106
|
+
const locale: Locale = Locales.ENGLISH;
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
> Ponieważ `Locales` nie jest już enumeracją, będziesz musiał zmienić typ z `Locales` na `Locale`, aby uzyskać lokalizację jako typ.
|
|
110
|
+
|
|
111
|
+
Zobacz [szczegóły implementacji](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts) po więcej informacji.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Nowe tryby routingu dla większej elastyczności
|
|
116
|
+
|
|
117
|
+
Wersja v7 wprowadza zunifikowaną konfigurację `routing.mode`, która zastępuje poprzednie opcje `prefixDefault` i `noPrefix`, oferując bardziej szczegółową kontrolę nad strukturą URL.
|
|
118
|
+
|
|
119
|
+
### Dostępne tryby routingu
|
|
120
|
+
|
|
121
|
+
- **`prefix-no-default`** (domyślny): Domyślna lokalizacja nie ma prefiksu, inne lokalizacje mają
|
|
122
|
+
- `/dashboard` (en) lub `/fr/dashboard` (fr)
|
|
123
|
+
- **`prefix-all`**: Wszystkie lokalizacje mają prefiks
|
|
124
|
+
- `/en/dashboard` (en) lub `/fr/dashboard` (fr)
|
|
125
|
+
- **`no-prefix`**: Brak prefiksów lokalizacji w URL (lokalizacja obsługiwana przez storage/headers)
|
|
126
|
+
- `/dashboard` dla wszystkich lokalizacji
|
|
127
|
+
- **`search-params`**: Lokalizacja przekazywana jako parametr zapytania
|
|
128
|
+
- `/dashboard?locale=en` lub `/dashboard?locale=fr`
|
|
129
|
+
|
|
130
|
+
### Podstawowa konfiguracja
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
// intlayer.config.ts
|
|
134
|
+
export default {
|
|
135
|
+
internationalization: {
|
|
136
|
+
locales: ["en", "fr", "es"],
|
|
137
|
+
defaultLocale: "en",
|
|
138
|
+
},
|
|
139
|
+
routing: {
|
|
140
|
+
mode: "prefix-no-default", // domyślnie
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Zgodność z RODO: storage w localStorage / cookies
|
|
148
|
+
|
|
149
|
+
Wersja v7 stawia na prywatność użytkownika, używając `localStorage` jako domyślnego mechanizmu przechowywania zamiast cookies. Ta zmiana pomaga w zgodności z RODO, unikając wymagań dotyczących zgody na cookies dla preferencji lokalizacji.
|
|
150
|
+
|
|
151
|
+
### Opcje konfiguracji storage
|
|
152
|
+
|
|
153
|
+
Nowe pole `routing.storage` jest również dostępne oprócz wcześniejszych opcji `middleware.cookieName` i `middleware.serverSetCookie`, oferując elastyczne konfiguracje przechowywania:
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
// Wyłącz przechowywanie
|
|
157
|
+
storage: false
|
|
158
|
+
|
|
159
|
+
// Proste typy przechowywania
|
|
160
|
+
storage: 'cookie'
|
|
161
|
+
storage: 'localStorage'
|
|
162
|
+
storage: 'sessionStorage'
|
|
163
|
+
|
|
164
|
+
// Cookie z niestandardowymi atrybutami
|
|
165
|
+
storage: {
|
|
166
|
+
type: 'cookie',
|
|
167
|
+
name: 'custom-locale',
|
|
168
|
+
domain: '.example.com',
|
|
169
|
+
secure: true,
|
|
170
|
+
sameSite: 'strict'
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// localStorage z niestandardowym kluczem
|
|
174
|
+
storage: {
|
|
175
|
+
type: 'localStorage',
|
|
176
|
+
name: 'custom-locale'
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Wiele typów przechowywania dla redundancji
|
|
180
|
+
storage: ['cookie', 'localStorage']
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Przykład konfiguracji zgodnej z RODO
|
|
184
|
+
|
|
185
|
+
Dla aplikacji produkcyjnych, które muszą wyważyć funkcjonalność z zgodnością z RODO:
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
// intlayer.config.ts
|
|
189
|
+
export default {
|
|
190
|
+
internationalization: {
|
|
191
|
+
locales: ["en", "fr", "es"],
|
|
192
|
+
defaultLocale: "en",
|
|
193
|
+
},
|
|
194
|
+
routing: {
|
|
195
|
+
mode: "prefix-no-default",
|
|
196
|
+
storage: [
|
|
197
|
+
{
|
|
198
|
+
type: "localStorage", // Główne przechowywanie (nie wymaga zgody)
|
|
199
|
+
name: "user-locale",
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
type: "cookie", // Opcjonalne przechowywanie w ciasteczkach (wymaga zgody)
|
|
203
|
+
name: "user-locale",
|
|
204
|
+
secure: true,
|
|
205
|
+
sameSite: "strict",
|
|
206
|
+
httpOnly: false,
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Włączanie / wyłączanie przechowywania w ciasteczkach
|
|
214
|
+
|
|
215
|
+
Przykład użycia w React / Next.js:
|
|
216
|
+
|
|
217
|
+
Można zdefiniować globalnie:
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
<IntlayerProvider isCookieEnabled={false}>
|
|
221
|
+
<App />
|
|
222
|
+
</IntlayerProvider>
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Można nadpisać lokalnie dla każdego hooka:
|
|
226
|
+
|
|
227
|
+
```ts
|
|
228
|
+
const { setLocale } = useLocale({ isCookieEnabled: false });
|
|
229
|
+
|
|
230
|
+
setLocale("en");
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Uwaga:** Cookies są domyślnie włączone.
|
|
234
|
+
**Uwaga:** Sprawdź [wymagania dotyczące plików cookie zgodne z RODO](https://gdpr.eu/cookies/) dla swojego konkretnego przypadku użycia.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Edytor wizualny: pakiet o 30% mniejszy
|
|
239
|
+
|
|
240
|
+
Pakiet Edytora wizualnego został zoptymalizowany i jest o 30% mniejszy niż poprzednia wersja, dzięki:
|
|
241
|
+
|
|
242
|
+
- Poprawie wydajności edytora kodu
|
|
243
|
+
- Usunięciu niepotrzebnych zależności od pakietów rdzenia Intlayer
|
|
244
|
+
- Lepszemu tree-shakingowi i bundlowaniu modułów
|
|
245
|
+
|
|
246
|
+
Skutkuje to szybszym czasem pobierania i lepszą wydajnością działania Twojej aplikacji.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Komenda fill: Zaktualizowane zachowanie dla lepszego zarządzania treścią
|
|
251
|
+
|
|
252
|
+
Wersja 7 wprowadza ulepszone zachowanie komendy `fill`, zapewniając bardziej przewidywalne i elastyczne zarządzanie treścią:
|
|
253
|
+
|
|
254
|
+
### Nowe zachowanie polecenia fill
|
|
255
|
+
|
|
256
|
+
- **`fill: true`** - Nadpisuje bieżący plik wypełnioną zawartością dla wszystkich lokalizacji
|
|
257
|
+
- **`fill: "ścieżka/do/pliku"`** - Wypełnia określony plik bez modyfikowania bieżącego pliku
|
|
258
|
+
- **`fill: false`** - Całkowicie wyłącza automatyczne wypełnianie
|
|
259
|
+
|
|
260
|
+
### Ulepszone wsparcie dla złożonych struktur zawartości
|
|
261
|
+
|
|
262
|
+
Polecenie fill obsługuje teraz złożone struktury deklaracji zawartości, w tym:
|
|
263
|
+
|
|
264
|
+
- **Obiekty złożone**: Deklaracje zawartości, które odwołują się do innych obiektów
|
|
265
|
+
- **Zawartość destrukturyzowana**: Zawartość wykorzystująca wzorce destrukturyzacji
|
|
266
|
+
- **Zagnieżdżone odwołania**: Obiekty wywołujące się nawzajem w złożonych hierarchiach
|
|
267
|
+
- **Dynamiczne struktury zawartości**: Zawartość z warunkowymi lub obliczanymi właściwościami
|
|
268
|
+
|
|
269
|
+
### Korzyści
|
|
270
|
+
|
|
271
|
+
- **Jasniejszy zamiar**: Zachowanie jest teraz bardziej jednoznaczne co do tego, co jest modyfikowane
|
|
272
|
+
- **Lepsze rozdzielenie**: Pliki z zawartością mogą być przechowywane oddzielnie od wypełnionych tłumaczeń
|
|
273
|
+
- **Ulepszony przepływ pracy**: Deweloperzy mają większą kontrolę nad miejscem przechowywania tłumaczeń
|
|
274
|
+
- **Wsparcie dla złożonych struktur**: Obsługa zaawansowanych architektur zawartości z wieloma powiązanymi obiektami
|
|
275
|
+
|
|
276
|
+
### Przykład użycia
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
// Nadpisz bieżący plik wszystkimi lokalizacjami
|
|
280
|
+
const content = {
|
|
281
|
+
key: "example",
|
|
282
|
+
fill: true, // Nadpisuje ten plik
|
|
283
|
+
content: {
|
|
284
|
+
title: "Hello World",
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
// Wypełnij osobny plik bez modyfikacji bieżącego pliku
|
|
289
|
+
const content = {
|
|
290
|
+
key: "example",
|
|
291
|
+
fill: "./translations.json", // Tworzy/aktualizuje translations.json
|
|
292
|
+
content: {
|
|
293
|
+
title: "Hello World",
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
// Wyłącz automatyczne wypełnianie
|
|
298
|
+
const content = {
|
|
299
|
+
key: "example",
|
|
300
|
+
fill: false, // Brak automatycznego wypełniania
|
|
301
|
+
content: {
|
|
302
|
+
title: "Hello World",
|
|
303
|
+
},
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// Złożona struktura treści z obiektami złożonymi
|
|
307
|
+
const sharedContent = {
|
|
308
|
+
buttons: {
|
|
309
|
+
save: "Zapisz",
|
|
310
|
+
cancel: "Anuluj",
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
const content = {
|
|
315
|
+
key: "complex-example",
|
|
316
|
+
fill: true,
|
|
317
|
+
content: {
|
|
318
|
+
// Odwołania do innych obiektów
|
|
319
|
+
sharedContent,
|
|
320
|
+
|
|
321
|
+
// Rozpakowana zawartość
|
|
322
|
+
...sharedContent,
|
|
323
|
+
|
|
324
|
+
// Zagnieżdżone odwołania
|
|
325
|
+
sections: [
|
|
326
|
+
{
|
|
327
|
+
...sharedContent.buttons,
|
|
328
|
+
header: "Sekcja 1",
|
|
329
|
+
},
|
|
330
|
+
],
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Zwiększona stabilność i zarządzanie tłumaczeniami
|
|
338
|
+
|
|
339
|
+
Wersja 7 wprowadza kilka usprawnień, które czynią tłumaczenie treści bardziej niezawodnym i efektywnym:
|
|
340
|
+
|
|
341
|
+
### Pełne aktualizacje plików deklaracji treści
|
|
342
|
+
|
|
343
|
+
System teraz aktualizuje pliki `.content.{ts,js,cjs,mjs}` zamiast częściowych aktualizacji, co zapewnia:
|
|
344
|
+
|
|
345
|
+
- **Integralność danych**: Pełne przepisywanie plików zapobiega częściowym aktualizacjom, które mogłyby uszkodzić zawartość
|
|
346
|
+
- **Spójność**: Wszystkie lokalizacje są aktualizowane atomowo, co utrzymuje synchronizację
|
|
347
|
+
- **Niezawodność**: Zmniejsza ryzyko niekompletnych lub uszkodzonych plików zawartości
|
|
348
|
+
|
|
349
|
+
### Inteligentne zarządzanie ponownymi próbami
|
|
350
|
+
|
|
351
|
+
Nowe mechanizmy ponownych prób zapobiegają przesyłaniu zawartości w niepoprawnych formatach i unikają przerwania całego procesu wypełniania, jeśli jedno żądanie się nie powiedzie.
|
|
352
|
+
|
|
353
|
+
### Równoległość dla szybszego przetwarzania
|
|
354
|
+
|
|
355
|
+
Operacje tłumaczenia są teraz wykonywane w kolejce, aby uruchamiać je równolegle. Znacząco przyspiesza to proces.
|
|
356
|
+
|
|
357
|
+
### Inteligentne dzielenie na fragmenty dla dużych plików
|
|
358
|
+
|
|
359
|
+
Zaawansowane strategie dzielenia na fragmenty radzą sobie z dużymi plikami zawartości, nie przekraczając limitów kontekstu AI:
|
|
360
|
+
|
|
361
|
+
### Przykładowy przebieg pracy
|
|
362
|
+
|
|
363
|
+
```typescript
|
|
364
|
+
// Duży plik zawartości jest automatycznie dzielony na fragmenty
|
|
365
|
+
const content = {
|
|
366
|
+
key: "large-documentation",
|
|
367
|
+
fill: true,
|
|
368
|
+
content: {
|
|
369
|
+
// Duża zawartość automatycznie dzielona na fragmenty do przetwarzania przez AI
|
|
370
|
+
introduction: "..." // ponad 5000 znaków
|
|
371
|
+
sections: [
|
|
372
|
+
// Wiele dużych sekcji
|
|
373
|
+
]
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
System automatycznie:
|
|
379
|
+
|
|
380
|
+
1. Analizuje rozmiar i strukturę zawartości
|
|
381
|
+
2. Odpowiednio dzieli zawartość na fragmenty
|
|
382
|
+
3. Przetwarza fragmenty równolegle
|
|
383
|
+
4. Waliduje i ponawia próby w razie potrzeby
|
|
384
|
+
5. Odtwarza kompletny plik
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Notatki migracyjne z wersji v6
|
|
389
|
+
|
|
390
|
+
### Usunięte konfiguracje
|
|
391
|
+
|
|
392
|
+
- **`middleware.cookieName`**: Zastąpione przez `routing.storage`
|
|
393
|
+
- **`middleware.serverSetCookie`**: Zastąpione przez `routing.storage`
|
|
394
|
+
- **`middleware.prefixDefault`**: Zastąpione przez `routing.mode`
|
|
395
|
+
- **`middleware.noPrefix`**: Zastąpione przez `routing.mode`
|
|
396
|
+
|
|
397
|
+
### Mapowanie migracji
|
|
398
|
+
|
|
399
|
+
#### Mapowanie konfiguracji
|
|
400
|
+
|
|
401
|
+
| Konfiguracja v6 | Konfiguracja v7 |
|
|
402
|
+
| -------------------------- | --------------------------------------------------- |
|
|
403
|
+
| `autoFill: xxx` | `fill: xxx` |
|
|
404
|
+
| `prefixDefault: false` | `mode: 'prefix-no-default'` |
|
|
405
|
+
| `prefixDefault: true` | `mode: 'prefix-all'` |
|
|
406
|
+
| `noPrefix: true` | `mode: 'no-prefix'` |
|
|
407
|
+
| `cookieName: 'my-locale'` | `storage: { type: 'cookie', name: 'my-locale' }` |
|
|
408
|
+
| `serverSetCookie: 'never'` | `storage: false` lub usuń cookie z tablicy storage` |
|
|
409
|
+
|
|
410
|
+
#### Przykład migracji
|
|
411
|
+
|
|
412
|
+
**Przed (v6):**
|
|
413
|
+
|
|
414
|
+
```typescript
|
|
415
|
+
export default {
|
|
416
|
+
middleware: {
|
|
417
|
+
headerName: "x-intlayer-locale",
|
|
418
|
+
cookieName: "intlayer-locale",
|
|
419
|
+
prefixDefault: false,
|
|
420
|
+
basePath: "",
|
|
421
|
+
serverSetCookie: "always",
|
|
422
|
+
noPrefix: false,
|
|
423
|
+
},
|
|
424
|
+
};
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Po (v7):**
|
|
428
|
+
|
|
429
|
+
```typescript
|
|
430
|
+
export default {
|
|
431
|
+
routing: {
|
|
432
|
+
mode: "prefix-no-default",
|
|
433
|
+
storage: "localStorage", // lub 'cookie', jeśli potrzebujesz przechowywania w ciasteczkach
|
|
434
|
+
headerName: "x-intlayer-locale",
|
|
435
|
+
basePath: "",
|
|
436
|
+
},
|
|
437
|
+
};
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
#### Mapowanie zawartości słownika
|
|
441
|
+
|
|
442
|
+
| Zawartość słownika v6 | Zawartość słownika v7 |
|
|
443
|
+
| --------------------- | --------------------- |
|
|
444
|
+
| `autoFill: xxx` | `fill: xxx` |
|
|
445
|
+
|
|
446
|
+
#### Przykład migracji
|
|
447
|
+
|
|
448
|
+
**Przed (v6):**
|
|
449
|
+
|
|
450
|
+
```typescript
|
|
451
|
+
const content = {
|
|
452
|
+
key: "example",
|
|
453
|
+
autoFill: true, // Nadpisuje ten plik
|
|
454
|
+
content: {
|
|
455
|
+
title: "Hello World",
|
|
456
|
+
},
|
|
457
|
+
};
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
**Po (v7):**
|
|
461
|
+
|
|
462
|
+
```typescript
|
|
463
|
+
const content = {
|
|
464
|
+
key: "example",
|
|
465
|
+
fill: true, // Nadpisuje ten plik
|
|
466
|
+
content: {
|
|
467
|
+
title: "Hello World",
|
|
468
|
+
},
|
|
469
|
+
};
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## Notatki dotyczące migracji z v5 do v6
|
|
475
|
+
|
|
476
|
+
Sprawdź [notatki dotyczące migracji z v5 do v6](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/releases/v6.md) po więcej informacji.
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
## Przydatne linki
|
|
481
|
+
|
|
482
|
+
- [Referencja konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
|
|
483
|
+
- [Dokumentacja Middleware](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/packages/next-intlayer/index.md)
|
|
484
|
+
- [Typy TypeScript](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts)
|
|
485
|
+
- [Wytyczne dotyczące plików cookie zgodne z RODO](https://gdpr.eu/cookies/)
|
package/docs/pt/configuration.md
CHANGED
|
@@ -332,30 +332,6 @@ Configurações que controlam o comportamento do middleware, incluindo como a ap
|
|
|
332
332
|
- Se `noPrefix = false`: a URL será `https://example.com/my-app/en`
|
|
333
333
|
- Se `noPrefix = true`: a URL será `https://example.com`
|
|
334
334
|
|
|
335
|
-
- **detectLocaleOnPrefetchNoPrefix**:
|
|
336
|
-
- _Tipo_: `boolean`
|
|
337
|
-
- _Padrão_: `false`
|
|
338
|
-
- _Descrição_: Controla se a detecção de local ocorre durante as requisições de prefetch do Next.js.
|
|
339
|
-
- _Exemplo_: `true`
|
|
340
|
-
- _Nota_: Esta configuração afeta como o Next.js lida com o prefetch de local:
|
|
341
|
-
- **Cenário de exemplo:**
|
|
342
|
-
- O idioma do navegador do usuário é `'fr'`
|
|
343
|
-
- A página atual é `/fr/about`
|
|
344
|
-
- O link faz prefetch de `/about`
|
|
345
|
-
- **Com `detectLocaleOnPrefetchNoPrefix: true`:**
|
|
346
|
-
- O prefetch detecta o local `'fr'` do navegador
|
|
347
|
-
- Redireciona o prefetch para `/fr/about`
|
|
348
|
-
- **Com `detectLocaleOnPrefetchNoPrefix: false` (padrão):**
|
|
349
|
-
- O prefetch usa o local padrão
|
|
350
|
-
- Redireciona o prefetch para `/en/about` (assumindo que `'en'` é o padrão)
|
|
351
|
-
- **Quando usar `true`:**
|
|
352
|
-
- Sua aplicação usa links internos não localizados (ex: `<a href="/about">`)
|
|
353
|
-
- Você deseja um comportamento consistente de detecção de localidade entre requisições normais e prefetch
|
|
354
|
-
- **Quando usar `false` (padrão):**
|
|
355
|
-
- Sua aplicação usa links com prefixo de localidade (ex: `<a href="/fr/about">`)
|
|
356
|
-
- Você deseja otimizar a performance do prefetch
|
|
357
|
-
- Você deseja evitar possíveis loops de redirecionamento
|
|
358
|
-
|
|
359
335
|
---
|
|
360
336
|
|
|
361
337
|
### Configuração de Conteúdo
|