Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Release LSP"v8.12.01.06.2026
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Serwer Intlayer LSP
Serwer Językowy Intlayer (LSP) to implementacja protokołu Language Server Protocol (LSP), która wzbogaca Twoje IDE o inteligencję rozumiejącą strukturę Intlayer. Obecnie zapewnia funkcję Przejdź do definicji (Go to Definition) dla wywołań kluczy słownika, umożliwiając bezpośrednie przejście od useIntlayer("my-key") w komponencie do pliku .content.ts, który go deklaruje.
Dlaczego warto używać LSP?
Gdy używasz Intlayer, połączenie między wywołaniem takim jak useIntlayer("homepage") a jego deklaracją w src/homepage.content.ts jest niejawne. Bez odpowiednich narzędzi musisz szukać tego pliku ręcznie. LSP sprawia, że to powiązanie staje się jawne:
Świadomość agentów AI
Agenci kodujący AI (Cursor, Windsurf, GitHub Copilot, Claude Code, Codex) polegają na serwerze językowym w celu rozpoznawania symboli i rozumienia relacji między plikami. Dzięki uruchomionemu Intlayer LSP agenci mogą śledzić wywołanie useIntlayer("key") z powrotem do jego deklaracji, co daje im dokładny kontekst dotyczący dostępnych kluczy treści, struktury każdego słownika oraz plików do odczytu lub edycji.
Przejdź do definicji
Umieść kursor na dowolnym ciągu klucza słownika wewnątrz obsługiwanego wywołania pobierającego i naciśnij F12 (lub Cmd/Ctrl+Kliknięcie). Edytor otworzy plik deklaracji treści i ustawi kursor w linii key:.
Obsługa scalonych słowników
Klucz może być podzielony na wiele plików treści (Intlayer scala je). Serwer zwraca jedną lokalizację (Location) na plik źródłowy, dzięki czemu możesz przejść do każdej deklaracji.
Działa wszędzie
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).
Obsługiwane wywołania pobierające
Serwer wykrywa następujące wywołania funkcji i wyodrębnia pierwszy argument jako klucz słownika:
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Funkcja | Przykład |
|---|---|
useIntlayer | useIntlayer("hero") |
getIntlayer | getIntlayer("hero", locale) |
Typy generyczne TypeScript oraz dodatkowe argumenty są ignorowane — liczy się tylko klucz słownika.
FunkcjeuseDictionaryigetDictionaryprzyjmują jako pierwszy argument już zaimportowany obiektDictionary, a nie klucz tekstowy, dlatego nie korzystają z funkcji Przejdź do definicji i nie są śledzone przez serwer.
Instalacja
Serwer LSP jest dystrybuowany jako część pakietu @intlayer/lsp:
Skopiuj kod do schowka
npm install --save-dev @intlayer/lspPakiet udostępnia plik wykonywalny intlayer-lsp, którego edytory używają jako serwera.
Konfiguracja jako plugin Claude Code
Serwer Intlayer LSP jest dostępny jako plugin Claude Code hostowany bezpośrednio w repozytorium GitHub Intlayer. Jego instalacja daje Claude Code natywną świadomość funkcji Przejdź do definicji dla wszystkich wywołań useIntlayer / getIntlayer.
1. Zainstaluj plik wykonywalny serwera językowego
Skopiuj kod do schowka
npm install -g @intlayer/lspTo polecenie umieści plik binarny intlayer-lsp w Twojej ścieżce PATH, co jest wywoływane przez wpis lspServers w pluginie.
2. Zarejestruj rynek Intlayer i zainstaluj plugin
Skopiuj kod do schowka
claude plugin marketplace add intlayer@github:aymericzip/intlayerclaude plugin install intlayer-lsp@intlayerclaude plugin enable intlayer-lsp@intlayerClaude Code doda "intlayer-lsp@intlayer": true do Twoich enabledPlugins i automatycznie uruchomi serwer językowy dla obsługiwanych typów plików (.ts, .tsx, .js, .jsx, .vue, .svelte).
3. Włącz narzędzie LSP (jeśli nie jest jeszcze aktywne)
Niektóre wersje Claude Code wymagają ustawienia flagi funkcji LSP. Dodaj poniższy wpis do pliku ~/.claude/settings.json, jeśli funkcja Przejdź do definicji nie działa po instalacji:
Skopiuj kod do schowka
{ "env": { "ENABLE_LSP_TOOL": "1" }}Uruchom ponownie Claude Code — od teraz będzie on używał goToDefinition, findReferences oraz innych operacji LSP podczas nawigacji po kodzie Intlayer zamiast powracać do grep.
Konfiguracja w VS Code (przez rozszerzenie — zalecane)
Jeśli masz zainstalowane rozszerzenie Intlayer dla VS Code, serwer językowy uruchomi się automatycznie. Nie jest wymagana żadna dodatkowa konfiguracja.
Zobacz dokumentację rozszerzenia VS Code w celu uzyskania szczegółów instalacji i innych funkcji.
Ręczna konfiguracja w VS Code
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 lub pisząc własne małe rozszerzenie. Zalecanym podejściem jest użycie oficjalnego rozszerzenia Intlayer.
Dla odniesienia, serwer uruchamia się za pomocą pliku binarnego intlayer-lsp przez stdio:
Skopiuj kod do schowka
{ "intlayer.languageServer.command": "npx", "intlayer.languageServer.args": ["@intlayer/lsp"]}Rozszerzenie Intlayer odczytuje te ustawienia, aby uruchomić serwer. Jeśli polegasz wyłącznie na rozszerzeniu, konfiguracja ręczna nie jest potrzebna.
Konfiguracja w Cursor
Cursor 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.
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.
Konfiguracja w Windsurf
Windsurf (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.
W przypadku ręcznej konfiguracji utwórz plik .vscode/settings.json w katalogu głównym projektu:
Skopiuj kod do schowka
{ "intlayer.languageServer.command": "npx", "intlayer.languageServer.args": ["@intlayer/lsp"]}Konfiguracja w Zed
Zed posiada natywną obsługę LSP poprzez swoje ustawienia językowe. Dodaj wpis do ustawień użytkownika Zed (~/.config/zed/settings.json):
Skopiuj kod do schowka
{ "lsp": { "intlayer-lsp": { "binary": { "path": "npx", "arguments": ["--yes", "@intlayer/lsp"] } } }, "languages": { "TypeScript": { "language_servers": ["intlayer-lsp", "..."] }, "TSX": { "language_servers": ["intlayer-lsp", "..."] }, "JavaScript": { "language_servers": ["intlayer-lsp", "..."] }, "Vue.js": { "language_servers": ["intlayer-lsp", "..."] }, "Svelte": { "language_servers": ["intlayer-lsp", "..."] } }}Znak zastępczy "..." informuje edytor Zed, aby zachował domyślne serwery językowe obok serwera Intlayer.
Konfiguracja dla AI Agent CLI (Claude Code, Codex itp.)
Claude Code posiada pierwszorzędną obsługę pluginów LSP — postępuj zgodnie z instrukcjami w sekcji Konfiguracja jako plugin Claude Code powyżej, aby uzyskać pełną funkcjonalność Przejdź do definicji bezpośrednio w sesjach terminala.
OpenAI Codex oraz inne narzędzia konsolowe nie działają jeszcze jako klienci LSP — odczytują i zapisują pliki bezpośrednio, zamiast utrzymywać trwałą sesję serwera językowego. Dla tych narzędzi wartość uruchomionego LSP pojawia się pośrednio: gdy serwer jest aktywny w towarzyszącym edytorze (VS Code, Cursor, Windsurf, ...), bieżący indeks edytora jest dostępny dla każdego agenta AI, który może odpytać go za pomocą dostarczonego przez edytor kontekstu (np. Cursor Composer, Windsurf Cascade, GitHub Copilot Chat).
Jeśli pracujesz wyłącznie w terminalu bez otwartego edytora, możesz uruchomić serwer językowy w tle, aby był gotowy na podłączenie dowolnego edytora do tego samego obszaru roboczego w przyszłości:
Skopiuj kod do schowka
# Utrzymuj serwer aktywny w tlenpx @intlayer/lsp &Ręczna konfiguracja w Neovim
Używając nvim-lspconfig, zarejestruj niestandardową konfigurację serwera:
Skopiuj kod do schowka
local lspconfig = require('lspconfig')local configs = require('lspconfig.configs')if not configs.intlayer_lsp then configs.intlayer_lsp = { default_config = { -- Uruchom serwer za pomocą npx, aby uniknąć instalacji globalnej cmd = { 'npx', '--yes', '@intlayer/lsp' }, filetypes = { 'typescript', 'typescriptreact', 'javascript', 'javascriptreact', 'vue', 'svelte', }, root_dir = lspconfig.util.root_pattern( 'intlayer.config.ts', 'intlayer.config.js', 'package.json' ), }, }endlspconfig.intlayer_lsp.setup({})Po ponownym uruchomieniu Neovim, naciśnięcie gd nad kluczem Intlayer wywoła funkcję Przejdź do definicji.
Ręczna konfiguracja w innych edytorach
Każdy edytor obsługujący protokół Language Server Protocol może korzystać z @intlayer/lsp. Specyfikacja serwera:
- Transport – Node.js IPC / stdio (standard)
- Plik wykonywalny –
npx @intlayer/lsp(lub lokalnie zainstalowany plik binarnyintlayer-lsp) - Możliwości –
definitionProvider: true,textDocumentSync: Incremental
Skonsultuj się z dokumentacją LSP swojego edytora, aby uzyskać dokładny format konfiguracji (np. languageserver.json dla coc.nvim lub ustawienia klienta LSP w Helix).
Przykład: coc.nvim
Skopiuj kod do schowka
{ "languageserver": { "intlayer": { "command": "npx", "args": ["@intlayer/lsp"], "filetypes": [ "typescript", "typescriptreact", "javascript", "javascriptreact", "vue", "svelte" ], "rootPatterns": [ "intlayer.config.ts", "intlayer.config.js", "package.json" ] } }}Przykład: Helix
Skopiuj kod do schowka
[[language]]name = "typescript"language-servers = ["intlayer-lsp", "typescript-language-server"][[language]]name = "tsx"language-servers = ["intlayer-lsp", "typescript-language-server"][language-server.intlayer-lsp]command = "npx"args = ["@intlayer/lsp"]Jak to działa
Gdy serwer się uruchamia, odczytuje konfigurację Intlayer z głównego katalogu obszaru roboczego za pomocą getConfiguration(). Daje mu to ścieżki build i system niezbędne do znalezienia skompilowanych słowników.
Przy każdym żądaniu Przejdź do definicji:
- Serwer odczytuje pełny tekst otwartego dokumentu.
- Skanuje w poszukiwaniu wywołań pobierających (
useIntlayer,getIntlayeritp.) za pomocą wyrażenia regularnego. - Sprawdza, czy pozycja kursora znajduje się wewnątrz jednego z tych wywołań.
- 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. - Odczytuje każdy pasujący plik i znajduje dokładną linię zawierającą
key: "<klucz>", aby precyzyjnie ustawić kursor. - Zwraca tablicę obiektów
Location— po jednym na plik źródłowy.
Konfiguracja jest pobierana leniwie (lazy) i buforowana na sesję; resetuje się przy każdym żądaniu initialize (np. przy otwarciu nowego folderu obszaru roboczego).
Rozwiązywanie problemów
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Symptom | Prawdopodobna przyczyna | Rozwiązanie |
|---|---|---|
| Przejdź do definicji nic nie robi | Serwer nie działa | Sprawdź, czy @intlayer/lsp jest zainstalowany i czy edytor go uruchamia |
| Wykryto nieprawidłowy katalog główny | Wiele folderów w obszarze roboczym | Upewnij się, że folder zawierający intlayer.config.ts jest pierwszym folderem obszaru roboczego |
| Nie znaleziono definicji dla klucza | Konfiguracja nie została wczytana | Sprawdź, czy intlayer.config.ts (lub .js) istnieje w katalogu głównym obszaru roboczego |
| Serwer ulega awarii przy starcie | Wersja Node.js jest zbyt stara | Wymaga Node.js ≥ 14.18 |