Creation:2025-06-07Last update:2026-05-31

    Intlayer LSP Sunucusu

    Intlayer Dil Sunucusu (LSP), IDE'nizi Intlayer farkındalığına sahip bir zeka ile geliştiren bir Dil Sunucusu Protokolü (LSP) uygulamasıdır. Şu anda sözlük anahtarı çağrıları için Tanıma Git (Go to Definition) özelliği sunarak, bileşeninizdeki useIntlayer("my-key") çağrısından onu tanımlayan .content.ts dosyasına doğrudan atlamanızı sağlar.


    Neden LSP Kullanmalısınız?

    Intlayer kullandığınızda, useIntlayer("homepage") gibi bir çağrı ile bunun src/homepage.content.ts içindeki tanımı arasındaki bağlantı örtüktür. Araçlar olmadan, dosyayı manuel olarak aramanız gerekir. LSP bu bağlantıyı açık hale getirir:

    AI Ajanı Farkındalığı

    AI kodlama ajanları (Cursor, Windsurf, GitHub Copilot, Claude Code, Codex), sembolleri çözmek ve dosyalar arası ilişkileri anlamak için dil sunucusuna güvenir. Intlayer LSP çalışırken, ajanlar useIntlayer("key") çağrısını tanımına kadar takip edebilir; bu da onlara mevcut içerik anahtarları, her bir sözlüğün yapısı ve hangi dosyaların okunması veya düzenlenmesi gerektiği konusunda doğru bağlam sağlar.

    Tanıma Git

    Desteklenen bir getter çağrısı içindeki herhangi bir sözlük anahtarı dizesinin üzerine imlecinizi getirin ve F12 (veya Cmd/Ctrl+Tıklama) tuşuna basın. Editör, içerik tanımlama dosyasını açar ve imleci key: satırına yerleştirir.

    Birleştirilmiş Sözlük Desteği

    Bir anahtar birden fazla içerik dosyasına bölünmüş olabilir (Intlayer bunları birleştirir). Sunucu, her kaynak dosya için bir konum (Location) döndürür, böylece her tanıma gidebilirsiniz.

    Her Yerde Çalışır

    Tüm *-intlayer paketlerini destekler (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).

    Desteklenen Getter Çağrıları

    Sunucu, aşağıdaki işlev çağrılarını algılar ve ilk dize değişmezi argümanını sözlük anahtarı olarak çıkarır:

    İşlev Örnek
    useIntlayer useIntlayer("hero")
    getIntlayer getIntlayer("hero", locale)

    TypeScript jenerikleri ve ekstra argümanlar yoksayılır — yalnızca anahtar dizesi önemlidir.

    useDictionary ve getDictionary, bir dize anahtarı yerine zaten içe aktarılmış bir Dictionary nesnesini ilk argüman olarak alır, bu nedenle Tanıma Git özelliğinden yararlanmazlar ve sunucu tarafından izlenmezler.

    Kurulum

    LSP sunucusu, @intlayer/lsp paketinin bir parçası olarak dağıtılır:

    bash
    npm install --save-dev @intlayer/lsp

    Paket, editörlerin sunucu yürütülebilir dosyası olarak kullandığı intlayer-lsp ikili dosyasını (binary) sunar.


    Claude Code Eklentisi Olarak Kurulum

    Intlayer LSP, doğrudan Intlayer GitHub deposunda barındırılan bir Claude Code eklentisi olarak mevcuttur. Bunu yüklemek, Claude Code'a tüm useIntlayer / getIntlayer çağrılarınız için yerel Tanıma Git farkındalığı kazandırır.

    1. Dil Sunucusu İkili Dosyasını Yükleyin

    bash
    npm install -g @intlayer/lsp

    Bu, eklentinin lspServers girişinin çağırdığı intlayer-lsp ikili dosyasını PATH'inize yerleştirir.

    2. Intlayer Pazaryerini Kaydedin ve Eklentiyi Yükleyin

    bash
    claude plugin marketplace add intlayer@github:aymericzip/intlayerclaude plugin install intlayer-lsp@intlayerclaude plugin enable intlayer-lsp@intlayer

    Claude Code, enabledPlugins ayarlarınıza "intlayer-lsp@intlayer": true ekleyecek ve desteklenen dosya türlerinde (.ts, .tsx, .js, .jsx, .vue, .svelte) dil sunucusunu otomatik olarak başlatacaktır.

    3. LSP Aracını Etkinleştirin (Henüz aktif değilse)

    Bazı Claude Code sürümleri, LSP özellik bayrağının ayarlanmasını gerektirir. Kurulumdan sonra Tanıma Git çalışmıyorsa ~/.claude/settings.json dosyanıza aşağıdakileri ekleyin:

    ~/.claude/settings.json
    {  "env": {    "ENABLE_LSP_TOOL": "1"  }}

    Claude Code'u yeniden başlatın — Intlayer kod tabanınızda gezinirken artık grep yöntemine başvurmak yerine goToDefinition, findReferences ve diğer LSP işlemlerini kullanacaktır.


    VS Code'da Kurulum (Uzantı Aracılığıyla — Önerilen)

    Eğer Intlayer VS Code uzantısı yüklüyse, dil sunucusu otomatik olarak başlar. Ek yapılandırma gerekmez.

    Kurulum ve diğer özellikler için VS Code uzantısı belgelerine bakın.

    VS Code'da Manuel Kurulum

    Intlayer uzantısını kullanmıyorsanız, dil sunucusunu vscode-glspc gibi genel bir LSP istemci uzantısı kullanarak veya kendi küçük uzantınızı yazarak manuel olarak bağlayabilirsiniz. Önerilen yaklaşım Intlayer uzantısını kullanmaktır.

    Referans için, sunucu stdio üzerinden intlayer-lsp ikili dosyası ile başlatılır:

    .vscode/settings.json
    {  "intlayer.languageServer.command": "npx",  "intlayer.languageServer.args": ["@intlayer/lsp"]}

    Intlayer uzantısı, sunucuyu başlatmak için bu ayarları okur. Yalnızca uzantıya güveniyorsanız, manuel ayarlara gerek yoktur.


    Cursor'da Kurulum

    Cursor, yerleşik AI özelliklerine sahip bir VS Code çatalıdır (fork). Aynı uzantı ekosistemini kullanır, bu nedenle Intlayer VS Code uzantısı herhangi bir ek yapılandırma olmadan çalışır — bir kez yükleyin ve Cursor bunu otomatik olarak algılar.

    Manuel bir yapılandırmayı tercih ederseniz, Cursor da çalışma alanı kökünden .vscode/settings.json dosyasını okur, böylece yukarıdaki VS Code kod parçacığı doğrudan uygulanır.


    Windsurf'te Kurulum

    Windsurf (Codeium tarafından geliştirilmiştir), VS Code tabanlı bir diğer editördür. VS Code Pazaryeri'nden Intlayer uzantısını yükleyin; dil sunucusu, VS Code ve Cursor'da olduğu gibi otomatik olarak etkinleşir.

    Manuel yapılandırma için, proje kökünde .vscode/settings.json dosyası oluşturun:

    .vscode/settings.json
    {  "intlayer.languageServer.command": "npx",  "intlayer.languageServer.args": ["@intlayer/lsp"]}

    Zed'de Kurulum

    Zed, dil ayarları aracılığıyla yerel LSP desteğine sahiptir. Zed kullanıcı ayarlarınıza (~/.config/zed/settings.json) bir giriş ekleyin:

    ~/.config/zed/settings.json
    {  "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", "..."]    }  }}

    "..." yer tutucusu, Zed'e Intlayer sunucusunun yanında varsayılan dil sunucularını da tutmasını söyler.


    AI Ajanı CLI'ları (Claude Code, Codex vb.) İçin Kurulum

    Claude Code, birinci sınıf LSP eklenti desteğine sahiptir — doğrudan terminal oturumlarınızda tam Tanıma Git deneyimini elde etmek için yukarıdaki Claude Code Eklentisi kurulumunu takip edin.

    OpenAI Codex ve diğer terminal tabanlı araçlar henüz LSP istemcileri olarak hareket etmemektedir — kalıcı bir dil sunucusu oturumu sürdürmek yerine dosyaları doğrudan okuyup yazarlar. Bu araçlar için, LSP'nin çalışıyor olmasının değeri dolaylı olarak ortaya çıkar: Sunucu bir yardımcı editörde (VS Code, Cursor, Windsurf, ...) aktif olduğunda, editörün canlı dizini, editör tarafından sağlanan bağlam (örneğin, Cursor Composer, Windsurf Cascade, GitHub Copilot Chat) aracılığıyla sorgulayabilen herhangi bir AI ajanının kullanımına sunulur.

    Açık bir editör olmadan yalnızca bir terminalde çalışıyorsanız, dil sunucusunu arka planda başlatabilirsiniz, böylece daha sonra aynı çalışma alanına bağlanan herhangi bir editör için hazır olur:

    bash
    # Sunucuyu arka planda aktif tutunnpx @intlayer/lsp &

    Neovim'de Manuel Kurulum

    nvim-lspconfig kullanarak özel bir sunucu yapılandırması kaydedin:

    ~/.config/nvim/init.lua
    local lspconfig = require('lspconfig')local configs = require('lspconfig.configs')if not configs.intlayer_lsp then  configs.intlayer_lsp = {    default_config = {      -- Sunucuyu npx ile başlatın, böylece genel kuruluma gerek kalmaz      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({})

    Neovim'i yeniden başlattıktan sonra, bir Intlayer anahtarı üzerinde gd tuşuna basmak Tanıma Git işlemini çağıracaktır.


    Diğer Editörlerde Manuel Kurulum

    Dil Sunucusu Protokolünü destekleyen herhangi bir editör @intlayer/lsp kullanabilir. Sunucu:

    • Taşıma (Transport) – Node.js IPC / stdio (standart)
    • Yürütülebilir Dosyanpx @intlayer/lsp (veya yerel olarak yüklenmiş intlayer-lsp ikili dosyası)
    • YeteneklerdefinitionProvider: true, textDocumentSync: Incremental

    Tam yapılandırma biçimi için editörünüzün LSP belgelerine başvurun (örneğin, coc.nvim için languageserver.json veya Helix içindeki LSP istemci ayarları).

    Örnek: coc.nvim

    ~/.config/nvim/coc-settings.json
    {  "languageserver": {    "intlayer": {      "command": "npx",      "args": ["@intlayer/lsp"],      "filetypes": [        "typescript",        "typescriptreact",        "javascript",        "javascriptreact",        "vue",        "svelte"      ],      "rootPatterns": [        "intlayer.config.ts",        "intlayer.config.js",        "package.json"      ]    }  }}

    Örnek: Helix

    ~/.config/helix/languages.toml
    [[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"]

    Nasıl Çalışır?

    Sunucu başlatıldığında, getConfiguration() kullanarak çalışma alanı kökünden Intlayer yapılandırmasını çözer. Bu, derlenmiş sözlükleri bulmak için gereken build ve system yollarını sunucuya sağlar.

    Her Tanıma Git isteğinde:

    1. Sunucu, açık olan belgenin tam metnini okur.
    2. Düzenli bir ifade (regex) kullanarak getter çağrılarını (useIntlayer, getIntlayer vb.) tarar.
    3. İmleç konumunun bu çağrılardan birinin içine düşüp düşmediğini kontrol eder.
    4. Öyleyse, sözlük anahtarını (regex'in yakalama grubu 3) çıkarır ve bu anahtarı tanımlayan her bir içerik dosyasını bulmak için getUnmergedDictionaries() işlevini çağırır.
    5. Eşleşen her dosyayı okur ve imleci tam olarak konumlandırmak için key: "<key>" içeren satırı bulur.
    6. Kaynak dosya başına bir adet olmak üzere Location nesnelerinden oluşan bir dizi döndürür.

    Yapılandırma tembelce (lazy) çözülür ve oturum başına önbelleğe alınır; her initialize isteğinde (örneğin yeni bir çalışma alanı klasörü açtığınızda) sıfırlanır.


    Sorun Giderme

    Belirti Olası Neden Çözüm
    Tanıma Git hiçbir şey yapmıyor Sunucu çalışmıyor @intlayer/lsp paketinin kurulu olduğunu ve editörün bunu başlattığını kontrol edin
    Yanlış çalışma alanı kökü algılandı Birden fazla çalışma alanı klasörü intlayer.config.ts dosyasını içeren klasörün ilk çalışma alanı klasörü olduğundan emin olun
    Bir anahtar için tanımlar bulunamadı Yapılandırma çözülmedi intlayer.config.ts (veya .js) dosyasının çalışma alanı kökünde mevcut olduğunu doğrulayın
    Sunucu başlangıçta çöküyor Node.js sürümü çok eski Node.js ≥ 14.18 gerektirir