Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta
Cronologia delle versioni
- "Release LSP"v8.12.001/06/2026
Il contenuto di questa pagina è stato tradotto con un'IA.
Vedi l'ultima versione del contenuto originale in ingleseIf 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
Server LSP Intlayer
Il Server di linguaggio Intlayer (LSP) è un'implementazione del Language Server Protocol (LSP) che arricchisce il tuo IDE con un'intelligenza consapevole di Intlayer. Attualmente fornisce la funzionalità Vai alla definizione (Go to Definition) per le chiamate alle chiavi del dizionario, consentendoti di saltare direttamente da useIntlayer("my-key") nel tuo componente al file .content.ts che lo dichiara.
Perché usare l'LSP?
Quando usi Intlayer, la connessione tra una chiamata come useIntlayer("homepage") e la sua dichiarazione in src/homepage.content.ts è implicita. Senza strumenti dedicati, dovresti cercare il file manualmente. L'LSP rende questo collegamento esplicito:
Consapevolezza dell'agente AI
Gli agenti di programmazione AI (Cursor, Windsurf, GitHub Copilot, Claude Code, Codex) si affidano al server di linguaggio per risolvere i simboli e comprendere le relazioni tra i file. Con l'LSP di Intlayer in esecuzione, gli agenti possono seguire useIntlayer("key") fino alla sua dichiarazione, ottenendo un contesto accurato sulle chiavi di contenuto disponibili, la struttura di ciascun dizionario e quali file leggere o modificare.
Vai alla definizione
Posiziona il cursore su qualsiasi stringa chiave del dizionario all'interno di una chiamata getter supportata e premi F12 (o Cmd/Ctrl+Click). L'editor apre il file di dichiarazione del contenuto e posiziona il cursore sulla riga key:.
Supporto per dizionari uniti
Una chiave può essere suddivisa in più file di contenuto (Intlayer li unisce). Il server restituisce una posizione (Location) per file sorgente, consentendoti di navigare in ogni dichiarazione.
Funziona ovunque
Supporta tutti i pacchetti *-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).
Chiamate getter supportate
Il server rileva le seguenti chiamate di funzione ed estrae il primo argomento stringa letterale come chiave del dizionario:
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Funzione | Esempio |
|---|---|
useIntlayer | useIntlayer("hero") |
getIntlayer | getIntlayer("hero", locale) |
I generici TypeScript e gli argomenti extra vengono ignorati: conta solo la stringa della chiave.
useDictionaryegetDictionaryaccettano un oggettoDictionarygià importato come primo argomento anziché una chiave stringa, pertanto non beneficiano della funzionalità Vai alla definizione e non sono tracciati dal server.
Installazione
Il server LSP è distribuito come parte di @intlayer/lsp:
Copiare il codice nella clipboard
npm install --save-dev @intlayer/lspIl pacchetto espone il binario intlayer-lsp, che gli editor utilizzano come eseguibile del server.
Configurazione come plugin di Claude Code
L'LSP Intlayer è disponibile come plugin di Claude Code ospitato direttamente nel repository GitHub di Intlayer. Installarlo fornisce a Claude Code una consapevolezza nativa di Vai alla definizione per tutte le tue chiamate useIntlayer / getIntlayer.
1. Installa il binario del server di linguaggio
Copiare il codice nella clipboard
npm install -g @intlayer/lspQuesto inserisce il binario intlayer-lsp nel tuo PATH, che è ciò che richiama la voce lspServers del plugin.
2. Registra il marketplace di Intlayer e installa il plugin
Copiare il codice nella clipboard
claude plugin marketplace add intlayer@github:aymericzip/intlayerclaude plugin install intlayer-lsp@intlayerclaude plugin enable intlayer-lsp@intlayerClaude Code aggiungerà "intlayer-lsp@intlayer": true ai tuoi enabledPlugins e avvierà automaticamente il server di linguaggio sui tipi di file supportati (.ts, .tsx, .js, .jsx, .vue, .svelte).
3. Abilita lo strumento LSP (se non è già attivo)
Alcune versioni di Claude Code richiedono l'impostazione del flag di funzionalità LSP. Aggiungi quanto segue al tuo file ~/.claude/settings.json se Vai alla definizione non funziona dopo l'installazione:
Copiare il codice nella clipboard
{ "env": { "ENABLE_LSP_TOOL": "1" }}Riavvia Claude Code: ora utilizzerà goToDefinition, findReferences e altre operazioni LSP durante la navigazione nella base di codice Intlayer anziché ripiegare su grep.
Configurazione in VS Code (tramite estensione — consigliato)
Se hai installato l'estensione Intlayer per VS Code, il server di linguaggio si avvia automaticamente. Non è richiesta alcuna configurazione aggiuntiva.
Consulta la documentazione dell'estensione VS Code per l'installazione e altre funzionalità.
Configurazione manuale in VS Code
Se non utilizzi l'estensione Intlayer, puoi configurare il server di linguaggio manualmente utilizzando un'estensione client LSP generica come vscode-glspc o scrivendo una tua piccola estensione. L'approccio consigliato consiste nell'utilizzare l'estensione Intlayer.
Per riferimento, il server viene avviato tramite il binario intlayer-lsp su stdio:
Copiare il codice nella clipboard
{ "intlayer.languageServer.command": "npx", "intlayer.languageServer.args": ["@intlayer/lsp"]}L'estensione Intlayer legge queste impostazioni per avviare il server. Se ti affidi esclusivamente all'estensione, non sono necessarie impostazioni manuali.
Configurazione in Cursor
Cursor è un fork di VS Code con funzionalità AI integrate. Utilizza lo stesso ecosistema di estensioni, quindi l'estensione Intlayer per VS Code funziona senza alcuna configurazione aggiuntiva: installala una volta e Cursor la rileverà automaticamente.
Se preferisci una configurazione manuale, Cursor legge anche .vscode/settings.json dalla radice dell'area di lavoro, quindi lo snippet di VS Code sopra si applica direttamente.
Configurazione in Windsurf
Windsurf (di Codeium) è un altro editor basato su VS Code. Installa l'estensione Intlayer dal VS Code Marketplace e il server di linguaggio si attiverà automaticamente, esattamente come accade in VS Code e Cursor.
Per la configurazione manuale, crea .vscode/settings.json nella radice del progetto:
Copiare il codice nella clipboard
{ "intlayer.languageServer.command": "npx", "intlayer.languageServer.args": ["@intlayer/lsp"]}Configurazione in Zed
Zed offre un supporto LSP nativo tramite le sue impostazioni di lingua. Aggiungi una voce nelle tue impostazioni utente di Zed (~/.config/zed/settings.json):
Copiare il codice nella clipboard
{ "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", "..."] } }}Il segnaposto "..." indica a Zed di mantenere i suoi server di linguaggio predefiniti insieme a quello di Intlayer.
Configurazione per CLI di agenti AI (Claude Code, Codex, ecc.)
Claude Code offre un supporto di prim'ordine per i plugin LSP: segui la configurazione del plugin Claude Code sopra per ottenere l'esperienza completa di Vai alla definizione direttamente nelle tue sessioni di terminale.
OpenAI Codex e altri strumenti basati su terminale non fungono ancora da client LSP: leggono e scrivono i file direttamente anziché mantenere una sessione di server di linguaggio persistente. Per tali strumenti, il valore di avere l'LSP in esecuzione deriva indirettamente: quando il server è attivo in un editor complementare (VS Code, Cursor, Windsurf, ...), l'indice in tempo reale dell'editor è disponibile per qualsiasi agente AI in grado di interrogarlo tramite il contesto fornito dall'editor (ad esempio, Cursor Composer, Windsurf Cascade, GitHub Copilot Chat).
Se lavori esclusivamente in un terminale senza un editor aperto, puoi avviare il server di linguaggio in background in modo che sia pronto per qualsiasi editor che si collegherà successivamente alla stessa area di lavoro:
Copiare il codice nella clipboard
# Mantieni il server attivo in backgroundnpx @intlayer/lsp &Configurazione manuale in Neovim
Utilizzando nvim-lspconfig, registra una configurazione del server personalizzata:
Copiare il codice nella clipboard
local lspconfig = require('lspconfig')local configs = require('lspconfig.configs')if not configs.intlayer_lsp then configs.intlayer_lsp = { default_config = { -- Avvia il server con npx per evitare un'installazione globale 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({})Dopo aver riavviato Neovim, premendo gd su una chiave Intlayer verrà avviata la funzionalità Vai alla definizione.
Configurazione manuale in altri editor
Qualsiasi editor che supporti il Language Server Protocol può utilizzare @intlayer/lsp. Il server fornisce:
- Trasporto – Node.js IPC / stdio (standard)
- Eseguibile –
npx @intlayer/lsp(o il binariointlayer-lspinstallato localmente) - Funzionalità –
definitionProvider: true,textDocumentSync: Incremental
Consulta la documentazione LSP del tuo editor per il formato di configurazione esatto (ad esempio, languageserver.json per coc.nvim o le impostazioni del client LSP in Helix).
Esempio: coc.nvim
Copiare il codice nella clipboard
{ "languageserver": { "intlayer": { "command": "npx", "args": ["@intlayer/lsp"], "filetypes": [ "typescript", "typescriptreact", "javascript", "javascriptreact", "vue", "svelte" ], "rootPatterns": [ "intlayer.config.ts", "intlayer.config.js", "package.json" ] } }}Esempio: Helix
Copiare il codice nella clipboard
[[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"]Come funziona
Quando il server si avvia, risolve la configurazione di Intlayer dalla radice dell'area di lavoro utilizzando getConfiguration(). Questo gli fornisce i percorsi build e system necessari per trovare i dizionari compilati.
Su ogni richiesta di Vai alla definizione:
- Il server legge il testo completo del documento aperto.
- Esegue una scansione per trovare le chiamate getter (
useIntlayer,getIntlayer, ecc.) utilizzando una espressione regolare. - Verifica se la posizione del cursore rientra all'interno di una di quelle chiamate.
- In caso affermativo, estrae la chiave del dizionario (gruppo di cattura 3 dell'espressione regolare) e chiama
getUnmergedDictionaries()per individuare ogni file di contenuto che dichiara quella chiave. - Legge ciascun file corrispondente e trova la riga esatta contenente
key: "<key>"per posizionare il cursore in modo preciso. - Restituisce un array di oggetti
Location— uno per file sorgente.
La configurazione viene risolta in modo lazy e memorizzata nella cache per sessione; si reimposta su ciascuna richiesta initialize (ad esempio, quando si apre una nuova cartella dell'area di lavoro).
Risoluzione dei problemi
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| Vai alla definizione non fa nulla | Il server non è in esecuzione | Verifica che @intlayer/lsp sia installato e che l'editor lo stia avviando |
| Rilevata radice dell'area di lavoro errata | Più cartelle dell'area di lavoro | Assicurati che la cartella contenente intlayer.config.ts sia la prima cartella dell'area di lavoro |
| Definizioni non trovate per una chiave | Configurazione non risolta | Verifica che intlayer.config.ts (o .js) esista nella radice dell'area di lavoro |
| Il server si blocca all'avvio | Versione di Node.js troppo vecchia | Richiede Node.js ≥ 14.18 |