@intlayer/docs 9.0.0-canary.10 → 9.0.0-canary.11
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/intlayer_CMS.md +16 -1
- package/docs/ar/releases/v9.md +58 -1
- package/docs/ar/self_hosting.md +349 -0
- package/docs/bn/intlayer_CMS.md +570 -0
- package/docs/bn/releases/v9.md +358 -0
- package/docs/cs/releases/v9.md +358 -0
- package/docs/de/intlayer_CMS.md +117 -1
- package/docs/de/releases/v9.md +61 -1
- package/docs/de/self_hosting.md +349 -0
- package/docs/en/intlayer_CMS.md +171 -1
- package/docs/en/releases/v9.md +45 -2
- package/docs/en/self_hosting.md +349 -0
- package/docs/en-GB/intlayer_CMS.md +16 -1
- package/docs/en-GB/releases/v9.md +47 -2
- package/docs/en-GB/self_hosting.md +349 -0
- package/docs/es/intlayer_CMS.md +117 -1
- package/docs/es/releases/v9.md +61 -1
- package/docs/es/self_hosting.md +349 -0
- package/docs/fr/intlayer_CMS.md +117 -1
- package/docs/fr/releases/v9.md +61 -1
- package/docs/fr/self_hosting.md +349 -0
- package/docs/hi/intlayer_CMS.md +16 -1
- package/docs/hi/releases/v9.md +59 -1
- package/docs/hi/self_hosting.md +349 -0
- package/docs/id/releases/v9.md +31 -1
- package/docs/id/self_hosting.md +349 -0
- package/docs/it/intlayer_CMS.md +117 -1
- package/docs/it/releases/v9.md +61 -1
- package/docs/it/self_hosting.md +349 -0
- package/docs/ja/intlayer_CMS.md +191 -10
- package/docs/ja/releases/v9.md +31 -1
- package/docs/ja/self_hosting.md +349 -0
- package/docs/ko/intlayer_CMS.md +189 -6
- package/docs/ko/releases/v9.md +30 -1
- package/docs/ko/self_hosting.md +349 -0
- package/docs/nl/releases/v9.md +358 -0
- package/docs/pl/intlayer_CMS.md +16 -1
- package/docs/pl/releases/v9.md +58 -1
- package/docs/pl/self_hosting.md +349 -0
- package/docs/pt/intlayer_CMS.md +117 -1
- package/docs/pt/releases/v9.md +61 -1
- package/docs/pt/self_hosting.md +349 -0
- package/docs/ru/intlayer_CMS.md +196 -15
- package/docs/ru/releases/v9.md +59 -1
- package/docs/ru/self_hosting.md +349 -0
- package/docs/tr/intlayer_CMS.md +16 -1
- package/docs/tr/releases/v9.md +46 -1
- package/docs/tr/self_hosting.md +349 -0
- package/docs/uk/intlayer_CMS.md +16 -1
- package/docs/uk/releases/v9.md +58 -1
- package/docs/uk/self_hosting.md +349 -0
- package/docs/vi/releases/v9.md +31 -1
- package/docs/vi/self_hosting.md +349 -0
- package/docs/zh/releases/v9.md +31 -1
- package/docs/zh/self_hosting.md +349 -0
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-06-14
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
|
+
title: Nieuwe Intlayer v9 - Wat is er nieuw?
|
|
5
|
+
description: Ontdek wat er nieuw is in Intlayer v9. Introductie van drop-in compatibiliteitspakketten voor populaire i18n-bibliotheken, ondersteuning voor Verzamelingen en Varianten, en zelf hosten via Docker Compose.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Compatibility
|
|
9
|
+
- Migration
|
|
10
|
+
- Collections
|
|
11
|
+
- Variants
|
|
12
|
+
- CMS SDK
|
|
13
|
+
- Self-Hosting
|
|
14
|
+
- Docker
|
|
15
|
+
- i18next
|
|
16
|
+
- next-intl
|
|
17
|
+
- vue-i18n
|
|
18
|
+
slugs:
|
|
19
|
+
- doc
|
|
20
|
+
- releases
|
|
21
|
+
- v9
|
|
22
|
+
author: aymericzip
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Nieuwe Intlayer v9 - Wat is er nieuw?
|
|
26
|
+
|
|
27
|
+
Welkom bij Intlayer v9! Deze grote release markeert een enorme mijlpaal in het vereenvoudigen van het migratiepad naar Intlayer met **Compat-adapterpakketten** voor grote i18n-bibliotheken (`react-i18next`, `next-intl`, `vue-i18n`, enz.) en voegt ondersteuning toe voor rijke inhoudsstructuren: **Verzamelingen** en **Varianten**.
|
|
28
|
+
|
|
29
|
+
## Inhoudsopgave
|
|
30
|
+
|
|
31
|
+
<TOC levels={[2]} maxDepth={1} />
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Compat-adapterpakketten
|
|
36
|
+
|
|
37
|
+
Migreren naar Intlayer vanuit populaire i18n-bibliotheken is nu eenvoudiger dan ooit. We hebben vijf compatibiliteitspakketten gemaakt die exact dezelfde publieke API's blootstellen als standaard i18n-bibliotheken, maar al het vertaalwerk tijdens uitvoering delegeren aan Intlayer.
|
|
38
|
+
|
|
39
|
+
### Dezelfde publieke API blootstellen met strikte typering
|
|
40
|
+
|
|
41
|
+
Door imports te vervangen, profiteert u van alle voordelen van Intlayer (inclusief compilatietijd type-veiligheid ten opzichte van uw werkelijke woordenboeken) met minimale codewijzigingen:
|
|
42
|
+
|
|
43
|
+
- `@intlayer/i18next`
|
|
44
|
+
- `@intlayer/react-i18next`
|
|
45
|
+
- `@intlayer/next-intl`
|
|
46
|
+
- `@intlayer/react-intl`
|
|
47
|
+
- `@intlayer/next-i18next`
|
|
48
|
+
- `@intlayer/vue-i18n`
|
|
49
|
+
- `@intlayer/lingui`
|
|
50
|
+
|
|
51
|
+
Wijzig bijvoorbeeld eenvoudig:
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
import { useTranslation } from "react-i18next";
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
naar:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
import { useTranslation } from "@intlayer/react-i18next";
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Uw sleutels worden nu **strikt getypeerd** op basis van uw Intlayer-woordenboeken, wat volledige dot-pad-autoaanvulling biedt in uw IDE!
|
|
64
|
+
|
|
65
|
+
### Bundler-aliasplugins (Vite, Next.js, Turbopack)
|
|
66
|
+
|
|
67
|
+
Om te migreren zonder alle importstatements handmatig te herschrijven, bevat elk compat-adapterpakket een **aangepaste bundler-plugin** (Vite of Next.js) onder het `/plugin`-subpad.
|
|
68
|
+
|
|
69
|
+
Deze plugins herschrijven automatisch bestaande imports (bijv. `react-i18next` of `next-intl`) naar hun `@intlayer/*`-equivalenten tijdens het bouwen.
|
|
70
|
+
|
|
71
|
+
#### Next.js (Webpack / Turbopack) Voorbeeld
|
|
72
|
+
|
|
73
|
+
Gebruik in plaats van `withIntlayer` de compat-plugin om uw Next.js-configuratie te wikkelen:
|
|
74
|
+
|
|
75
|
+
```ts fileName="next.config.ts"
|
|
76
|
+
import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin";
|
|
77
|
+
import type { NextConfig } from "next";
|
|
78
|
+
|
|
79
|
+
const withIntlayer = createNextI18nPlugin();
|
|
80
|
+
const nextConfig: NextConfig = {};
|
|
81
|
+
|
|
82
|
+
export default withIntlayer(nextConfig);
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### Vite (React, Vue, Solid, Svelte) Voorbeeld
|
|
86
|
+
|
|
87
|
+
```ts fileName="vite.config.ts"
|
|
88
|
+
import vueI18nVitePlugin from "@intlayer/vue-i18n/plugin";
|
|
89
|
+
|
|
90
|
+
export default defineConfig({
|
|
91
|
+
plugins: [vueI18nVitePlugin()],
|
|
92
|
+
});
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Gedeelde runtime-resolver
|
|
98
|
+
|
|
99
|
+
Alle compat-adapters routeren vertaalresolutie nu via één sterk geoptimaliseerde runtime-parser: `@intlayer/core/messageFormat`.
|
|
100
|
+
|
|
101
|
+
- **Berichtinterpolatie**: Verwerkt standaard `{{var}}` (witruimte & dot-paden), ICU-geformatteerde argumenten (`{v, number, percent}` enz.) en gewone `{var}`-sjablonen.
|
|
102
|
+
- **Berichtknooppuntresolver**: Verwerkt geneste knooppunten: `insert()`, `plural()` (CLDR meervoudsregels), `enu()` (opsomming), `gender()`, HTML-tags, arrays en aanroepbare functieknooppunten.
|
|
103
|
+
- **Getokeniseerde tagparser**: Ondersteunt inline XML/HTML-tags en genummerde tags (bijv. `<1>children</1>`) voor rijke-tekstweergave zonder extra configuratie.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Functiespecificaties: Verzamelingen en varianten
|
|
108
|
+
|
|
109
|
+
Intlayer v9 gaat verder dan statische sleutel-waardeparen en stelt woordenboeken in staat dynamische layoutstructuren te declareren die end-to-end volledig getypeerd zijn.
|
|
110
|
+
|
|
111
|
+
### 1. Verzamelingen
|
|
112
|
+
|
|
113
|
+
Definieer een door CMS beheerde lijst met geordende items (bijv. FAQ's, producten of bloglijsten). Elk item bevindt zich in een eigen `.content.ts`-bestand met dezelfde `key` en een `item`-nummer:
|
|
114
|
+
|
|
115
|
+
```ts fileName="faq.1.content.ts"
|
|
116
|
+
import { t, type Dictionary } from "intlayer";
|
|
117
|
+
|
|
118
|
+
export default {
|
|
119
|
+
key: "faq",
|
|
120
|
+
item: 1,
|
|
121
|
+
content: {
|
|
122
|
+
question: t({ en: "What is Intlayer?", fr: "Qu'est-ce qu'Intlayer ?" }),
|
|
123
|
+
answer: t({ en: "An i18n toolkit.", fr: "Une boîte à outils i18n." }),
|
|
124
|
+
},
|
|
125
|
+
} satisfies Dictionary;
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
```ts fileName="faq.2.content.ts"
|
|
129
|
+
import { t, type Dictionary } from "intlayer";
|
|
130
|
+
|
|
131
|
+
export default {
|
|
132
|
+
key: "faq",
|
|
133
|
+
item: 2,
|
|
134
|
+
content: {
|
|
135
|
+
question: t({ en: "Is it free?", fr: "Est-ce gratuit ?" }),
|
|
136
|
+
answer: t({ en: "Yes, open-source.", fr: "Oui, open-source." }),
|
|
137
|
+
},
|
|
138
|
+
} satisfies Dictionary;
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### Gebruik:
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
// Alle items als array ophalen
|
|
145
|
+
const allFaqs = useIntlayer("faq"); // -> { question: string, answer: string }[]
|
|
146
|
+
|
|
147
|
+
// Eén item ophalen op index
|
|
148
|
+
const faq = useIntlayer("faq", { item: 2 }); // -> { question: string, answer: string }
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 2. Varianten
|
|
152
|
+
|
|
153
|
+
Lever A/B-tests, seizoensgebonden koppen, functievlaggen of aangepaste landingspagina's:
|
|
154
|
+
|
|
155
|
+
#### Tekstvarianten (bijv. A/B-testen)
|
|
156
|
+
|
|
157
|
+
```ts fileName="hero.content.ts"
|
|
158
|
+
import { t, type Dictionary } from "intlayer";
|
|
159
|
+
|
|
160
|
+
export default {
|
|
161
|
+
key: "hero-banner",
|
|
162
|
+
variant: "default",
|
|
163
|
+
content: {
|
|
164
|
+
control: t({ en: "Welcome", fr: "Bienvenue" }),
|
|
165
|
+
black_friday: t({ en: "Shop now", fr: "Acheter maintenant" }),
|
|
166
|
+
},
|
|
167
|
+
} satisfies Dictionary;
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### Gebruik:
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
const banner = useIntlayer("hero-banner", { variant: "black_friday" });
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
#### Objectvarianten (bijv. Dynamische records)
|
|
177
|
+
|
|
178
|
+
```ts fileName="product.content.ts"
|
|
179
|
+
import { t, type Dictionary } from "intlayer";
|
|
180
|
+
|
|
181
|
+
export default {
|
|
182
|
+
key: "product-copy",
|
|
183
|
+
variant: {
|
|
184
|
+
id: "prod_123",
|
|
185
|
+
category: "books",
|
|
186
|
+
},
|
|
187
|
+
content: {
|
|
188
|
+
title: t({ en: "Clean Code", fr: "Code Propre" }),
|
|
189
|
+
},
|
|
190
|
+
} satisfies Dictionary;
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
#### Gebruik:
|
|
194
|
+
|
|
195
|
+
```ts
|
|
196
|
+
// Haalt alleen het gevraagde record dynamisch op (vereist Suspense)
|
|
197
|
+
const product = useIntlayer("product-copy", {
|
|
198
|
+
variant: { id: "prod_123", category: "books" },
|
|
199
|
+
});
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Dynamisch laden en bundel-optimalisaties
|
|
205
|
+
|
|
206
|
+
Om bundels extreem klein te houden, ondersteunt Intlayer v9 dynamisch lui laden.
|
|
207
|
+
|
|
208
|
+
Stel `importMode` in op `'dynamic'` of `'fetch'` in uw configuratie:
|
|
209
|
+
|
|
210
|
+
```ts fileName="intlayer.config.ts"
|
|
211
|
+
export default {
|
|
212
|
+
dictionary: {
|
|
213
|
+
importMode: "dynamic", // "static" | "dynamic" | "fetch"
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Tijdens het bouwen scannen `@intlayer/swc` en `@intlayer/babel` uw bestanden en vervangen `useIntlayer`/`getIntlayer`-aanroepen door tree-shakeable wrappers (`useDictionary`/`useDictionaryDynamic`). Alleen de inhoud die vereist is voor het geselecteerde verzamelingsitem, de variant of de taal wordt geladen, waardoor uw productiebundel geen ongebruikte vertalingen bevat.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Vite-plugin: ingebouwde compiler en proxy
|
|
223
|
+
|
|
224
|
+
De `intlayer()` Vite-plugin bundelt nu de **compiler** en de **locale-routeringsproxy** rechtstreeks, zodat de meeste projecten slechts één plugin nodig hebben in `vite.config.ts`:
|
|
225
|
+
|
|
226
|
+
```ts fileName="vite.config.ts"
|
|
227
|
+
import { defineConfig } from "vite";
|
|
228
|
+
import { intlayer } from "vite-intlayer";
|
|
229
|
+
|
|
230
|
+
export default defineConfig({
|
|
231
|
+
plugins: [intlayer()],
|
|
232
|
+
});
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
- **Compiler**: Wordt automatisch geactiveerd wanneer `compiler.enabled` is ingesteld op `true` en een `compiler.output`-pad is geconfigureerd. U hoeft `intlayerCompiler()` niet langer afzonderlijk te registreren.
|
|
236
|
+
- **Proxy**: Wordt automatisch geactiveerd op basis van de nieuwe optie `routing.enableProxy` (standaard `true`). Het koppelt de middleware voor taaldetedering, omleiding en herschrijving in ontwikkeling, voorvertoning en productie-SSR. U hoeft `intlayerProxy()` niet langer afzonderlijk te registreren.
|
|
237
|
+
|
|
238
|
+
### De optie `routing.enableProxy`
|
|
239
|
+
|
|
240
|
+
Een nieuwe optie `routing.enableProxy` bepaalt of de locale-routeringsproxy wordt gekoppeld. De standaardwaarde is `true`. Schakel deze uit wanneer u de taalroutering zelf wilt afhandelen:
|
|
241
|
+
|
|
242
|
+
```ts fileName="intlayer.config.ts"
|
|
243
|
+
import type { IntlayerConfig } from "intlayer";
|
|
244
|
+
|
|
245
|
+
const config: IntlayerConfig = {
|
|
246
|
+
routing: {
|
|
247
|
+
enableProxy: false, // Standaard: true
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
export default config;
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
De zelfstandige plugins `intlayerCompiler()` en `intlayerProxy()` blijven beschikbaar voor geavanceerde installaties. Het is veilig om ze samen met `intlayer()` te registreren — elke plugin dedupliceert zichzelf en wordt slechts één keer uitgevoerd.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Compiler standaard uitgeschakeld
|
|
259
|
+
|
|
260
|
+
Vanaf Intlayer v9 is de **compiler standaard uitgeschakeld** (`compiler.enabled` is nu standaard `false`). Om build-tijdextractie van uw `.content.ts`-bestanden in te schakelen, stelt u `compiler.enabled: true` in uw configuratie in:
|
|
261
|
+
|
|
262
|
+
```ts fileName="intlayer.config.ts"
|
|
263
|
+
import type { IntlayerConfig } from "intlayer";
|
|
264
|
+
|
|
265
|
+
const config: IntlayerConfig = {
|
|
266
|
+
compiler: {
|
|
267
|
+
enabled: true, // Standaard: false — vereist om de compiler in te schakelen sinds v9
|
|
268
|
+
output: ({ fileName }) => `./${fileName}.content.ts`,
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
export default config;
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Wanneer de compiler is uitgeschakeld, slaat Intlayer de build-tijdextractiestap over en vertrouwt op uw reeds gedeclareerde woordenboeken. Schakel deze alleen in wanneer u wilt dat de bundler-plugin (`@intlayer/swc`, `@intlayer/babel` of de `intlayer()` Vite-plugin) inhoud automatisch extraheert.
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## React Native: importeren vanuit één pakket
|
|
280
|
+
|
|
281
|
+
In een React Native- of Expo-app hoeft u niet langer zowel `react-intlayer` als `react-native-intlayer` te beheren. Het pakket `react-native-intlayer` **herexporteert nu de volledige `react-intlayer`-API** (hooks, hulpprogramma's en de subpaden `/format`, `/html` en `/markdown`), en de `IntlayerProvider` past de React Native polyfills automatisch toe.
|
|
282
|
+
|
|
283
|
+
Importeer alles vanuit het enkele pakket `react-native-intlayer`:
|
|
284
|
+
|
|
285
|
+
```tsx
|
|
286
|
+
import {
|
|
287
|
+
IntlayerProvider,
|
|
288
|
+
useIntlayer,
|
|
289
|
+
useLocale,
|
|
290
|
+
} from "react-native-intlayer";
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
npm install intlayer react-native-intlayer
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
> Importeren vanuit `react-intlayer` blijft werken, maar `react-native-intlayer` is nu het aanbevolen enkelvoudige invoerpunt voor React Native — de provider bevat de polyfills die de webgerichte `react-intlayer`-provider niet heeft.
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## CMS SDK: gebruik Intlayer als headless-contentdatabase
|
|
302
|
+
|
|
303
|
+
Intlayer v9 levert een overzichtelijke, automatisch authenticerende SDK in `@intlayer/api` om programmatisch met de CMS te communiceren — haal projecten op, haal woordenboeken op en duw of update ze vanuit uw eigen server, scripts of CI. Authenticatie (OAuth2 `client_credentials`) wordt voor u beheerd en vernieuwd.
|
|
304
|
+
|
|
305
|
+
De SDK is opgesplitst in **twee afzonderlijke imports** zodat uw bundel alleen de domeinen bevat die u daadwerkelijk gebruikt:
|
|
306
|
+
|
|
307
|
+
1. `createIntlayerCMS` — een lichtgewicht **authenticator** die de referenties en het beheerde token bewaart (geen domein-client gebundeld).
|
|
308
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — per-domein **endpoint-binders**, elk geïmporteerd vanuit hun eigen subpad.
|
|
309
|
+
|
|
310
|
+
```ts fileName="cms.ts"
|
|
311
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
312
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
313
|
+
|
|
314
|
+
const cms = createIntlayerCMS();
|
|
315
|
+
|
|
316
|
+
// Lezen
|
|
317
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
318
|
+
|
|
319
|
+
// Schrijven — gebruik de CMS als een database
|
|
320
|
+
await dictionaryEndpoint(cms).pushDictionaries([myDictionary]);
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
> Beveiliging: de CMS-referenties verlenen schrijftoegang tot uw inhoud. Maak de authenticator altijd alleen aan **aan de serverzijde** — stuur `clientId`/`clientSecret` nooit naar de browser.
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Zelf hosten
|
|
328
|
+
|
|
329
|
+
Intlayer v9 biedt eersteklas ondersteuning voor het uitvoeren van uw eigen Intlayer-instantie met één opdracht — geen Intlayer Cloud-account vereist.
|
|
330
|
+
|
|
331
|
+
```sh
|
|
332
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Het installatieprogramma downloadt een `docker-compose.yml` en een `.env`, genereert automatisch de vereiste geheimen en voert `docker compose up -d` uit. Alles — het dashboard, de API, de database, objectopslag en transactionele e-mail — wordt lokaal in containers uitgevoerd.
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## Migratienotities vanuit v8
|
|
340
|
+
|
|
341
|
+
Als u upgradet vanuit v8, let dan op dat v9 geen breaking changes bevat. Maar dit zijn de belangrijkste wijzigingen:
|
|
342
|
+
|
|
343
|
+
- **Compiler standaard uitgeschakeld**: `compiler.enabled` is nu standaard `false`. Als u afhankelijk bent van build-tijdextractie van uw `.content.ts`-bestanden, stelt u `compiler.enabled: true` in uw `intlayer.config.ts` in.
|
|
344
|
+
- **Vite-plugin**: De compiler en locale-routeringsproxy zijn nu gebundeld in `intlayer()`. Als u eerder `intlayerCompiler()` of `intlayerProxy()` handmatig registreerde, kunt u ze verwijderen — ze worden automatisch gededupliceerd, dus ze bewaren is onschadelijk. Gebruik `routing.enableProxy: false` om de proxy uit te schakelen.
|
|
345
|
+
- **Talen en dialecten**: Als u externe i18n-afhankelijkheden gebruikt, voeg dan de bijbehorende compat-adapterplugins toe in uw configuratie of bundler-installatie om imports automatisch te herschrijven.
|
|
346
|
+
- **Aangepaste selectors**: Bij het aanroepen van `useIntlayer` is de tweede parameter nu gereserveerd voor een optieobject met `{ locale, item, variant }`. Als u eerder een taalstring direct doorgaf, kunt u dat nog steeds doen, maar het gebruik van het optieobject wordt aanbevolen voor geavanceerde selecties.
|
|
347
|
+
- **React Native**: `react-native-intlayer` herexporteert nu de volledige `react-intlayer`-API. Importeer in een React Native-app alles vanuit `react-native-intlayer` en verwijder de directe `react-intlayer`-afhankelijkheid. Bestaande `react-intlayer`-imports blijven werken.
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Nuttige links
|
|
352
|
+
|
|
353
|
+
- [Handleiding voor compat-adapterpakketten](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/compat/index.md)
|
|
354
|
+
- [Dynamische woordenboeken - Verzamelingen en varianten](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/dynamic_dictionaries/index.md)
|
|
355
|
+
- [Configuratiereferentie](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/configuration.md)
|
|
356
|
+
- [Handleiding voor React Native en Expo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/intlayer_with_react_native+expo.md)
|
|
357
|
+
- [CMS SDK - Programmatische toegang met @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/intlayer_CMS.md)
|
|
358
|
+
- [Handleiding voor zelf hosten](https://github.com/aymericzip/intlayer/blob/main/docs/docs/nl/self_hosting.md)
|
package/docs/pl/intlayer_CMS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-08-23
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: Intlayer CMS | Zewnętrzne zarządzanie treścią w Intlayer CMS
|
|
5
5
|
description: Zewnętrzne zarządzanie treścią w Intlayer CMS, aby delegować zarządzanie treścią do Twojego zespołu.
|
|
6
6
|
keywords:
|
|
@@ -18,6 +18,9 @@ slugs:
|
|
|
18
18
|
- cms
|
|
19
19
|
youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
20
20
|
history:
|
|
21
|
+
- version: 9.0.0
|
|
22
|
+
date: 2026-06-30
|
|
23
|
+
changes: "Dodano sekcję samodzielnego hostowania"
|
|
21
24
|
- version: 6.0.1
|
|
22
25
|
date: 2025-09-22
|
|
23
26
|
changes: "Dodano dokumentację synchronizacji na żywo"
|
|
@@ -384,6 +387,18 @@ Uwagi i ograniczenia:
|
|
|
384
387
|
- Flaga `live` jest oceniana dla każdego słownika podczas budowania (build time). Jeśli zdalna zawartość nie była oznaczona jako `live=true` podczas budowania (build time), musisz przebudować projekt, aby włączyć Live Sync dla tego słownika.
|
|
385
388
|
- Serwer live sync musi mieć możliwość zapisu do `.intlayer`. W kontenerach upewnij się, że masz dostęp do zapisu do `/.intlayer`.
|
|
386
389
|
|
|
390
|
+
## Samodzielne hostowanie (Self-Hosting)
|
|
391
|
+
|
|
392
|
+
Intlayer może działać w całości na Twojej własnej infrastrukturze. Jedna komenda uruchamia pełny stos (panel, API, bazę danych, magazyn obiektów i pocztę e-mail) za pomocą Docker Compose:
|
|
393
|
+
|
|
394
|
+
```sh
|
|
395
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Pełny przewodnik konfiguracji, dokumentację zmiennych środowiskowych, instrukcje aktualizacji oraz procedury tworzenia kopii zapasowych i przywracania znajdziesz w [Przewodniku po samodzielnym hostowaniu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/self_hosting.md).
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
387
402
|
## Debug
|
|
388
403
|
|
|
389
404
|
Jeśli napotkasz jakiekolwiek problemy z CMS, sprawdź następujące kwestie:
|
package/docs/pl/releases/v9.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2026-06-14
|
|
3
|
-
updatedAt: 2026-06-
|
|
3
|
+
updatedAt: 2026-06-30
|
|
4
4
|
title: Nowy Intlayer v9 - Co nowego?
|
|
5
5
|
description: Odkryj nowości w Intlayer v9. Przedstawiamy pakiety kompatybilności typu drop-in dla popularnych bibliotek i18n oraz wsparcie dla Kolekcji (Collections) i Wariantów (Variants).
|
|
6
6
|
keywords:
|
|
@@ -9,6 +9,8 @@ keywords:
|
|
|
9
9
|
- Migracja
|
|
10
10
|
- Kolekcje
|
|
11
11
|
- Warianty
|
|
12
|
+
- Self-Hosting
|
|
13
|
+
- Docker
|
|
12
14
|
- i18next
|
|
13
15
|
- next-intl
|
|
14
16
|
- vue-i18n
|
|
@@ -299,6 +301,59 @@ npm install intlayer react-native-intlayer
|
|
|
299
301
|
|
|
300
302
|
---
|
|
301
303
|
|
|
304
|
+
## SDK CMS: używaj Intlayer jako bezgłowej bazy danych treści
|
|
305
|
+
|
|
306
|
+
Intlayer v9 dostarcza przejrzysty, samodzielnie uwierzytelniający się SDK w `@intlayer/api` do programowej interakcji z CMS — pobieranie projektów, pobieranie słowników oraz wysyłanie lub aktualizowanie ich z własnego serwera, skryptów lub CI. Uwierzytelnianie (OAuth2 `client_credentials`) jest obsługiwane i odświeżane za Ciebie.
|
|
307
|
+
|
|
308
|
+
SDK jest podzielony na **dwa osobne importy**, dzięki czemu Twój bundle zawiera tylko te domeny, których faktycznie używasz:
|
|
309
|
+
|
|
310
|
+
1. `createIntlayerCMS` — lekki **uwierzytelniacz** przechowujący poświadczenia i zarządzany token (bez dołączania klienta domeny).
|
|
311
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — **łączniki endpointów** dla poszczególnych domen, każdy importowany z własnej podścieżki.
|
|
312
|
+
|
|
313
|
+
```ts fileName="cms.ts"
|
|
314
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
315
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
316
|
+
|
|
317
|
+
// Konfiguracja jest opcjonalna: poświadczenia są pobierane z INTLAYER_CLIENT_ID /
|
|
318
|
+
// INTLAYER_CLIENT_SECRET rozwiązywanych przez `@intlayer/config/built`.
|
|
319
|
+
const cms = createIntlayerCMS();
|
|
320
|
+
|
|
321
|
+
// Odczyt
|
|
322
|
+
const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
|
|
323
|
+
|
|
324
|
+
// Zapis — używaj CMS jak bazy danych
|
|
325
|
+
await dictionaryEndpoint(cms).pushDictionaries([myDictionary]);
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
> Bezpieczeństwo: poświadczenia CMS dają dostęp do zapisu Twoich treści. Twórz uwierzytelniacz wyłącznie **po stronie serwera** — nigdy nie wysyłaj `clientId` / `clientSecret` do przeglądarki.
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Samodzielne hostowanie (Self-Hosting)
|
|
333
|
+
|
|
334
|
+
Intlayer v9 zapewnia pełne wsparcie dla uruchamiania własnej instancji Intlayer za pomocą jednej komendy — bez konieczności posiadania konta Intlayer Cloud.
|
|
335
|
+
|
|
336
|
+
```sh
|
|
337
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
Instalator pobiera `docker-compose.yml` i `.env`, automatycznie generuje wymagane sekrety i uruchamia `docker compose up -d`. Wszystko — panel, API, baza danych, magazyn obiektów oraz transakcyjne wiadomości e-mail — działa lokalnie w kontenerach.
|
|
341
|
+
|
|
342
|
+
### Uwzględnione serwisy
|
|
343
|
+
|
|
344
|
+
| Serwis | Przeznaczenie |
|
|
345
|
+
| ------------------------------------------ | ---------------------------------------------------------------------------------- |
|
|
346
|
+
| **app** (TanStack Start) | Interfejs panelu na porcie `3000` |
|
|
347
|
+
| **backend** (Fastify/Bun) | REST API na porcie `3100` |
|
|
348
|
+
| **MongoDB 7** (jednowęzłowy zestaw replik) | Główna baza danych |
|
|
349
|
+
| **Redis 7** | Kolejki zadań i pamięć podręczna |
|
|
350
|
+
| **MinIO** | Magazyn obiektów zgodny z S3 (awatary, zrzuty ekranu) |
|
|
351
|
+
| **Mailpit** | Lokalny odbiorca SMTP + interfejs webowy dla poczty transakcyjnej na porcie `8025` |
|
|
352
|
+
|
|
353
|
+
Chromium (używany do generowania zrzutów ekranu przez Puppeteer) jest wbudowany w obraz backendu — żaden dodatkowy kontener nie jest potrzebny.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
302
357
|
## Uwagi dotyczące migracji z wersji v8
|
|
303
358
|
|
|
304
359
|
Jeśli aktualizujesz aplikację z wersji v8, pamiętaj, że wersja v9 nie zawiera zmian wprowadzających niekompatybilność wsteczną (breaking changes). Oto jednak kluczowe zmiany:
|
|
@@ -314,3 +369,5 @@ Jeśli aktualizujesz aplikację z wersji v8, pamiętaj, że wersja v9 nie zawier
|
|
|
314
369
|
- [Przewodnik po pakietach kompatybilności (Compat Adapter Packages)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/index.md)
|
|
315
370
|
- [Dynamiczne słowniki - Kolekcje i Warianty](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dynamic_dictionaries/index.md)
|
|
316
371
|
- [Dokumentacja konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
|
|
372
|
+
- [SDK CMS - Programowy dostęp z @intlayer/api](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md)
|
|
373
|
+
- [Przewodnik po samodzielnym hostowaniu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/self_hosting.md)
|