@intlayer/docs 7.1.9 → 7.2.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/README.md +1 -0
- package/dist/cjs/generated/docs.entry.cjs +19 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +19 -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_with_svelte_kit.md +730 -0
- package/docs/ar/intlayer_with_vite+svelte.md +288 -104
- package/docs/de/intlayer_with_svelte_kit.md +730 -0
- package/docs/de/intlayer_with_vite+svelte.md +302 -101
- package/docs/en/intlayer_with_svelte_kit.md +560 -0
- package/docs/en/intlayer_with_vite+svelte.md +22 -6
- package/docs/en/introduction.md +2 -0
- package/docs/en-GB/intlayer_with_svelte_kit.md +730 -0
- package/docs/en-GB/intlayer_with_vite+svelte.md +262 -84
- package/docs/es/intlayer_with_svelte_kit.md +730 -0
- package/docs/es/intlayer_with_vite+svelte.md +300 -107
- package/docs/fr/intlayer_with_svelte_kit.md +762 -0
- package/docs/fr/intlayer_with_vite+svelte.md +297 -101
- package/docs/hi/intlayer_with_svelte_kit.md +730 -0
- package/docs/hi/intlayer_with_vite+svelte.md +298 -108
- package/docs/id/intlayer_with_svelte_kit.md +730 -0
- package/docs/id/intlayer_with_vite+svelte.md +277 -99
- package/docs/it/intlayer_with_svelte_kit.md +762 -0
- package/docs/it/intlayer_with_vite+svelte.md +275 -99
- package/docs/ja/intlayer_with_svelte_kit.md +730 -0
- package/docs/ja/intlayer_with_vite+svelte.md +295 -110
- package/docs/ko/intlayer_with_svelte_kit.md +730 -0
- package/docs/ko/intlayer_with_vite+svelte.md +286 -199
- package/docs/pl/intlayer_with_svelte_kit.md +732 -0
- package/docs/pl/intlayer_with_vite+svelte.md +273 -101
- package/docs/pt/intlayer_with_svelte_kit.md +764 -0
- package/docs/pt/intlayer_with_vite+svelte.md +290 -96
- package/docs/ru/intlayer_with_svelte_kit.md +730 -0
- package/docs/ru/intlayer_with_vite+svelte.md +275 -99
- package/docs/tr/intlayer_with_svelte_kit.md +730 -0
- package/docs/tr/intlayer_with_vite+svelte.md +297 -119
- package/docs/vi/intlayer_with_svelte_kit.md +730 -0
- package/docs/vi/intlayer_with_vite+svelte.md +275 -102
- package/docs/zh/intlayer_with_svelte_kit.md +730 -0
- package/docs/zh/intlayer_with_vite+svelte.md +309 -107
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +19 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
|
-
updatedAt: 2025-
|
|
3
|
+
updatedAt: 2025-11-19
|
|
4
4
|
title: Jak przetłumaczyć swoją aplikację Vite i Svelte – przewodnik i18n 2025
|
|
5
|
-
description: Dowiedz się, jak uczynić swoją stronę Vite i Svelte wielojęzyczną. Postępuj zgodnie z dokumentacją, aby
|
|
5
|
+
description: Dowiedz się, jak uczynić swoją stronę Vite i Svelte wielojęzyczną. Postępuj zgodnie z dokumentacją, aby zrealizować internacjonalizację (i18n) i tłumaczenie.
|
|
6
6
|
keywords:
|
|
7
7
|
- Internacjonalizacja
|
|
8
8
|
- Dokumentacja
|
|
@@ -14,18 +14,17 @@ slugs:
|
|
|
14
14
|
- doc
|
|
15
15
|
- environment
|
|
16
16
|
- vite-and-svelte
|
|
17
|
-
|
|
17
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-vite-svelte-template
|
|
18
18
|
history:
|
|
19
|
+
- version: 5.5.11
|
|
20
|
+
date: 2025-11-19
|
|
21
|
+
changes: Aktualizacja dokumentacji
|
|
19
22
|
- version: 5.5.10
|
|
20
23
|
date: 2025-06-29
|
|
21
24
|
changes: Inicjalizacja historii
|
|
22
25
|
---
|
|
23
26
|
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
> Ten pakiet jest w trakcie rozwoju. Zobacz [zgłoszenie](https://github.com/aymericzip/intlayer/issues/114) po więcej informacji. Pokaż swoje zainteresowanie Intlayer dla Svelte, dając like temu zgłoszeniu
|
|
27
|
-
|
|
28
|
-
<!-- Zobacz [Szablon aplikacji](https://github.com/aymericzip/intlayer-solid-template) na GitHub. -->
|
|
27
|
+
# Przetłumacz swoją stronę Vite i Svelte za pomocą Intlayer | Internacjonalizacja (i18n)
|
|
29
28
|
|
|
30
29
|
## Spis treści
|
|
31
30
|
|
|
@@ -37,15 +36,25 @@ history:
|
|
|
37
36
|
|
|
38
37
|
Dzięki Intlayer możesz:
|
|
39
38
|
|
|
40
|
-
- **Łatwo zarządzać tłumaczeniami** za pomocą deklaratywnych słowników na poziomie
|
|
39
|
+
- **Łatwo zarządzać tłumaczeniami** za pomocą deklaratywnych słowników na poziomie komponentu.
|
|
41
40
|
- **Dynamicznie lokalizować metadane**, trasy i zawartość.
|
|
42
41
|
- **Zapewnić wsparcie dla TypeScript** dzięki automatycznie generowanym typom, co poprawia autouzupełnianie i wykrywanie błędów.
|
|
43
|
-
- **
|
|
42
|
+
- **Korzystać z zaawansowanych funkcji**, takich jak dynamiczne wykrywanie i przełączanie lokalizacji.
|
|
44
43
|
|
|
45
44
|
---
|
|
46
45
|
|
|
47
46
|
## Przewodnik krok po kroku, jak skonfigurować Intlayer w aplikacji Vite i Svelte
|
|
48
47
|
|
|
48
|
+
<iframe
|
|
49
|
+
src="https://stackblitz.com/github/aymericzip/intlayer-vite-react-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
50
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
51
|
+
title="Demo CodeSandbox - Jak internacjonalizować swoją aplikację za pomocą Intlayer"
|
|
52
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
53
|
+
loading="lazy"
|
|
54
|
+
/>
|
|
55
|
+
|
|
56
|
+
Zobacz [Szablon aplikacji](https://github.com/aymericzip/intlayer-vite-svelte-template) na GitHub.
|
|
57
|
+
|
|
49
58
|
### Krok 1: Zainstaluj zależności
|
|
50
59
|
|
|
51
60
|
Zainstaluj niezbędne pakiety za pomocą npm:
|
|
@@ -65,23 +74,26 @@ yarn add intlayer svelte-intlayer
|
|
|
65
74
|
yarn add vite-intlayer --save-dev
|
|
66
75
|
```
|
|
67
76
|
|
|
68
|
-
|
|
77
|
+
```bash packageManager="bun"
|
|
78
|
+
bun add intlayer svelte-intlayer
|
|
79
|
+
bun add vite-intlayer --save-dev
|
|
80
|
+
```
|
|
69
81
|
|
|
70
82
|
- **intlayer**
|
|
71
83
|
|
|
72
|
-
|
|
84
|
+
Główne pakiet, który dostarcza narzędzia do internacjonalizacji do zarządzania konfiguracją, tłumaczeń, [deklaracji treści](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/content_file.md), transpilecji oraz [poleceń CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_cli.md).
|
|
73
85
|
|
|
74
86
|
- **svelte-intlayer**
|
|
75
|
-
Pakiet
|
|
87
|
+
Pakiet, który integruje Intlayer z aplikacją Svelte. Dostarcza providery kontekstu oraz hooki do internacjonalizacji w Svelte.
|
|
76
88
|
|
|
77
89
|
- **vite-intlayer**
|
|
78
|
-
Zawiera
|
|
90
|
+
Zawiera plugin Vite do integracji Intlayer z [bundlerem Vite](https://vite.dev/guide/why.html#why-bundle-for-production), a także middleware do wykrywania preferowanego języka użytkownika, zarządzania ciasteczkami oraz obsługi przekierowań URL.
|
|
79
91
|
|
|
80
|
-
### Krok 2: Konfiguracja
|
|
92
|
+
### Krok 2: Konfiguracja projektu
|
|
81
93
|
|
|
82
94
|
Utwórz plik konfiguracyjny, aby skonfigurować języki swojej aplikacji:
|
|
83
95
|
|
|
84
|
-
```typescript fileName="intlayer.config.ts"
|
|
96
|
+
```typescript fileName="intlayer.config.ts"
|
|
85
97
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
86
98
|
|
|
87
99
|
const config: IntlayerConfig = {
|
|
@@ -90,27 +102,9 @@ const config: IntlayerConfig = {
|
|
|
90
102
|
Locales.ENGLISH,
|
|
91
103
|
Locales.FRENCH,
|
|
92
104
|
Locales.SPANISH,
|
|
93
|
-
// Twoje
|
|
105
|
+
// Twoje pozostałe lokalizacje
|
|
94
106
|
],
|
|
95
|
-
defaultLocale: Locales.ENGLISH,
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
107
|
|
|
99
|
-
export default config;
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
103
|
-
import { Locales } from "intlayer";
|
|
104
|
-
|
|
105
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
106
|
-
const config = {
|
|
107
|
-
internationalization: {
|
|
108
|
-
locales: [
|
|
109
|
-
Locales.ENGLISH,
|
|
110
|
-
Locales.FRENCH,
|
|
111
|
-
Locales.SPANISH,
|
|
112
|
-
// Twoje inne locale
|
|
113
|
-
],
|
|
114
108
|
defaultLocale: Locales.ENGLISH,
|
|
115
109
|
},
|
|
116
110
|
};
|
|
@@ -118,43 +112,13 @@ const config = {
|
|
|
118
112
|
export default config;
|
|
119
113
|
```
|
|
120
114
|
|
|
121
|
-
|
|
122
|
-
const { Locales } = require("intlayer");
|
|
123
|
-
|
|
124
|
-
/** @type {import('intlayer').IntlayerConfig} */
|
|
125
|
-
const config = {
|
|
126
|
-
internationalization: {
|
|
127
|
-
locales: [
|
|
128
|
-
Locales.ENGLISH,
|
|
129
|
-
Locales.FRENCH,
|
|
130
|
-
Locales.SPANISH,
|
|
131
|
-
// Twoje inne locale
|
|
132
|
-
],
|
|
133
|
-
defaultLocale: Locales.ENGLISH,
|
|
134
|
-
},
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
module.exports = config;
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
> Za pomocą tego pliku konfiguracyjnego możesz ustawić zlokalizowane adresy URL, przekierowania w middleware, nazwy ciasteczek, lokalizację i rozszerzenie deklaracji treści, wyłączyć logi Intlayer w konsoli i wiele więcej. Aby uzyskać pełną listę dostępnych parametrów, zapoznaj się z [dokumentacją konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md).
|
|
141
|
-
|
|
142
|
-
### Krok 3: Zintegruj Intlayer w swojej konfiguracji Vite
|
|
115
|
+
> Poprzez ten plik konfiguracyjny możesz ustawić lokalizowane adresy URL, przekierowania w middleware, nazwy ciasteczek, lokalizację i rozszerzenie deklaracji treści, wyłączyć logi Intlayer w konsoli i wiele więcej. Pełną listę dostępnych parametrów znajdziesz w [dokumentacji konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md).
|
|
143
116
|
|
|
144
|
-
|
|
117
|
+
### Krok 3: Integracja Intlayer w konfiguracji Vite
|
|
145
118
|
|
|
146
|
-
|
|
147
|
-
import { defineConfig } from "vite";
|
|
148
|
-
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
149
|
-
import { intlayer } from "vite-intlayer";
|
|
150
|
-
|
|
151
|
-
// https://vitejs.dev/config/
|
|
152
|
-
export default defineConfig({
|
|
153
|
-
plugins: [svelte(), intlayer()],
|
|
154
|
-
});
|
|
155
|
-
```
|
|
119
|
+
Dodaj plugin intlayer do swojej konfiguracji.
|
|
156
120
|
|
|
157
|
-
```
|
|
121
|
+
```typescript fileName="vite.config.ts"
|
|
158
122
|
import { defineConfig } from "vite";
|
|
159
123
|
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
160
124
|
import { intlayer } from "vite-intlayer";
|
|
@@ -165,22 +129,11 @@ export default defineConfig({
|
|
|
165
129
|
});
|
|
166
130
|
```
|
|
167
131
|
|
|
168
|
-
|
|
169
|
-
const { defineConfig } = require("vite");
|
|
170
|
-
const react = require("@vitejs/plugin-react-swc");
|
|
171
|
-
const { intlayer } = require("vite-intlayer");
|
|
172
|
-
|
|
173
|
-
// https://vitejs.dev/config/
|
|
174
|
-
module.exports = defineConfig({
|
|
175
|
-
plugins: [react(), intlayer()],
|
|
176
|
-
});
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
> Wtyczka Vite `intlayer()` służy do integracji Intlayer z Vite. Zapewnia budowanie plików deklaracji treści oraz monitoruje je w trybie deweloperskim. Definiuje zmienne środowiskowe Intlayer w aplikacji Vite. Dodatkowo dostarcza aliasy w celu optymalizacji wydajności.
|
|
132
|
+
> Wtyczka `intlayer()` dla Vite służy do integracji Intlayer z Vite. Zapewnia budowanie plików deklaracji treści oraz monitoruje je w trybie deweloperskim. Definiuje zmienne środowiskowe Intlayer w aplikacji Vite. Dodatkowo dostarcza aliasy optymalizujące wydajność.
|
|
180
133
|
|
|
181
134
|
### Krok 4: Zadeklaruj swoją treść
|
|
182
135
|
|
|
183
|
-
|
|
136
|
+
Utwórz i zarządzaj deklaracjami treści, aby przechowywać tłumaczenia:
|
|
184
137
|
|
|
185
138
|
```tsx fileName="src/app.content.tsx" contentDeclarationFormat="typescript"
|
|
186
139
|
import { t, type Dictionary } from "intlayer";
|
|
@@ -203,6 +156,7 @@ export default appContent;
|
|
|
203
156
|
import { t } from "intlayer";
|
|
204
157
|
|
|
205
158
|
/** @type {import('intlayer').Dictionary} */
|
|
159
|
+
// Definicja zawartości aplikacji z tłumaczeniami
|
|
206
160
|
const appContent = {
|
|
207
161
|
key: "app",
|
|
208
162
|
content: {
|
|
@@ -221,7 +175,7 @@ export default appContent;
|
|
|
221
175
|
const { t } = require("intlayer");
|
|
222
176
|
|
|
223
177
|
/** @type {import('intlayer').Dictionary} */
|
|
224
|
-
//
|
|
178
|
+
// Definicja zawartości aplikacji z tłumaczeniami
|
|
225
179
|
const appContent = {
|
|
226
180
|
key: "app",
|
|
227
181
|
content: {
|
|
@@ -253,39 +207,259 @@ module.exports = appContent;
|
|
|
253
207
|
}
|
|
254
208
|
```
|
|
255
209
|
|
|
256
|
-
> Twoje deklaracje zawartości mogą być zdefiniowane w dowolnym miejscu w aplikacji, pod warunkiem, że
|
|
210
|
+
> Twoje deklaracje zawartości mogą być zdefiniowane w dowolnym miejscu w Twojej aplikacji, pod warunkiem, że zostaną umieszczone w katalogu `contentDir` (domyślnie `./src`). I będą miały rozszerzenie pliku deklaracji zawartości (domyślnie `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
257
211
|
|
|
258
212
|
> Aby uzyskać więcej szczegółów, zapoznaj się z [dokumentacją deklaracji zawartości](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/dictionary/content_file.md).
|
|
259
213
|
|
|
260
214
|
### Krok 5: Wykorzystaj Intlayer w swoim kodzie
|
|
261
215
|
|
|
262
|
-
|
|
216
|
+
```svelte fileName="src/App.svelte"
|
|
217
|
+
<script>
|
|
218
|
+
import { useIntlayer } from "svelte-intlayer";
|
|
263
219
|
|
|
264
|
-
|
|
220
|
+
const content = useIntlayer("app");
|
|
221
|
+
</script>
|
|
265
222
|
|
|
266
|
-
|
|
223
|
+
<div>
|
|
267
224
|
|
|
268
|
-
### (Opcjonalnie) Krok 7: Dodaj lokalizowane routingi do swojej aplikacji
|
|
269
225
|
|
|
270
|
-
|
|
226
|
+
<!-- Renderuj zawartość jako prostą zawartość -->
|
|
227
|
+
<h1>{$content.title}</h1>
|
|
228
|
+
<!-- Aby renderować zawartość edytowalną za pomocą edytora -->
|
|
229
|
+
<h1><svelte:component this={$content.title} /></h1>
|
|
230
|
+
<!-- Aby renderować zawartość jako ciąg znaków -->
|
|
231
|
+
<div aria-label={$content.title.value}></div>
|
|
232
|
+
```
|
|
271
233
|
|
|
272
|
-
### (
|
|
234
|
+
### (Opcjonalny) Krok 6: Zmień język swojej zawartości
|
|
273
235
|
|
|
274
|
-
|
|
236
|
+
```svelte fileName="src/App.svelte"
|
|
237
|
+
<script lang="ts">
|
|
238
|
+
import { getLocaleName } from 'intlayer';
|
|
239
|
+
import { useLocale } from 'svelte-intlayer';
|
|
275
240
|
|
|
276
|
-
|
|
241
|
+
// Pobierz informacje o lokalizacji i funkcję setLocale
|
|
242
|
+
const { locale, availableLocales, setLocale } = useLocale();
|
|
277
243
|
|
|
278
|
-
|
|
244
|
+
// Obsłuż zmianę lokalizacji
|
|
245
|
+
const changeLocale = (event: Event) => {
|
|
246
|
+
const target = event.target as HTMLSelectElement;
|
|
247
|
+
const newLocale = target.value;
|
|
248
|
+
setLocale(newLocale);
|
|
249
|
+
};
|
|
250
|
+
</script>
|
|
251
|
+
|
|
252
|
+
<div>
|
|
253
|
+
<select value={$locale} on:change={changeLocale}>
|
|
254
|
+
{#each availableLocales ?? [] as loc}
|
|
255
|
+
<option value={loc}>
|
|
256
|
+
{getLocaleName(loc)}
|
|
257
|
+
</option>
|
|
258
|
+
{/each}
|
|
259
|
+
</select>
|
|
260
|
+
</div>
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### (Opcjonalny) Krok 7: Renderowanie Markdown
|
|
264
|
+
|
|
265
|
+
Intlayer obsługuje renderowanie zawartości Markdown bezpośrednio w Twojej aplikacji Svelte. Domyślnie Markdown jest traktowany jako zwykły tekst. Aby przekształcić Markdown w bogaty HTML, możesz zintegrować `@humanspeak/svelte-markdown` lub inny parser markdown.
|
|
266
|
+
|
|
267
|
+
> Aby zobaczyć, jak deklarować zawartość markdown za pomocą pakietu `intlayer`, zobacz [dokumentację markdown](https://github.com/aymericzip/intlayer/tree/main/docs/pl/dictionary/markdown.md).
|
|
268
|
+
|
|
269
|
+
```svelte fileName="src/App.svelte"
|
|
270
|
+
<script>
|
|
271
|
+
import { setIntlayerMarkdown } from "svelte-intlayer";
|
|
272
|
+
|
|
273
|
+
setIntlayerMarkdown((markdown) =>
|
|
274
|
+
// renderuj zawartość markdown jako ciąg znaków
|
|
275
|
+
return markdown;
|
|
276
|
+
);
|
|
277
|
+
</script>
|
|
278
|
+
|
|
279
|
+
<h1>{$content.markdownContent}</h1>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
> Możesz również uzyskać dostęp do danych front-matter swojego markdowna, używając właściwości `content.markdownContent.metadata.xxx`.
|
|
283
|
+
|
|
284
|
+
### (Opcjonalny) Krok 8: Konfiguracja edytora / CMS intlayer
|
|
285
|
+
|
|
286
|
+
Aby skonfigurować edytor intlayer, musisz postępować zgodnie z [dokumentacją edytora intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_visual_editor.md).
|
|
279
287
|
|
|
280
|
-
|
|
288
|
+
Aby skonfigurować CMS intlayer, musisz postępować zgodnie z [dokumentacją CMS intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md).
|
|
289
|
+
|
|
290
|
+
Równolegle, w swojej aplikacji Svelte, musisz dodać następującą linię w layoucie lub na poziomie root aplikacji:
|
|
291
|
+
|
|
292
|
+
```svelte fileName="src/layout.svelte"
|
|
293
|
+
import { useIntlayerEditor } from "svelte-intlayer";
|
|
294
|
+
|
|
295
|
+
useIntlayerEditor();
|
|
296
|
+
```
|
|
281
297
|
|
|
282
|
-
|
|
298
|
+
### (Opcjonalny) Krok 7: Dodaj lokalizowane routingi do swojej aplikacji
|
|
299
|
+
|
|
300
|
+
Aby obsłużyć lokalizowane routingi w swojej aplikacji Svelte, możesz użyć `svelte-spa-router` wraz z `localeFlatMap` z Intlayer do generowania tras dla każdej lokalizacji.
|
|
301
|
+
|
|
302
|
+
Najpierw zainstaluj `svelte-spa-router`:
|
|
303
|
+
|
|
304
|
+
```bash packageManager="npm"
|
|
305
|
+
npm install svelte-spa-router
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
```bash packageManager="pnpm"
|
|
309
|
+
pnpm add svelte-spa-router
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
```bash packageManager="yarn"
|
|
313
|
+
yarn add svelte-spa-router
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
```bash packageManager="bun"
|
|
317
|
+
bun add svelte-spa-router
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Następnie utwórz plik `Router.svelte`, aby zdefiniować swoje trasy:
|
|
321
|
+
|
|
322
|
+
```svelte fileName="src/Router.svelte"
|
|
323
|
+
<script lang="ts">
|
|
324
|
+
import { localeFlatMap } from "intlayer";
|
|
325
|
+
import Router from "svelte-spa-router";
|
|
326
|
+
import { wrap } from "svelte-spa-router/wrap";
|
|
327
|
+
import App from "./App.svelte";
|
|
328
|
+
|
|
329
|
+
const routes = Object.fromEntries(
|
|
330
|
+
localeFlatMap(({locale, urlPrefix}) => [
|
|
331
|
+
[
|
|
332
|
+
urlPrefix || '/',
|
|
333
|
+
wrap({
|
|
334
|
+
component: App as any,
|
|
335
|
+
props: {
|
|
336
|
+
locale,
|
|
337
|
+
},
|
|
338
|
+
}),
|
|
339
|
+
],
|
|
340
|
+
])
|
|
341
|
+
);
|
|
342
|
+
</script>
|
|
343
|
+
|
|
344
|
+
<Router {routes} />
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Zaktualizuj swój plik `main.ts`, aby zamontować komponent `Router` zamiast `App`:
|
|
348
|
+
|
|
349
|
+
```typescript fileName="src/main.ts"
|
|
350
|
+
import { mount } from "svelte";
|
|
351
|
+
import Router from "./Router.svelte";
|
|
352
|
+
|
|
353
|
+
const app = mount(Router, {
|
|
354
|
+
target: document.getElementById("app")!,
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
export default app;
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
Na koniec zaktualizuj swój plik `App.svelte`, aby otrzymywał właściwość `locale` i używał jej z `useIntlayer`:
|
|
361
|
+
|
|
362
|
+
```svelte fileName="src/App.svelte"
|
|
363
|
+
<script lang="ts">
|
|
364
|
+
import type { Locale } from 'intlayer';
|
|
365
|
+
import { useIntlayer } from 'svelte-intlayer';
|
|
366
|
+
import Counter from './lib/Counter.svelte';
|
|
367
|
+
import LocaleSwitcher from './lib/LocaleSwitcher.svelte';
|
|
368
|
+
|
|
369
|
+
export let locale: Locale;
|
|
370
|
+
|
|
371
|
+
$: content = useIntlayer('app', locale);
|
|
372
|
+
</script>
|
|
373
|
+
|
|
374
|
+
<main>
|
|
375
|
+
<div class="locale-switcher-container">
|
|
376
|
+
<LocaleSwitcher currentLocale={locale} />
|
|
377
|
+
</div>
|
|
378
|
+
|
|
379
|
+
<!-- ... reszta twojej aplikacji ... -->
|
|
380
|
+
</main>
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
#### Konfiguracja routingu po stronie serwera (opcjonalnie)
|
|
384
|
+
|
|
385
|
+
Równolegle możesz również użyć `intlayerProxy`, aby dodać routing po stronie serwera do swojej aplikacji. Ten plugin automatycznie wykryje aktualny język na podstawie URL i ustawi odpowiedni cookie językowy. Jeśli nie zostanie określony żaden język, plugin wybierze najbardziej odpowiedni język na podstawie preferencji językowych przeglądarki użytkownika. Jeśli nie zostanie wykryty żaden język, nastąpi przekierowanie do domyślnego języka.
|
|
386
|
+
|
|
387
|
+
> Uwaga: aby używać `intlayerProxy` w środowisku produkcyjnym, musisz przenieść pakiet `vite-intlayer` z `devDependencies` do `dependencies`.
|
|
388
|
+
|
|
389
|
+
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
390
|
+
import { defineConfig } from "vite";
|
|
391
|
+
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
392
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
393
|
+
|
|
394
|
+
plugins: [svelte(), intlayer(), intlayerProxy()],
|
|
395
|
+
});
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
399
|
+
import { defineConfig } from "vite";
|
|
400
|
+
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
401
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
402
|
+
|
|
403
|
+
// https://vitejs.dev/config/
|
|
404
|
+
export default defineConfig({
|
|
405
|
+
plugins: [svelte(), intlayer(), intlayerProxy()],
|
|
406
|
+
});
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
410
|
+
const { defineConfig } = require("vite");
|
|
411
|
+
const { svelte } = require("@sveltejs/vite-plugin-svelte");
|
|
412
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
413
|
+
|
|
414
|
+
// https://vitejs.dev/config/
|
|
415
|
+
module.exports = defineConfig({
|
|
416
|
+
plugins: [svelte(), intlayer(), intlayerProxy()],
|
|
417
|
+
});
|
|
418
|
+
plugins: [svelte(), intlayer(), intlayerProxy()],
|
|
419
|
+
});
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### (Opcjonalny) Krok 8: Zmiana URL po zmianie lokalizacji
|
|
423
|
+
|
|
424
|
+
Aby umożliwić użytkownikom zmianę języka i odpowiednią aktualizację URL, możesz stworzyć komponent `LocaleSwitcher`. Komponent ten będzie korzystał z `getLocalizedUrl` z pakietu `intlayer` oraz `push` z `svelte-spa-router`.
|
|
425
|
+
|
|
426
|
+
```svelte fileName="src/lib/LocaleSwitcher.svelte"
|
|
427
|
+
<script lang="ts">
|
|
428
|
+
import { getLocaleName, getLocalizedUrl } from "intlayer";
|
|
429
|
+
import { useLocale } from "svelte-intlayer";
|
|
430
|
+
import { push } from "svelte-spa-router";
|
|
431
|
+
|
|
432
|
+
export let currentLocale: string | undefined = undefined;
|
|
433
|
+
|
|
434
|
+
// Pobierz informacje o lokalizacji
|
|
435
|
+
const { locale, availableLocales } = useLocale();
|
|
436
|
+
|
|
437
|
+
// Obsługa zmiany lokalizacji
|
|
438
|
+
const changeLocale = (event: Event) => {
|
|
439
|
+
const target = event.target as HTMLSelectElement;
|
|
440
|
+
const newLocale = target.value;
|
|
441
|
+
const currentUrl = window.location.pathname;
|
|
442
|
+
const url = getLocalizedUrl( currentUrl, newLocale);
|
|
443
|
+
push(url);
|
|
444
|
+
};
|
|
445
|
+
</script>
|
|
446
|
+
|
|
447
|
+
<div class="locale-switcher">
|
|
448
|
+
<select value={currentLocale ?? $locale} onchange={changeLocale}>
|
|
449
|
+
{#each availableLocales ?? [] as loc}
|
|
450
|
+
<option value={loc}>
|
|
451
|
+
{getLocaleName(loc)}
|
|
452
|
+
</option>
|
|
453
|
+
{/each}
|
|
454
|
+
</select>
|
|
455
|
+
</div>
|
|
456
|
+
```
|
|
283
457
|
|
|
284
458
|
### Konfiguracja Git
|
|
285
459
|
|
|
286
460
|
Zaleca się ignorowanie plików generowanych przez Intlayer. Pozwala to uniknąć ich zatwierdzania do repozytorium Git.
|
|
287
461
|
|
|
288
|
-
Aby to zrobić, możesz dodać następujące instrukcje do
|
|
462
|
+
Aby to zrobić, możesz dodać następujące instrukcje do pliku `.gitignore`:
|
|
289
463
|
|
|
290
464
|
```plaintext
|
|
291
465
|
# Ignoruj pliki generowane przez Intlayer
|
|
@@ -294,9 +468,9 @@ Aby to zrobić, możesz dodać następujące instrukcje do swojego pliku `.gitig
|
|
|
294
468
|
|
|
295
469
|
### Rozszerzenie VS Code
|
|
296
470
|
|
|
297
|
-
Aby poprawić swoje doświadczenie
|
|
471
|
+
Aby poprawić swoje doświadczenie w pracy z Intlayer, możesz zainstalować oficjalne **rozszerzenie Intlayer dla VS Code**.
|
|
298
472
|
|
|
299
|
-
[Zainstaluj z
|
|
473
|
+
[Zainstaluj z VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
300
474
|
|
|
301
475
|
To rozszerzenie oferuje:
|
|
302
476
|
|
|
@@ -305,12 +479,10 @@ To rozszerzenie oferuje:
|
|
|
305
479
|
- **Podglądy w linii** przetłumaczonej zawartości.
|
|
306
480
|
- **Szybkie akcje** umożliwiające łatwe tworzenie i aktualizowanie tłumaczeń.
|
|
307
481
|
|
|
308
|
-
Aby uzyskać więcej
|
|
482
|
+
Aby uzyskać więcej informacji na temat korzystania z rozszerzenia, zapoznaj się z [dokumentacją rozszerzenia Intlayer dla VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
309
483
|
|
|
310
484
|
---
|
|
311
485
|
|
|
312
486
|
### Idź dalej
|
|
313
487
|
|
|
314
488
|
Aby pójść dalej, możesz zaimplementować [edytor wizualny](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_visual_editor.md) lub wyeksportować swoją zawartość, korzystając z [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md).
|
|
315
|
-
|
|
316
|
-
---
|