Yazar:
    Oluşturma:2026-04-24Son güncelleme:2026-09-27

    Astro + Svelte Sitenizi Intlayer ile Çevirin

    ide.intlayer.org
    intlayer-astro-template.vercel.app

    İçindekiler

    Neden alternatifler yerine Intlayer?

    'astro-i18n' veya 'i18next' gibi ana çözümlerle karşılaştırıldığında Intlayer, aşağıdaki gibi entegre optimizasyonlarla gelen bir çözümdür:

    Intlayer, çok dilli yönlendirme, site haritası ve uluslararasılaştırmayı (i18n) ölçeklendirmek için gereken tüm özellikleri sunarak Astro ile mükemmel çalışacak şekilde optimize edilmiştir.

    Sayfalarınıza çok büyük JSON dosyaları yüklemek yerine yalnızca gerekli içeriği yükleyin. Intlayer bundle ve sayfa boyutlarınızı %50'ye kadar azaltmanıza yardımcı olur.

    Uygulamanızın içeriğinin kapsamını belirlemek, büyük ölçekli uygulamalar için bakımı kolaylaştırır. İçerik kod tabanınızın tamamını gözden geçirmenin zihinsel yükü olmadan, tek bir özellik klasörünü çoğaltabilir veya silebilirsiniz. Ayrıca Intlayer, içeriğinizin doğruluğunu sağlamak için tamamen tiplendirilmiş (fully typed)tır.

    İçeriğin bir arada konumlandırılması Büyük Dil Modellerinin (LLM'ler) ihtiyaç duyduğu bağlamı azaltır. Intlayer ayrıca eksik çevirileri test etmek için CLI gibi bir araç paketiyle birlikte gelirLSP, MCP ve agent skills, geliştirici deneyimini (DX) yapay zeka için daha da sorunsuz hale getirmek için ajanlar.

    Maliyeti AI sağlayıcınıza ait olmak üzere seçtiğiniz LLM'yi kullanarak CI/CD işlem hattınızda çeviri yapmak için otomasyonu kullanın. Intlayer ayrıca içerik çıkarmayı otomatikleştirmek için bir derleyici ve arka planda çeviri yapmaya yardımcı olacak bir web platformu sunar.

    Büyük JSON dosyalarını bileşenlere bağlamak performans ve tepkime sorunlarına yol açabilir. Intlayer, içerik yüklemenizi derleme sırasında optimize eder.

    Bir i18n çözümünden çok daha fazlası olan Intlayer, kendi kendine barındırılan bir görsel düzenleyici ve tam CMS çok dilli içeriğinizi gerçek zamanlı olarak yönetmenize yardımcı olarak çevirmenler, metin yazarları ve diğer ekip üyeleriyle işbirliğini kusursuz hale getirir. İçerik yerel olarak ve/veya uzaktan depolanabilir.

    Astro + Svelte'de Intlayer'ı Yapılandırmak İçin Adım Adım Kılavuz

    GitHub'daki uygulama şablonuna göz atın.

    1. Bağımlılıkları Yükleyin

      Tercih ettiğiniz paket yöneticisini kullanarak gerekli paketleri yükleyin:

      bash
      npx intlayer init --interactive
      
      --interactive bayrağı isteğe bağlıdır. Bir yapay zeka aracısıysanız intlayer-cli init kullanın.
      Bu komut ortamınızı algılayacak ve gerekli paketleri yükleyecektir. Örneğin:
      bash
      npm install intlayer astro-intlayer svelte svelte-intlayer @astrojs/svelte
      
      • intlayer Konfigürasyon yönetimi, çeviriler, içerik deklarasyonu, transpilasyon ve CLI komutları için i18n araçları sağlayan temel paket.

      • astro-intlayer Intlayer'ı Vite paketleyicisi ile entegre etmek için Astro entegrasyon eklentisini, her isteğin yerel ayarını Astro.locals.intlayer içine çözümleyen bir ara yazılımı ve useIntlayer / useDictionary / useLocale hook'larını içerir. Aynı içe aktarma yolu, .astro frontmatter'ında sunucu uygulamasına ve <script> bloklarında istemci uygulamasına (vanilla-intlayer destekli) çözümlenir.

      • svelte Temel Svelte paketi.

      • svelte-intlayer Svelte uygulamalarına Intlayer entegre etmek için paket. Svelte'de uluslararasılaştırma için setupIntlayer'ın yanı sıra useIntlayer ve useLocale store'larını sağlar.

      • @astrojs/svelte Svelte bileşen islands kullanımına olanak tanıyan resmi Astro entegrasyonu.

    2. Projenizi Yapılandırın

      Mimari

      Bu mimaride, astro.config.ts içinde tanımlanan intlayer() entegrasyonu sözlüklerinizi derler ve her isteğin yerel ayarını (locale) çözümleyip Astro.locals.intlayer üzerinde sunan bir ara yazılım (middleware) ekler. Sayfalar src/pages/[...locale]/ rest segmenti altında yer alır, bu sayede varsayılan yerel ayar ön ek olmadan sunulurken diğer tüm yerel ayarlar kendilerine ait özel bir URL alır. .astro dosyaları sunucu tarafı render için içeriği astro-intlayer kütüphanesinin useIntlayer / useLocale kancalarıyla okur ve Svelte adası (src/components/svelte/SvelteIsland.svelte) sunucu tarafından algılanan yerel ayarı bir prop olarak alıp etkileşimli kısım için svelte-intlayer kütüphanesine iletir. İçerik bildirimleri src/ içinde bileşenlerinizin yanında yer alır.

      bash
      .
      ├── src
      │   ├── app.content.ts                # App content declaration
      │   ├── components
      │   │   └── svelte
      │   │       └── SvelteIsland.svelte   # Svelte island (content + locale switcher)
      │   └── pages
      │       ├── [...locale]
      │       │   └── index.astro           # Localized page mounting the island
      │       ├── robots.txt.ts             # robots.txt endpoint
      │       └── sitemap.xml.ts            # Localized sitemap endpoint
      ├── astro.config.ts                   # Astro config with the intlayer() and svelte() integrations
      ├── intlayer.config.ts
      ├── package.json
      └── tsconfig.json
      

      Yapılandırma

      Uygulamanızın dillerini tanımlamak için bir konfigürasyon dosyası oluşturun:

      intlayer.config.ts
      import { Locales, type IntlayerConfig } from "intlayer";
      
      const config: IntlayerConfig = {
        internationalization: {
          locales: [
            Locales.ENGLISH,
            Locales.FRENCH,
            Locales.SPANISH,
            Locales.TURKISH,
            // Diğer dilleriniz
          ],
          defaultLocale: Locales.ENGLISH,
        },
      };
      
      export default config;
      
      Bu konfigürasyon dosyası aracılığıyla yerelleştirilmiş URL'leri, ara yazılım yönlendirmelerini, çerez adlarını, içerik deklarasyonlarının konumunu ve uzantılarını yapılandırabilir, konsoldaki Intlayer günlüklerini devre dışı bırakabilir ve daha fazlasını yapabilirsiniz. Kullanılabilir parametrelerin tam listesi için konfigürasyon dokümantasyonuna bakın.
    3. Intlayer'ı Astro konfigürasyonunuza entegre edin

      Astro konfigürasyonunuza intlayer eklentisini ve Svelte entegrasyonunu ekleyin.

      astro.config.ts
      // @ts-check
      
      import { intlayer } from "astro-intlayer";
      import svelte from "@astrojs/svelte";
      import { defineConfig } from "astro/config";
      
      // https://astro.build/config
      export default defineConfig({
        integrations: [intlayer(), svelte()],
      });
      
      intlayer() entegrasyon eklentisi, Intlayer'ı Astro ile entegre etmek için kullanılır. İçerik deklarasyon dosyalarının oluşturulmasını sağlar ve bunları geliştirme modunda izler. Astro uygulaması içinde Intlayer ortam değişkenlerini tanımlar ve performansı optimize etmek için takma adalar (aliases) sağlar.
      svelte() entegrasyonu, client:only="svelte" aracılığıyla Svelte bileşen islands kullanımına olanak tanır.
    4. İçeriğinizi Deklare Edin

      Çevirileri saklamak için içerik deklarasyonlarınızı oluşturun ve yönetin:

      src/app.content.ts
      import { t, type Dictionary } from "intlayer";
      
      const appContent = {
        key: "app",
        content: {
          title: t({
            en: "Hello World",
            fr: "Bonjour le monde",
            es: "Hola mundo",
            tr: "Merhaba Dünya",
          }),
        },
      } satisfies Dictionary;
      
      export default appContent;
      
      İçerik deklarasyonları, contentDir (varsayılan olarak ./src) içinde yer aldıkları ve içerik deklarasyon dosyası uzantısıyla (varsayılan olarak .content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}) eşleştikleri sürece uygulamanızın herhangi bir yerinde tanımlanabilir.
      Daha fazla bilgi için içerik deklarasyon dokümantasyonuna bakın.
    5. Astro'da İçeriği Kullanma

      astro-intlayer tarafından dışa aktarılan hook'ları kullanarak sözlüklerinizi .astro dosyalarında kullanın. Bunlar react-intlayer ile aynı imzaları paylaşır: useIntlayer("key") bir sözlüğün içeriğini ve useLocale() herhangi bir argüman geçirmeden geçerli yerel ayarı döndürür.

      Yerel ayar, entegrasyonun kendi src/middleware.ts dosyanızın önünde sizin için kaydettiği astro-intlayer ara yazılımından gelir. Her istek için yerel ayarı sırasıyla URL ön ekinden, ardından istemci tarafından saklanan yerel ayardan (çerez veya başlık), ardından Accept-Language başlığından çözümler ve Astro.locals.intlayer içinde saklar. Önceden oluşturulmuş sayfalar her ziyaretçi için bir kez oluşturulduğundan yalnızca URL'yi kullanır.

      Her sayfaya SEO meta verileri (hreflang ve kurallı bağlantılar gibi) eklemeli ve etkileşimli istemci tarafı içeriği için bir Svelte island tanıtmalısınız.

      src/pages/[...locale]/index.astro
      ---
      import { useIntlayer, useLocale } from "astro-intlayer";
      import {
        getLocalizedUrl,
        getPrefix,
        localeMap,
        defaultLocale,
        getHTMLTextDir,
      } from "intlayer";
      import SvelteIsland from "../../components/svelte/SvelteIsland.svelte";
      
      export const getStaticPaths = () => {
        return localeMap(({ locale }) => ({
          params: { locale: getPrefix(locale).localePrefix },
        }));
      };
      
      // Ara yazılım tarafından çözümlenen yerel ayar (ör. /tr/about -> 'tr')
      const { locale } = useLocale();
      
      // Bu yerel ayar için 'app' sözlüğünün içeriği
      const { title } = useIntlayer("app");
      ---
      
      <!doctype html>
      <html lang={locale} dir={getHTMLTextDir(locale)}>
        <head>
          <meta charset="utf-8" />
          <meta name="viewport" content="width=device-width" />
          <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
          <title>{title}</title>
      
          <!-- Kurallı (Canonical) Bağlantı: Arama motorlarını bu sayfanın ana sürümü hakkında bilgilendirir -->
          <link
            rel="canonical"
            href={new URL(getLocalizedUrl(Astro.url.pathname, locale), Astro.site)}
          />
      
          <!-- Hreflang: Google'ı tüm yerelleştirilmiş sürümler hakkında bilgilendirir -->
          {
            localeMap(({ locale: mapLocale }) => (
              <link
                rel="alternate"
                hreflang={mapLocale}
                href={new URL(
                  getLocalizedUrl(Astro.url.pathname, mapLocale),
                  Astro.site
                )}
              />
            ))
          }
      
          <!-- x-default: Dil kullanıcının diliyle eşleşmediğinde kullanılan geri dönüş (fallback) seçeneği -->
          <link
            rel="alternate"
            hreflang="x-default"
            href={new URL(
              getLocalizedUrl(Astro.url.pathname, defaultLocale),
               Astro.site
            )}
          />
        </head>
        <body>
          <!-- Svelte island, dil seçici de dahil olmak üzere tüm etkileşimli içeriği oluşturur -->
          <SvelteIsland locale={locale} client:only="svelte" />
        </body>
      </html>
      
      İçeriğinizi alt, title, href, aria-label gibi bir string özniteliğinde kullanmak istiyorsanız, fonksiyonun değerini şu şekilde kullanabilirsiniz:
      tsx
      <img src={content.image.src.value} alt={content.image.value} />
      <img src={content.image.src.toString()} alt={content.image.toString()} />
      <img src={String(content.image.src)} alt={String(content.image)} />
      
      Astro.locals.intlayer ayrıca locale, defaultLocale ve availableLocales değerlerini kendi ara yazılımlarınıza ve uç noktalarınıza sunar. İstek yerel ayarını tek bir çağrı için geçersiz kılmak üzere ikinci argüman olarak bir yerel ayar veya seçici iletin (useIntlayer("app", "fr"), useIntlayer("faq", { item: 2 })).

      Yönlendirme Kurulumu Hakkında Not: Kullandığınız dizin yapısı, intlayer.config.ts dosyasındaki middleware.routing ayarına bağlıdır:

      • prefix-no-default (varsayılan): Varsayılan dili kök dizinde tutar (önek yok) ve diğerlerine önek ekler. Tüm durumları yakalamak için [...locale] kullanın.
      • prefix-all: Tüm URL'ler bir dil öneki alır. Kök dizini ayrı işlemek gerekmiyorsa standart [locale] kullanabilirsiniz.
      • search-param veya no-prefix: Dil dizinlerine gerek yoktur. Dil, sorgu parametreleri veya çerezler aracılığıyla yönetilir.
    6. Bir Svelte Island Bileşeni Oluşturun

      Svelte uygulamanızı sarmalayan bir island bileşeni oluşturun. Store'lara erişmeden önce sunucu tarafından algılanan dille setupIntlayer'ı çağırmalısınız.

      src/components/svelte/SvelteIsland.svelte
      <script lang="ts">
        import { useIntlayer, useLocale, setupIntlayer } from "svelte-intlayer";
        import { getLocalizedUrl, getLocaleName, type LocalesValues } from "intlayer";
      
        export let locale: LocalesValues;
      
        setupIntlayer(locale);
      
        const content = useIntlayer("app");
        const { locale: currentLocale, availableLocales, setLocale } = useLocale({
          onLocaleChange: (newLocale: LocalesValues) => {
            window.location.href = getLocalizedUrl(window.location.pathname, newLocale);
          },
        });
      </script>
      
      <div>
        <h1>{$content.title}</h1>
        <!-- Dil seçici doğrudan island içinde oluşturulur -->
        <div class="locale-switcher">
          <span class="switcher-label">Dili değiştir:</span>
          <div class="locale-buttons">
            {#each availableLocales as localeItem}
              <button
                class="locale-btn {localeItem === $currentLocale ? 'active' : ''}"
                disabled={localeItem === $currentLocale}
                on:click={() => setLocale(localeItem)}
              >
                <span class="ls-own-name">{getLocaleName(localeItem)}</span>
                <span class="ls-current-name">{getLocaleName(localeItem, $currentLocale)}</span>
                <span class="ls-code">{localeItem.toUpperCase()}</span>
              </button>
            {/each}
          </div>
        </div>
      </div>
      
      locale prop'u, Astro sayfasından (sunucu algılaması) aktarılır ve setupIntlayer'ı başlatmak için kullanılır, böylece bileşendeki tüm store'lar için başlangıç dili ayarlanmış olur.
    7. Bir Dil Seçici Ekleme

      Dil değiştirme işlevselliği doğrudan Svelte island'ına entegre edilmiştir (yukarıdaki Adım 6'ya bakın). svelte-intlayer'dan useLocale store'unu kullanır ve kullanıcı yeni bir dil seçtiğinde yerelleştirilmiş URL'ye yönlendirir:

      src/components/svelte/SvelteIsland.svelte
      <script lang="ts">
        import { useLocale } from "svelte-intlayer";
        import { getLocalizedUrl, getLocaleName, type LocalesValues } from "intlayer";
      
        // Adım 6'daki aynı locale/setupIntlayer mantığını yeniden kullanın...
      
        const {
          locale: currentLocale,
          availableLocales,
          setLocale,
        } = useLocale({
          onLocaleChange: (newLocale: LocalesValues) => {
            // Dil değişikliğinde yerelleştirilmiş URL'ye yönlendir
            window.location.href = getLocalizedUrl(window.location.pathname, newLocale);
          },
        });
      </script>
      
      <div class="locale-switcher">
        <span class="switcher-label">Dili değiştir:</span>
        <div class="locale-buttons">
          {#each availableLocales as localeItem}
            <button
              class="locale-btn {localeItem === $currentLocale ? 'active' : ''}"
              disabled={localeItem === $currentLocale}
              on:click={() => setLocale(localeItem)}
            >
              <span class="ls-own-name">{getLocaleName(localeItem)}</span>
              <span class="ls-current-name">{getLocaleName(localeItem, $currentLocale)}</span>
              <span class="ls-code">{localeItem.toUpperCase()}</span>
            </button>
          {/each}
        </div>
      </div>
      

      Kalıcılık Hakkında Not: window.location.href aracılığıyla yönlendirmek için onLocaleChange kullanmak, yeni dil URL'sinin ziyaret edilmesini sağlar. Bu da Intlayer ara yazılımının dil çerezini ayarlamasına ve gelecekteki ziyaretlerde kullanıcının tercihini hatırlamasına olanak tanır.

    8. Sitemap ve Robots.txt

      Intlayer, yerelleştirilmiş site haritanızı ve robots.txt dosyalarınızı dinamik olarak oluşturmak için yardımcı programlar sunar.

      Sitemap

      Intlayer comes with a built-in sitemap generator to help you create a sitemap for your application easily. It handles localized routes and adds the necessary metadata for search engines.

      The Intlayer generated sitemap supports the xhtml:link namespace (Hreflang XML Extensions). Unlike the default sitemap generators that only list raw URLs, Intlayer automatically creates the required bidirectional links between all language versions of a page (e.g., /about, /about?lang=fr, and /about?lang=es). This ensures search engines correctly index and serve the right language version to the right audience.

      Tüm yerelleştirilmiş rotalarınızı içeren bir site haritası oluşturmak için src/pages/sitemap.xml.ts dosyasını oluşturun.

      src/pages/sitemap.xml.ts
      import type { APIRoute } from "astro";
      import { generateSitemap, type SitemapUrlEntry } from "intlayer";
      
      const pathList: SitemapUrlEntry[] = [
        { path: "/", changefreq: "daily", priority: 1.0 },
        { path: "/about", changefreq: "monthly", priority: 0.7 },
      ];
      
      export const GET: APIRoute = async ({ site }) => {
        const xmlOutput = generateSitemap(pathList, {
          siteUrl: "https://example.com",
        });
      
        return new Response(xmlOutput, {
          headers: { "Content-Type": "application/xml" },
        });
      };
      

      Robots.txt

      Arama motoru taramasını kontrol etmek için src/pages/robots.txt.ts dosyasını oluşturun.

      src/pages/robots.txt.ts
      import type { APIRoute } from "astro";
      import { getMultilingualUrls } from "intlayer";
      
      const getAllMultilingualUrls = (urls: string[]) =>
        urls.flatMap((url) => Object.values(getMultilingualUrls(url)) as string[]);
      
      const disallowedPaths = getAllMultilingualUrls(["/admin", "/private"]);
      
      export const GET: APIRoute = ({ site }) => {
        const robotsTxt = [
          "User-agent: *",
          "Allow: /",
          ...disallowedPaths.map((path) => `Disallow: ${path}`),
          "",
          `Sitemap: ${new URL("/sitemap.xml", site).href}`,
        ].join("\n");
      
        return new Response(robotsTxt, {
          headers: { "Content-Type": "text/plain" },
        });
      };
      
    9. Bileşenlerinizin içeriğini çıkarın

      İsteğe bağlı

      Mevcut bir kod tabanınız varsa, binlerce dosyayı dönüştürmek zaman alıcı olabilir.

      Bu süreci kolaylaştırmak için Intlayer, bileşenlerinizi dönüştürmek ve içeriği çıkarmak için bir derleyici / çıkarıcı sunar.

      Kurulum için intlayer.config.ts dosyanıza bir compiler bölümü ekleyebilirsiniz:

      intlayer.config.ts
      import { type IntlayerConfig } from "intlayer";
      
      const config: IntlayerConfig = {
        // ... Yapılandırmanızın geri kalanı
        compiler: {
          /**
           * Derleyicinin etkinleştirilip etkinleştirilmeyeceğini belirtir.
           */
          enabled: true,
      
          /**
           * Çıktı dosyalarının yolunu tanımlar
           */
          output: ({ fileName, extension }) => `./${fileName}${extension}`,
      
          /**
           * Bileşenlerin dönüştürüldükten sonra kaydedilip kaydedilmeyeceğini belirtir. Bu sayede derleyici, uygulamayı dönüştürmek için yalnızca bir kez çalıştırılabilir ve ardından kaldırılabilir.
           */
          saveComponents: false,
      
          /**
           * Sözlük anahtarı öneki
           */
          dictionaryKeyPrefix: "",
        },
      };
      
      export default config;
      

      Bileşenlerinizi dönüştürmek ve içeriği çıkarmak için çıkarıcıyı çalıştırın

      bash
      npx intlayer extract
      

      Bileşenlerinizi dönüştürmek ve içeriği ayıklamak için uygulamanızı derleyin

      bash
      npm run build # Veya npm run dev
      

    TypeScript Yapılandırması

    Intlayer, kod tabanınızı daha sağlam hale getirmek için TypeScript'ten yararlanmak amacıyla modül artırımı (module augmentation) kullanır.

    Autocompletion

    Translation Error

    TypeScript yapılandırmanızın otomatik olarak oluşturulan türleri içerdiğinden emin olun.

    tsconfig.json
    {
      // ... mevcut TypeScript yapılandırmanız
      "include": [
        // ... mevcut TypeScript yapılandırmanız
        ".intlayer/**/*.ts", // Otomatik oluşturulan türleri dahil edin
      ],
    }
    

    Git Yapılandırması

    Intlayer tarafından oluşturulan dosyaların yoksayılması önerilir. Bu, onları Git deponuza göndermenizi engeller.

    Bunu yapmak için .gitignore dosyanıza aşağıdaki talimatları ekleyin:

    bash
    # Intlayer tarafından oluşturulan dosyaları yoksay
    .intlayer
    

    VS Code Uzantısı

    Intlayer ile geliştirme deneyiminizi iyileştirmek için resmi Intlayer VS Code uzantısını yükleyebilirsiniz.

    Bu uzantı şunları sağlar:

    • Çeviri anahtarları için otomatik tamamlama.
    • Eksik çeviriler için gerçek zamanlı hata algılama.
    • Çevrilmiş içeriğin satır içi önizlemesi.
    • Kolayca çeviri oluşturmak ve güncellemek için hızlı eylemler.

    Uzantı kullanımı hakkında daha fazla bilgi için VS Code Uzantısı dokümantasyonuna bakın.

    Bilginizi Derinleştirin

    Daha fazlarını öğrenmek isterseniz, içeriğinizi dış kaynaklara aktarmak için Görsel Editör'ü uygulayabilir veya CMS kullanabilirsiniz.

    Sıkça Sorulan Sorular

    Astro'nun yerleşik i18n seçeneği yerel ön eklerini ve yönlendirmeleri yönetir ancak içeriğin kendisini yönetmez. Bir ada eklemek ikinci bir sorunu beraberinde getirir: ada Astro değil, Svelte çalıştırır.

    • Astro i18n artı el yazısı sözlükler, adada svelte-i18n: senkronize tutulacak iki içerik kaynağı ve aralarında ortak tip denetimi yok.
    • Intlayer: her ikisi için tek bir içerik katmanı. astro-intlayer .astro sayfalarını, svelte-intlayer ise aynı bildirimleri okuyarak Svelte adalarını kapsar.

    Bir etiketi bir kez bildirip hem statik sayfada hem de etkileşimli adada kullanabilmek, tek bir içerik katmanı seçmenin temel nedenidir. Bkz. neden Intlayer.

    Ad alanı tabanlı bir yapılandırmaya kıyasla çok daha az, çünkü bir sayfa render etmediği bir kataloğu asla indirmez. Astro sayfaları derleme zamanında render edilir, bu nedenle yalnızca çevrilmiş HTML gönderilir ve sayfaya hiçbir sözlük eklenmez; yalnızca ada (island) bileşenleri sözlük alır. Dinamik sözlükler geri kalanını yerel başına böler. Intlayer paket ve sayfa boyutunu %50'ye kadar azaltır. Bkz. paket optimizasyonu ve kıyaslama.

    Büyük ölçüde evet. İçeriği taşımak için geçiş kılavuzunu izleyin. Kademeli olarak da geçiş yapabilirsiniz: sync JSON eklentisi mevcut JSON kataloglarınızı doğruluk kaynağı olarak tutar ve bunlardan Intlayer sözlükleri üretir.

    Evet. sync JSON eklentisi, /messages/{locale}/{namespace}.json dosyalarınızı doğruluk kaynağı olarak tutar ve her iki yönde Intlayer sözlükleri üretir. sync PO eklentisi gettext katalogları için aynısını yapar ve yerel başına dosyalar, yerelleri tek bir dosyada gruplamak yerine içeriği dile göre ayırmanıza olanak tanır.

    Hayır. npx intlayer extract komutunu çalıştırın; Intlayer bileşenlerinizi okur, kullanıcıya dönük dizeleri çıkarır ve her birinin yanına bir .content dosyası yazar, böylece dizeleri tek tek kopyalamak yerine bir diff incelersiniz. Bu kılavuzun 15. adımı bunu açıklar.

    Tam otomatik bir süreç için Intlayer Compiler derleme sırasında aynı işlemi yapar: her değişiklikte JSX, TSX, Vue ve Svelte kodunu tarar, sözlükleri üretir ve HMR ile senkronize tutar.

    Derleyiciyi açmadan önce bilmeye değer iki sınır vardır. Statik analiz ile çalışır, bu nedenle API hata kodları veya CMS alanları gibi yalnızca çalışma zamanında var olan dizeler ulaşılamaz kalır. Ayrıca, className="active" veya durum kodu gibi uygulama mantığından kullanıcıya yönelik metinleri ayırt etmesi gerekir; bu da büyük bir kod tabanında birkaç ek açıklama gerektirir. Extract komutu sizi döngüde tutarak her ikisinden de kaçınır.

    Beş araç, hepsi isteğe bağlı:

    • VS Code eklentisi: bir useIntlayer anahtarından onu tanımlayan içerik dosyasına atlayın, bileşenden içerik çıkarın ve komut paletinden build, fill, test, push ve pull komutlarını çalıştırın.
    • LSP sunucusu: LSP destekleyen tüm editörlerde tanıma gitme, tüm referansları bulma, çevrilmiş değerlerin fareyle üzerine gelindiğinde önizlemesi ve otomatik tamamlama. i18next, react-i18next, next-intl ve use-intl çağrılarını da çözer.
    • MCP sunucusu: Intlayer dokümantasyonunu ve CLI'sini Cursor, VS Code, Claude Desktop, Claude Code ve ChatGPT'ye sunar.
    • Ajan becerileri (Agent skills): intlayer-config, intlayer-cli ve intlayer-content gibi odaklanmış beceriler.
    • ESLint eklentisi: no-raw-text kuralı doğrudan kodlanmış metinleri işaretler.