@intlayer/docs 9.2.0 → 9.3.1
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 +24 -24
- package/blog/ar/index.md +1 -1
- package/blog/ar/rag_powered_documentation_assistant.md +1 -1
- package/blog/de/index.md +1 -1
- package/blog/en/index.md +1 -1
- package/blog/en-GB/index.md +1 -1
- package/blog/es/index.md +1 -1
- package/blog/fr/index.md +1 -1
- package/blog/hi/index.md +1 -1
- package/blog/id/index.md +1 -1
- package/blog/it/index.md +1 -1
- package/blog/ja/index.md +1 -1
- package/blog/ko/index.md +1 -1
- package/blog/pl/index.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +1 -1
- package/blog/pt/index.md +1 -1
- package/blog/ru/index.md +1 -1
- package/blog/uk/index.md +1 -1
- package/blog/vi/index.md +1 -1
- package/blog/zh/index.md +1 -1
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
- package/dist/cjs/authors2.cjs +0 -1
- package/dist/cjs/common.cjs +24 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +35 -6
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +35 -6
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +35 -6
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +35 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/common.mjs +24 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +35 -6
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +35 -6
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +35 -6
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +35 -6
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +58 -25
- package/docs/ar/configuration.md +10 -10
- package/docs/ar/interest_of_intlayer.md +24 -22
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_svelte_kit.md +1 -1
- package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ar/intlayer_with_tanstack.md +5 -3
- package/docs/ar/live-sync.md +4 -0
- package/docs/ar/lsp.md +114 -175
- package/docs/ar/readme.md +25 -25
- package/docs/bn/bundle_optimization.md +58 -25
- package/docs/bn/configuration.md +10 -10
- package/docs/bn/interest_of_intlayer.md +24 -22
- package/docs/cs/bundle_optimization.md +58 -25
- package/docs/cs/configuration.md +10 -10
- package/docs/cs/interest_of_intlayer.md +24 -22
- package/docs/de/bundle_optimization.md +58 -25
- package/docs/de/configuration.md +10 -10
- package/docs/de/interest_of_intlayer.md +24 -22
- package/docs/de/intlayer_with_svelte_kit.md +1 -1
- package/docs/de/intlayer_with_tanstack+solid.md +5 -3
- package/docs/de/intlayer_with_tanstack.md +5 -3
- package/docs/de/live-sync.md +4 -0
- package/docs/de/lsp.md +111 -172
- package/docs/de/readme.md +24 -24
- package/docs/en/bundle_optimization.md +51 -23
- package/docs/en/configuration.md +10 -10
- package/docs/en/interest_of_intlayer.md +24 -22
- package/docs/en/intlayer_with_svelte_kit.md +1 -1
- package/docs/en/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en/intlayer_with_tanstack.md +5 -3
- package/docs/en/live-sync.md +4 -0
- package/docs/en/lsp.md +109 -170
- package/docs/en/readme.md +24 -24
- package/docs/en-GB/bundle_optimization.md +58 -25
- package/docs/en-GB/configuration.md +10 -10
- package/docs/en-GB/interest_of_intlayer.md +24 -22
- package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
- package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en-GB/intlayer_with_tanstack.md +5 -3
- package/docs/en-GB/live-sync.md +4 -0
- package/docs/en-GB/lsp.md +109 -170
- package/docs/en-GB/readme.md +24 -24
- package/docs/es/bundle_optimization.md +58 -25
- package/docs/es/configuration.md +10 -10
- package/docs/es/interest_of_intlayer.md +24 -22
- package/docs/es/intlayer_with_svelte_kit.md +1 -1
- package/docs/es/intlayer_with_tanstack+solid.md +5 -3
- package/docs/es/intlayer_with_tanstack.md +5 -3
- package/docs/es/live-sync.md +4 -0
- package/docs/es/lsp.md +114 -175
- package/docs/es/readme.md +24 -24
- package/docs/fr/bundle_optimization.md +58 -25
- package/docs/fr/configuration.md +10 -10
- package/docs/fr/interest_of_intlayer.md +24 -22
- package/docs/fr/intlayer_with_svelte_kit.md +1 -1
- package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/fr/intlayer_with_tanstack.md +5 -3
- package/docs/fr/live-sync.md +4 -0
- package/docs/fr/lsp.md +110 -171
- package/docs/fr/readme.md +24 -24
- package/docs/hi/bundle_optimization.md +58 -25
- package/docs/hi/configuration.md +10 -10
- package/docs/hi/interest_of_intlayer.md +24 -22
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_svelte_kit.md +1 -1
- package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/hi/intlayer_with_tanstack.md +5 -3
- package/docs/hi/live-sync.md +4 -0
- package/docs/hi/lsp.md +113 -174
- package/docs/hi/readme.md +24 -24
- package/docs/id/bundle_optimization.md +58 -25
- package/docs/id/configuration.md +10 -10
- package/docs/id/interest_of_intlayer.md +24 -22
- package/docs/id/intlayer_with_svelte_kit.md +1 -1
- package/docs/id/intlayer_with_tanstack+solid.md +5 -3
- package/docs/id/intlayer_with_tanstack.md +5 -3
- package/docs/id/live-sync.md +4 -0
- package/docs/id/lsp.md +113 -174
- package/docs/id/readme.md +24 -24
- package/docs/it/bundle_optimization.md +58 -25
- package/docs/it/configuration.md +10 -10
- package/docs/it/interest_of_intlayer.md +24 -22
- package/docs/it/intlayer_with_svelte_kit.md +1 -1
- package/docs/it/intlayer_with_tanstack+solid.md +5 -3
- package/docs/it/intlayer_with_tanstack.md +5 -3
- package/docs/it/live-sync.md +4 -0
- package/docs/it/lsp.md +115 -176
- package/docs/it/readme.md +24 -24
- package/docs/ja/bundle_optimization.md +58 -25
- package/docs/ja/configuration.md +10 -10
- package/docs/ja/interest_of_intlayer.md +24 -22
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ja/intlayer_with_tanstack.md +5 -3
- package/docs/ja/live-sync.md +4 -0
- package/docs/ja/lsp.md +113 -174
- package/docs/ja/readme.md +24 -24
- package/docs/ko/bundle_optimization.md +58 -25
- package/docs/ko/configuration.md +10 -10
- package/docs/ko/interest_of_intlayer.md +24 -22
- package/docs/ko/intlayer_with_svelte_kit.md +1 -1
- package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ko/intlayer_with_tanstack.md +5 -3
- package/docs/ko/live-sync.md +4 -0
- package/docs/ko/lsp.md +112 -173
- package/docs/ko/readme.md +24 -24
- package/docs/nl/bundle_optimization.md +58 -25
- package/docs/nl/configuration.md +10 -10
- package/docs/nl/interest_of_intlayer.md +24 -22
- package/docs/pl/bundle_optimization.md +58 -25
- package/docs/pl/configuration.md +10 -10
- package/docs/pl/interest_of_intlayer.md +4 -2
- package/docs/pl/intlayer_with_svelte_kit.md +1 -1
- package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pl/intlayer_with_tanstack.md +5 -3
- package/docs/pl/live-sync.md +4 -0
- package/docs/pl/lsp.md +115 -176
- package/docs/pl/readme.md +24 -24
- package/docs/pt/bundle_optimization.md +58 -24
- package/docs/pt/configuration.md +10 -10
- package/docs/pt/interest_of_intlayer.md +24 -22
- package/docs/pt/intlayer_with_svelte_kit.md +1 -1
- package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pt/intlayer_with_tanstack.md +5 -3
- package/docs/pt/live-sync.md +4 -0
- package/docs/pt/lsp.md +113 -174
- package/docs/pt/readme.md +24 -24
- package/docs/ru/bundle_optimization.md +58 -25
- package/docs/ru/configuration.md +10 -10
- package/docs/ru/interest_of_intlayer.md +24 -22
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_svelte_kit.md +1 -1
- package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ru/intlayer_with_tanstack.md +5 -3
- package/docs/ru/live-sync.md +4 -0
- package/docs/ru/lsp.md +112 -173
- package/docs/ru/readme.md +24 -24
- package/docs/tr/bundle_optimization.md +58 -25
- package/docs/tr/configuration.md +10 -10
- package/docs/tr/interest_of_intlayer.md +24 -22
- package/docs/tr/intlayer_with_svelte_kit.md +1 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/tr/intlayer_with_tanstack.md +5 -3
- package/docs/tr/live-sync.md +4 -0
- package/docs/tr/lsp.md +113 -174
- package/docs/tr/readme.md +24 -24
- package/docs/uk/bundle_optimization.md +58 -25
- package/docs/uk/configuration.md +10 -10
- package/docs/uk/interest_of_intlayer.md +4 -2
- package/docs/uk/intlayer_with_svelte_kit.md +1 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
- package/docs/uk/intlayer_with_tanstack.md +5 -3
- package/docs/uk/live-sync.md +4 -0
- package/docs/uk/lsp.md +113 -174
- package/docs/uk/per_locale_file.md +1 -1
- package/docs/uk/readme.md +24 -24
- package/docs/ur/bundle_optimization.md +58 -25
- package/docs/ur/configuration.md +10 -10
- package/docs/ur/interest_of_intlayer.md +24 -22
- package/docs/vi/bundle_optimization.md +58 -25
- package/docs/vi/configuration.md +10 -10
- package/docs/vi/interest_of_intlayer.md +24 -22
- package/docs/vi/intlayer_with_svelte_kit.md +1 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/vi/intlayer_with_tanstack.md +5 -3
- package/docs/vi/live-sync.md +4 -0
- package/docs/vi/lsp.md +115 -176
- package/docs/vi/readme.md +24 -24
- package/docs/zh/bundle_optimization.md +58 -25
- package/docs/zh/configuration.md +10 -10
- package/docs/zh/interest_of_intlayer.md +24 -22
- package/docs/zh/intlayer_with_svelte_kit.md +1 -1
- package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
- package/docs/zh/intlayer_with_tanstack.md +5 -3
- package/docs/zh/live-sync.md +4 -0
- package/docs/zh/lsp.md +113 -174
- package/docs/zh/readme.md +21 -21
- package/docs/zh-TW/bundle_optimization.md +58 -25
- package/docs/zh-TW/interest_of_intlayer.md +24 -22
- package/package.json +7 -7
- package/src/common.ts +39 -2
- package/src/generated/blog.entry.ts +39 -7
- package/src/generated/docs.entry.ts +39 -7
- package/src/generated/frequentQuestions.entry.ts +39 -7
- package/src/generated/legal.entry.ts +39 -7
|
@@ -387,7 +387,7 @@ export const getLocale = (event: RequestEvent): Locale => {
|
|
|
387
387
|
};
|
|
388
388
|
```
|
|
389
389
|
|
|
390
|
-
> `getLocaleFromStorage` sprawdzi lokalizację na podstawie nagłówka lub ciasteczka w zależności od Twojej konfiguracji. Zobacz [Konfiguracja](https://intlayer.org/doc/configuration) po więcej szczegółów.
|
|
390
|
+
> `getLocaleFromStorage` sprawdzi lokalizację na podstawie nagłówka lub ciasteczka w zależności od Twojej konfiguracji. Zobacz [Konfiguracja](https://intlayer.org/doc/concept/configuration) po więcej szczegółów.
|
|
391
391
|
|
|
392
392
|
> Funkcja `localeDetector` przetworzy nagłówek `Accept-Language` i zwróci najlepsze dopasowanie.
|
|
393
393
|
|
|
@@ -236,19 +236,21 @@ import {
|
|
|
236
236
|
HeadContent,
|
|
237
237
|
Scripts,
|
|
238
238
|
createRootRouteWithContext,
|
|
239
|
+
getRouteApi,
|
|
239
240
|
} from "@tanstack/solid-router";
|
|
240
241
|
import { HydrationScript } from "solid-js/web";
|
|
241
242
|
import { Suspense, type ParentComponent } from "solid-js";
|
|
242
243
|
import { IntlayerProvider } from "solid-intlayer";
|
|
243
244
|
import { defaultLocale, getHTMLTextDir } from "intlayer";
|
|
244
|
-
|
|
245
|
+
|
|
246
|
+
const localeRoute = getRouteApi("/{-$locale}");
|
|
245
247
|
|
|
246
248
|
export const Route = createRootRouteWithContext()({
|
|
247
249
|
shellComponent: RootComponent,
|
|
248
250
|
});
|
|
249
251
|
|
|
250
252
|
const RootComponent: ParentComponent = (props) => {
|
|
251
|
-
const params =
|
|
253
|
+
const params = localeRoute.useParams();
|
|
252
254
|
const locale = params()?.locale ?? defaultLocale;
|
|
253
255
|
|
|
254
256
|
return (
|
|
@@ -533,7 +535,7 @@ Jak pokazano w Kroku 5, możesz zarządzać atrybutami `lang` oraz `dir` tagu `h
|
|
|
533
535
|
|
|
534
536
|
```tsx fileName="src/routes/__root.tsx"
|
|
535
537
|
const RootComponent: ParentComponent = (props) => {
|
|
536
|
-
const params =
|
|
538
|
+
const params = localeRoute.useParams();
|
|
537
539
|
const locale = params()?.locale ?? defaultLocale;
|
|
538
540
|
|
|
539
541
|
return (
|
|
@@ -253,13 +253,15 @@ Skonfiguruj swój główny układ, aby wspierać internacjonalizację, używają
|
|
|
253
253
|
```tsx fileName="src/routes/__root.tsx"
|
|
254
254
|
import {
|
|
255
255
|
createRootRouteWithContext,
|
|
256
|
+
getRouteApi,
|
|
256
257
|
HeadContent,
|
|
257
258
|
Scripts,
|
|
258
259
|
} from "@tanstack/react-router";
|
|
259
260
|
import { defaultLocale, getHTMLTextDir } from "intlayer";
|
|
260
261
|
import { type ReactNode } from "react";
|
|
261
262
|
import { IntlayerProvider } from "react-intlayer";
|
|
262
|
-
|
|
263
|
+
|
|
264
|
+
const localeRoute = getRouteApi("/{-$locale}");
|
|
263
265
|
|
|
264
266
|
export const Route = createRootRouteWithContext<{}>()({
|
|
265
267
|
head: () => ({
|
|
@@ -281,7 +283,7 @@ export const Route = createRootRouteWithContext<{}>()({
|
|
|
281
283
|
});
|
|
282
284
|
|
|
283
285
|
function RootDocument({ children }: { children: ReactNode }) {
|
|
284
|
-
const params =
|
|
286
|
+
const params = localeRoute.useParams();
|
|
285
287
|
const locale = params?.locale ?? defaultLocale;
|
|
286
288
|
|
|
287
289
|
return (
|
|
@@ -614,7 +616,7 @@ Jak pokazano w Kroku 5, możesz zarządzać atrybutami `lang` i `dir` tagu `html
|
|
|
614
616
|
|
|
615
617
|
```tsx fileName="src/routes/__root.tsx"
|
|
616
618
|
function RootDocument({ children }: { children: ReactNode }) {
|
|
617
|
-
const params =
|
|
619
|
+
const params = localeRoute.useParams();
|
|
618
620
|
const locale = params?.locale ?? defaultLocale;
|
|
619
621
|
|
|
620
622
|
return (
|
package/docs/pl/live-sync.md
CHANGED
package/docs/pl/lsp.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-06-07
|
|
3
|
-
updatedAt: 2026-
|
|
4
|
-
title: Serwer Intlayer
|
|
5
|
-
description: Dowiedz się, jak serwer
|
|
3
|
+
updatedAt: 2026-08-10
|
|
4
|
+
title: Serwer LSP Intlayer
|
|
5
|
+
description: Dowiedz się, jak serwer języka Intlayer wnosi przejście do definicji, wyszukiwanie referencji, podglądy po najechaniu kursorem, autouzupełnianie kluczy i diagnostykę do Twojego IDE oraz agenta AI.
|
|
6
6
|
keywords:
|
|
7
7
|
- LSP
|
|
8
|
-
- Serwer
|
|
9
|
-
-
|
|
8
|
+
- Serwer języka
|
|
9
|
+
- Go to Definition
|
|
10
|
+
- Autouzupełnianie
|
|
11
|
+
- Diagnostyka
|
|
10
12
|
- IDE
|
|
11
13
|
- Intlayer
|
|
12
14
|
- VS Code
|
|
@@ -16,56 +18,58 @@ slugs:
|
|
|
16
18
|
- doc
|
|
17
19
|
- lsp
|
|
18
20
|
history:
|
|
21
|
+
- version: 9.1.3
|
|
22
|
+
date: 2026-08-10
|
|
23
|
+
changes: "Dodano wyszukiwanie referencji, podgląd po najechaniu, autouzupełnianie i diagnostykę"
|
|
19
24
|
- version: 8.12.0
|
|
20
25
|
date: 2026-06-01
|
|
21
26
|
changes: "Release LSP"
|
|
22
27
|
author: aymericzip
|
|
23
28
|
---
|
|
24
29
|
|
|
25
|
-
# Serwer Intlayer
|
|
30
|
+
# Serwer LSP Intlayer
|
|
26
31
|
|
|
27
|
-
**Serwer
|
|
32
|
+
**Serwer języka Intlayer** to implementacja [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/), która sprawia, że Twoje IDE — i Twój agent AI — rozumieją Intlayer. Łączy wywołanie takie jak `useIntlayer("home")` z plikiem `.content.ts`, który je deklaruje, w obie strony.
|
|
28
33
|
|
|
29
34
|
---
|
|
30
35
|
|
|
31
|
-
##
|
|
36
|
+
## Funkcje
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
| Funkcja | Skrót | Opis |
|
|
39
|
+
| ------------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| **Przejdź do definicji** | `F12` / `Cmd+Klik` | Przejście od klucza słownika lub użycia pola do jego deklaracji w pliku treści |
|
|
41
|
+
| **Znajdź wszystkie referencje** | `Shift+F12` | Z pliku treści wypisanie każdego miejsca wywołania używającego tego klucza lub pola |
|
|
42
|
+
| **Podgląd (hover)** | najedź kursorem | Podgląd pól słownika lub przetłumaczonej wartości pola bez opuszczania pliku |
|
|
43
|
+
| **Autouzupełnianie** | `"` `'` `` ` `` `.` | Podpowiadanie zadeklarowanych kluczy słowników wewnątrz gettera oraz pól treści po `.` lub przy destrukturyzacji |
|
|
44
|
+
| **Diagnostyka** | automatycznie | Ostrzeżenie, gdy klucz nie jest zadeklarowany w żadnym pliku treści |
|
|
34
45
|
|
|
35
|
-
|
|
46
|
+
Warto znać dwa dodatkowe zachowania:
|
|
36
47
|
|
|
37
|
-
|
|
48
|
+
- **Scalone słowniki** — klucz podzielony na kilka plików treści zwraca jeden wynik na plik, dzięki czemu możesz przejść do każdej deklaracji.
|
|
49
|
+
- **Obsługa monorepo** — serwer rozwiązuje _najbliższy_ każdemu plikowi `intlayer.config.*`, dzięki czemu wiele projektów w jednym obszarze roboczym ma własne słowniki.
|
|
38
50
|
|
|
39
|
-
|
|
51
|
+
### Obsługiwane wywołania
|
|
40
52
|
|
|
41
|
-
|
|
53
|
+
Klucz jest odczytywany albo z pozycyjnego argumentu tekstowego, albo z obiektu opcji (`{ namespace }`, `{ id }`).
|
|
42
54
|
|
|
43
|
-
|
|
55
|
+
| Biblioteka | Wywołania |
|
|
56
|
+
| --------------------------- | -------------------------------------------------------- |
|
|
57
|
+
| **Intlayer** | `useIntlayer`, `getIntlayer` |
|
|
58
|
+
| **i18next / react-i18next** | `useTranslation`, `getFixedT`, `t`, `Trans` |
|
|
59
|
+
| **next-intl / use-intl** | `useTranslations`, `getTranslations`, `createTranslator` |
|
|
60
|
+
| **react-intl** | `formatMessage`, `FormattedMessage` |
|
|
61
|
+
| **Lingui** | `useLingui`, `t`, `Trans`, `_` |
|
|
62
|
+
| **vue-i18n** | `useI18n` |
|
|
44
63
|
|
|
45
|
-
|
|
64
|
+
Działa to dla każdego pakietu `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `intlayer`) oraz dla pakietów adapterów compat, które pozwalają zachować dotychczasową składnię i18n.
|
|
46
65
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Obsługuje wszystkie pakiety `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `adonis-intlayer`, `intlayer`).
|
|
50
|
-
|
|
51
|
-
### Obsługiwane wywołania pobierające
|
|
52
|
-
|
|
53
|
-
Serwer wykrywa następujące wywołania funkcji i wyodrębnia pierwszy argument jako klucz słownika:
|
|
54
|
-
|
|
55
|
-
| Funkcja | Przykład |
|
|
56
|
-
| ------------- | ----------------------------- |
|
|
57
|
-
| `useIntlayer` | `useIntlayer("hero")` |
|
|
58
|
-
| `getIntlayer` | `getIntlayer("hero", locale)` |
|
|
59
|
-
|
|
60
|
-
Typy generyczne TypeScript oraz dodatkowe argumenty są ignorowane — liczy się tylko klucz słownika.
|
|
61
|
-
|
|
62
|
-
> Funkcje `useDictionary` i `getDictionary` przyjmują jako pierwszy argument już zaimportowany obiekt `Dictionary`, a nie klucz tekstowy, dlatego nie korzystają z funkcji Przejdź do definicji i nie są śledzone przez serwer.
|
|
66
|
+
> Słowniki są odczytywane z wyniku budowania, więc uruchom `npx intlayer build` — albo pozostaw działający serwer deweloperski — aby serwer miał co rozwiązywać.
|
|
63
67
|
|
|
64
68
|
---
|
|
65
69
|
|
|
66
70
|
## Instalacja
|
|
67
71
|
|
|
68
|
-
Serwer
|
|
72
|
+
Serwer jest dostarczany jako binarium `intlayer-lsp` w pakiecie `@intlayer/lsp`:
|
|
69
73
|
|
|
70
74
|
```bash packageManager="npm"
|
|
71
75
|
npm install --save-dev @intlayer/lsp
|
|
@@ -83,43 +87,43 @@ pnpm add --save-dev @intlayer/lsp
|
|
|
83
87
|
bun add --dev @intlayer/lsp
|
|
84
88
|
```
|
|
85
89
|
|
|
86
|
-
|
|
90
|
+
Zainstaluj go globalnie (`npm install -g @intlayer/lsp`), jeśli Twój edytor wymaga `intlayer-lsp` w `PATH` — dotyczy to wtyczki Claude Code oraz każdej poniższej konfiguracji wywołującej binarium bezpośrednio.
|
|
87
91
|
|
|
88
92
|
---
|
|
89
93
|
|
|
90
|
-
## Konfiguracja
|
|
94
|
+
## Konfiguracja
|
|
91
95
|
|
|
92
|
-
|
|
96
|
+
<Tabs defaultTab="vscode">
|
|
97
|
+
<Tab label="VS Code" value="vscode">
|
|
93
98
|
|
|
94
|
-
|
|
99
|
+
Zainstaluj [rozszerzenie Intlayer dla VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension). Serwer języka jest w nim zawarty od wersji v8.12.0 i uruchamia się automatycznie — **konfiguracja nie jest wymagana**.
|
|
95
100
|
|
|
96
|
-
|
|
97
|
-
npm install -g @intlayer/lsp
|
|
98
|
-
```
|
|
101
|
+
Pozostałe funkcje opisano w [dokumentacji rozszerzenia VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
99
102
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
+
</Tab>
|
|
104
|
+
<Tab label="Cursor / Windsurf" value="cursor">
|
|
103
105
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
[Cursor](https://www.cursor.com/) i [Windsurf](https://windsurf.com/) to forki VS Code korzystające z tego samego ekosystemu rozszerzeń. Zainstaluj [rozszerzenie Intlayer dla VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension) raz, a serwer aktywuje się automatycznie — **konfiguracja nie jest wymagana**.
|
|
107
|
+
|
|
108
|
+
</Tab>
|
|
109
|
+
<Tab label="Claude Code" value="claude-code">
|
|
107
110
|
|
|
108
|
-
|
|
111
|
+
Intlayer dostarcza **wtyczkę do Claude Code** hostowaną w repozytorium Intlayer. Daje ona Claude Code prawdziwe rozwiązywanie symboli dla Twoich kluczy słowników zamiast sięgania po `grep`.
|
|
109
112
|
|
|
110
|
-
|
|
113
|
+
Umieść binarium w `PATH`, następnie zarejestruj marketplace i zainstaluj wtyczkę:
|
|
111
114
|
|
|
112
115
|
```bash
|
|
116
|
+
npm install -g @intlayer/lsp
|
|
117
|
+
|
|
113
118
|
claude plugin marketplace add intlayer@github:aymericzip/intlayer
|
|
114
119
|
claude plugin install intlayer-lsp@intlayer
|
|
115
|
-
claude plugin enable intlayer-lsp@intlayer
|
|
116
120
|
```
|
|
117
121
|
|
|
118
|
-
|
|
122
|
+
`install` również włącza wtyczkę. **Zrestartuj Claude Code** — serwery języka wczytywane są przy starcie, więc wcześniej wtyczka nie działa.
|
|
119
123
|
|
|
120
|
-
|
|
124
|
+
Claude Code uruchomi wtedy serwer dla plików `.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.astro` i `.svelte` oraz użyje `goToDefinition`, `findReferences` i `hover` podczas nawigacji po kodzie.
|
|
121
125
|
|
|
122
|
-
|
|
126
|
+
Jeśli przejście do definicji nadal nic nie robi, Twoja wersja Claude Code może ukrywać narzędzie LSP za flagą:
|
|
123
127
|
|
|
124
128
|
```json fileName="~/.claude/settings.json"
|
|
125
129
|
{
|
|
@@ -129,61 +133,10 @@ Niektóre wersje Claude Code wymagają ustawienia flagi funkcji LSP. Dodaj poni
|
|
|
129
133
|
}
|
|
130
134
|
```
|
|
131
135
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Konfiguracja w VS Code (przez rozszerzenie — zalecane)
|
|
137
|
-
|
|
138
|
-
Jeśli masz zainstalowane [rozszerzenie Intlayer dla VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension), serwer językowy uruchomi się automatycznie. Nie jest wymagana żadna dodatkowa konfiguracja. LSP jest bezpośrednio zintegrowany z rozszerzeniem VSCode od wersji 8.12.0.
|
|
139
|
-
|
|
140
|
-
> Zobacz [dokumentację rozszerzenia VS Code](https://intlayer.org/doc/vs-code-extension) w celu uzyskania szczegółów instalacji i innych funkcji.
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Ręczna konfiguracja w VS Code
|
|
145
|
-
|
|
146
|
-
Jeśli nie używasz rozszerzenia Intlayer, możesz połączyć serwer językowy ręcznie, korzystając z ogólnego rozszerzenia klienta LSP, takiego jak [**vscode-glspc**](https://marketplace.visualstudio.com/items?itemName=sibiraj-s.vscode-scss-formatter) lub pisząc własne małe rozszerzenie. Zalecanym podejściem jest użycie oficjalnego rozszerzenia Intlayer.
|
|
147
|
-
|
|
148
|
-
Dla odniesienia, serwer uruchamia się za pomocą pliku binarnego `intlayer-lsp` przez stdio:
|
|
149
|
-
|
|
150
|
-
```json fileName=".vscode/settings.json"
|
|
151
|
-
{
|
|
152
|
-
"intlayer.languageServer.command": "npx",
|
|
153
|
-
"intlayer.languageServer.args": ["@intlayer/lsp"]
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Rozszerzenie Intlayer odczytuje te ustawienia, aby uruchomić serwer. Jeśli polegasz wyłącznie na rozszerzeniu, konfiguracja ręczna nie jest potrzebna.
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Konfiguracja w Cursor
|
|
162
|
-
|
|
163
|
-
[Cursor](https://www.cursor.com/) to fork VS Code z wbudowanymi funkcjami AI. Korzysta z tego samego ekosystemu rozszerzeń, więc **rozszerzenie Intlayer dla VS Code** działa bez żadnej dodatkowej konfiguracji — zainstaluj je raz, a Cursor wykryje je automatycznie.
|
|
164
|
-
|
|
165
|
-
Jeśli wolisz ręczną konfigurację, Cursor odczytuje również plik `.vscode/settings.json` z katalogu głównego obszaru roboczego, więc powyższy fragment kodu dla VS Code ma zastosowanie bezpośrednio.
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Konfiguracja w Windsurf
|
|
170
|
-
|
|
171
|
-
[Windsurf](https://windsurf.com/) (stworzony przez Codeium) to kolejny edytor oparty na VS Code. Zainstaluj rozszerzenie Intlayer z VS Code Marketplace, a serwer językowy aktywuje się automatycznie, dokładnie tak samo jak w VS Code i Cursor.
|
|
172
|
-
|
|
173
|
-
W przypadku ręcznej konfiguracji utwórz plik `.vscode/settings.json` w katalogu głównym projektu:
|
|
174
|
-
|
|
175
|
-
```json fileName=".vscode/settings.json"
|
|
176
|
-
{
|
|
177
|
-
"intlayer.languageServer.command": "npx",
|
|
178
|
-
"intlayer.languageServer.args": ["@intlayer/lsp"]
|
|
179
|
-
}
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Konfiguracja w Zed
|
|
136
|
+
</Tab>
|
|
137
|
+
<Tab label="Zed" value="zed">
|
|
185
138
|
|
|
186
|
-
|
|
139
|
+
Zed ma natywne wsparcie LSP. Dodaj serwer do ustawień użytkownika:
|
|
187
140
|
|
|
188
141
|
```json fileName="~/.config/zed/settings.json"
|
|
189
142
|
{
|
|
@@ -196,47 +149,21 @@ W przypadku ręcznej konfiguracji utwórz plik `.vscode/settings.json` w katalog
|
|
|
196
149
|
}
|
|
197
150
|
},
|
|
198
151
|
"languages": {
|
|
199
|
-
"TypeScript": {
|
|
200
|
-
|
|
201
|
-
},
|
|
202
|
-
"
|
|
203
|
-
|
|
204
|
-
},
|
|
205
|
-
"JavaScript": {
|
|
206
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
207
|
-
},
|
|
208
|
-
"Vue.js": {
|
|
209
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
210
|
-
},
|
|
211
|
-
"Svelte": {
|
|
212
|
-
"language_servers": ["intlayer-lsp", "..."]
|
|
213
|
-
}
|
|
152
|
+
"TypeScript": { "language_servers": ["intlayer-lsp", "..."] },
|
|
153
|
+
"TSX": { "language_servers": ["intlayer-lsp", "..."] },
|
|
154
|
+
"JavaScript": { "language_servers": ["intlayer-lsp", "..."] },
|
|
155
|
+
"Vue.js": { "language_servers": ["intlayer-lsp", "..."] },
|
|
156
|
+
"Svelte": { "language_servers": ["intlayer-lsp", "..."] }
|
|
214
157
|
}
|
|
215
158
|
}
|
|
216
159
|
```
|
|
217
160
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## Konfiguracja dla AI Agent CLI (Claude Code, Codex itp.)
|
|
223
|
-
|
|
224
|
-
**Claude Code** posiada pierwszorzędną obsługę pluginów LSP — postępuj zgodnie z instrukcjami w sekcji [Konfiguracja jako plugin Claude Code](#konfiguracja-jako-plugin-claude-code) powyżej, aby uzyskać pełną funkcjonalność Przejdź do definicji bezpośrednio w sesjach terminala.
|
|
161
|
+
Symbol zastępczy `"..."` zachowuje domyślne serwery języka Zed obok serwera Intlayer.
|
|
225
162
|
|
|
226
|
-
|
|
163
|
+
</Tab>
|
|
164
|
+
<Tab label="Neovim" value="neovim">
|
|
227
165
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
# Utrzymuj serwer aktywny w tle
|
|
232
|
-
npx @intlayer/lsp &
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## Ręczna konfiguracja w Neovim
|
|
238
|
-
|
|
239
|
-
Używając [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), zarejestruj niestandardową konfigurację serwera:
|
|
166
|
+
Za pomocą [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) zarejestruj własną konfigurację serwera:
|
|
240
167
|
|
|
241
168
|
```lua fileName="~/.config/nvim/init.lua"
|
|
242
169
|
local lspconfig = require('lspconfig')
|
|
@@ -245,7 +172,7 @@ local configs = require('lspconfig.configs')
|
|
|
245
172
|
if not configs.intlayer_lsp then
|
|
246
173
|
configs.intlayer_lsp = {
|
|
247
174
|
default_config = {
|
|
248
|
-
-- Uruchom serwer
|
|
175
|
+
-- Uruchom serwer przez npx, aby nie wymagać instalacji globalnej
|
|
249
176
|
cmd = { 'npx', '--yes', '@intlayer/lsp' },
|
|
250
177
|
filetypes = {
|
|
251
178
|
'typescript',
|
|
@@ -267,21 +194,10 @@ end
|
|
|
267
194
|
lspconfig.intlayer_lsp.setup({})
|
|
268
195
|
```
|
|
269
196
|
|
|
270
|
-
Po
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
## Ręczna konfiguracja w innych edytorach
|
|
275
|
-
|
|
276
|
-
Każdy edytor obsługujący protokół Language Server Protocol może korzystać z `@intlayer/lsp`. Specyfikacja serwera:
|
|
197
|
+
Po zrestartowaniu Neovima `gd` na kluczu słownika uruchamia Przejdź do definicji, a `gr` — Znajdź referencje.
|
|
277
198
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
- **Możliwości** – `definitionProvider: true`, `textDocumentSync: Incremental`
|
|
281
|
-
|
|
282
|
-
Skonsultuj się z dokumentacją LSP swojego edytora, aby uzyskać dokładny format konfiguracji (np. `languageserver.json` dla [coc.nvim](https://github.com/neoclide/coc.nvim) lub ustawienia klienta LSP w [Helix](https://helix-editor.com)).
|
|
283
|
-
|
|
284
|
-
### Przykład: coc.nvim
|
|
199
|
+
</Tab>
|
|
200
|
+
<Tab label="coc.nvim" value="coc">
|
|
285
201
|
|
|
286
202
|
```json fileName="~/.config/nvim/coc-settings.json"
|
|
287
203
|
{
|
|
@@ -307,9 +223,14 @@ Skonsultuj się z dokumentacją LSP swojego edytora, aby uzyskać dokładny form
|
|
|
307
223
|
}
|
|
308
224
|
```
|
|
309
225
|
|
|
310
|
-
|
|
226
|
+
</Tab>
|
|
227
|
+
<Tab label="Helix" value="helix">
|
|
311
228
|
|
|
312
229
|
```toml fileName="~/.config/helix/languages.toml"
|
|
230
|
+
[language-server.intlayer-lsp]
|
|
231
|
+
command = "npx"
|
|
232
|
+
args = ["@intlayer/lsp"]
|
|
233
|
+
|
|
313
234
|
[[language]]
|
|
314
235
|
name = "typescript"
|
|
315
236
|
language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
@@ -317,36 +238,54 @@ language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
|
317
238
|
[[language]]
|
|
318
239
|
name = "tsx"
|
|
319
240
|
language-servers = ["intlayer-lsp", "typescript-language-server"]
|
|
320
|
-
|
|
321
|
-
[language-server.intlayer-lsp]
|
|
322
|
-
command = "npx"
|
|
323
|
-
args = ["@intlayer/lsp"]
|
|
324
241
|
```
|
|
325
242
|
|
|
243
|
+
</Tab>
|
|
244
|
+
<Tab label="Inne edytory" value="other">
|
|
245
|
+
|
|
246
|
+
Każdy edytor obsługujący LSP może uruchomić `@intlayer/lsp`. Wskaż mu:
|
|
247
|
+
|
|
248
|
+
- **Plik wykonywalny** — `npx @intlayer/lsp` lub binarium `intlayer-lsp`
|
|
249
|
+
- **Transport** — stdio (standardowy)
|
|
250
|
+
- **Możliwości** — `definitionProvider`, `referencesProvider`, `hoverProvider`, `completionProvider` (znaki wyzwalające `"` `'` `` ` `` `.`), diagnostyka push, `textDocumentSync: Incremental`
|
|
251
|
+
- **Wzorce katalogu głównego** — `intlayer.config.ts`, `intlayer.config.js`, `package.json`
|
|
252
|
+
|
|
253
|
+
Dokładny format konfiguracji znajdziesz w dokumentacji LSP swojego edytora.
|
|
254
|
+
|
|
255
|
+
</Tab>
|
|
256
|
+
</Tabs>
|
|
257
|
+
|
|
326
258
|
---
|
|
327
259
|
|
|
328
|
-
##
|
|
260
|
+
## Uwaga o agentach AI w terminalu
|
|
329
261
|
|
|
330
|
-
|
|
262
|
+
**Claude Code** działa jako prawdziwy klient LSP — zobacz zakładkę powyżej.
|
|
331
263
|
|
|
332
|
-
|
|
264
|
+
**OpenAI Codex** i większość innych narzędzi terminalowych nie są klientami LSP: czytają i zapisują pliki bezpośrednio. Samo uruchomienie serwera im nie pomoże; wartość pojawia się, gdy jest aktywny w towarzyszącym edytorze, którego indeks agent może odpytać (Cursor Composer, Windsurf Cascade, Copilot Chat).
|
|
333
265
|
|
|
334
|
-
|
|
335
|
-
2. Skanuje w poszukiwaniu wywołań pobierających (`useIntlayer`, `getIntlayer` itp.) za pomocą wyrażenia regularnego.
|
|
336
|
-
3. Sprawdza, czy pozycja kursora znajduje się wewnątrz jednego z tych wywołań.
|
|
337
|
-
4. Jeśli tak, wyodrębnia klucz słownika (grupa przechwytująca 3 wyrażenia regularnego) i wywołuje `getUnmergedDictionaries()`, aby zlokalizować każdy plik treści, który deklaruje ten klucz.
|
|
338
|
-
5. Odczytuje każdy pasujący plik i znajduje dokładną linię zawierającą `key: "<klucz>"`, aby precyzyjnie ustawić kursor.
|
|
339
|
-
6. Zwraca tablicę obiektów `Location` — po jednym na plik źródłowy.
|
|
266
|
+
---
|
|
340
267
|
|
|
341
|
-
|
|
268
|
+
## Jak to działa
|
|
269
|
+
|
|
270
|
+
Dla każdego pliku serwer lokalizuje najbliższy `intlayer.config.*` i wczytuje konfigurację tego projektu, aby znaleźć skompilowane słowniki. Konfiguracja, słowniki i lista plików źródłowych są buforowane z krótkim TTL i unieważniane, gdy zmieni się obserwowany plik treści.
|
|
271
|
+
|
|
272
|
+
Przy żądaniu serwer parsuje dokument (przez [oxc](https://oxc.rs/)) i bada pozycję kursora:
|
|
273
|
+
|
|
274
|
+
1. **Na ciągu klucza** (`useIntlayer("home")`) → zwraca każdy plik treści deklarujący ten klucz, ustawiony na jego linii `key:`.
|
|
275
|
+
2. **Na użyciu pola** (`content.title`, zdestrukturyzowana właściwość, `t('path.to.field')`, `<Trans>`, …) → sprowadza zmienną z powrotem do jej słownika i zwraca pasujące pole w plikach treści.
|
|
276
|
+
3. **Z pliku treści** → wykonuje wyszukiwanie odwrotne, przeszukując źródła projektu w poszukiwaniu miejsc wywołania tego klucza lub pola.
|
|
342
277
|
|
|
343
278
|
---
|
|
344
279
|
|
|
345
280
|
## Rozwiązywanie problemów
|
|
346
281
|
|
|
347
|
-
|
|
|
348
|
-
|
|
|
349
|
-
|
|
|
350
|
-
|
|
|
351
|
-
| Nie znaleziono definicji dla klucza
|
|
352
|
-
|
|
|
282
|
+
| Objaw | Prawdopodobna przyczyna | Rozwiązanie |
|
|
283
|
+
| ------------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
284
|
+
| Nic się nie dzieje | Serwer nie działa | Sprawdź, czy `@intlayer/lsp` jest zainstalowany i czy edytor go uruchamia |
|
|
285
|
+
| Działa w edytorze, ale nie w Claude Code | Wtyczka zainstalowana w trakcie sesji | Zrestartuj Claude Code — serwery języka wczytują się przy starcie |
|
|
286
|
+
| Nie znaleziono definicji dla klucza | Słowniki nie zostały zbudowane | Uruchom `npx intlayer build` albo serwer deweloperski |
|
|
287
|
+
| Każdy klucz zgłaszany jako niezadeklarowany | Konfiguracja nierozwiązana | Sprawdź, czy `intlayer.config.ts` (lub `.js`) istnieje w katalogu głównym projektu |
|
|
288
|
+
| W monorepo użyto niewłaściwego projektu | Brak konfiguracji w pakiecie | Dodaj `intlayer.config.*` do każdego pakietu deklarującego własną treść |
|
|
289
|
+
| Serwer zawiesza się przy starcie | Zbyt stara wersja Node.js | Wymaga Node.js ≥ 14.18 |
|
|
290
|
+
|
|
291
|
+
W VS Code serwer zapisuje logi w **Widok → Dane wyjściowe → „Intlayer LSP”** — przydatne, by potwierdzić, która konfiguracja została rozwiązana i ile słowników znaleziono.
|