Ana SayfaPlaygroundShowcaseUygulamaDokümanBlog
    • Englishİngilizce
      EN
    • русскийRusça
      RU
    • 日本語Japonca
      JA
    • françaisFransızca
      FR
    • 한국어Korece
      KO
    • 中文Çince
      ZH
    • españolİspanyolca
      ES
    • DeutschAlmanca
      DE
    • العربيةArapça
      AR
    • italianoİtalyanca
      IT
    • British Englishİngiliz İngilizcesi
      EN-GB
    • portuguêsPortekizce
      PT
    • हिन्दीHintçe
      HI
    • TürkçeTürkçe
      TR
    • polskiLehçe
      PL
    • IndonesiaEndonezce
      ID
    • Tiếng ViệtVietnamca
      VI
    • українськаUkraynaca
      UK
    /
    Çerçeveye göre belgeleri filtrele
    Alt+←
    Neden Intlayer?
    Başla
    Kavram
    • Intlayer Nasıl Çalışır
    • Yapılandırma
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Görsel Editör
    • CMS
    • CI/CD Entegrasyonu
    • ÇeviriÇoğulNumaralandırmaKoşulCinsiyetEklemeDosyaİç İçe GeçmeMarkdownHTMLFonksiyon Getirme
    • Yerel Dosya
    • Derleyici
    • Otomatik Doldurma
    • Test
    • Paket Optimizasyonu
    Ortam
    • Next.js 14 ve Uygulama Yönlendirici
      Next.js 15
      Next.js locale’siz URL
      Next.js ve Sayfa Yönlendirici
      Derleyici
    • Tanstack Start Solid
    • Astro ve React
      Astro ve Svelte
      Astro ve Vue
      Astro ve Solid
      Astro ve Preact
      Astro ve Lit
      Astro ve Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt ve Vue
    • Vite ve Solid
    • SvelteKit
    • Vite ve Preact
    • Vite ve Vanilla JS
    • Vite ve Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native ve Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx ve React
    Plugins
    • JSON
    • gettext (.po)
    VS Code Uzantısı
    Aracı
    • MCP Sunucusu
    • Aracı becerileri
    Sürümler
    • v8
    • v7
    • v6
    Karşılaştırma
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Bir soru sor
    1. Documentation
    2. Plugin
    3. Sync json
    Oluşturma:2025-03-13Son güncelleme:2025-12-13
    Video eğitimini izleyin

    Bu sayfada bir video eğitimi mevcuttur.

    Bu dokümanı favori AI asistanınıza referans verin
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Sorunuzu sorun ve bu sayfaya ve seçtiğiniz AI sağlayıcısına referans vererek belgenin bir özetini alın

    Sürüm Geçmişi

    1. "ICU ve i18next format desteği eklendi"
      v7.5.013.12.2025
    2. "İlk JSON Senkronizasyon Eklentisi dokümantasyonu"
      v6.1.605.10.2025

    Bu sayfanın içeriği bir yapay zeka kullanılarak çevrildi.

    Orijinal içeriğin İngilizce son sürümünü görüntüleyin
    Bu dokümanı düzenle

    Bu dokümantasyonu geliştirmek için bir fikriniz varsa, lütfen GitHub'da bir çekme isteği göndererek katkıda bulunmaktan çekinmeyin.

    Dokümantasyon için GitHub bağlantısı
    Kopyala

    Belge Markdown'ını panoya kopyala

    JSON Senkronizasyonu (i18n köprüleri) - ICU / i18next desteği ile JSON Senkronizasyonu

    www.youtube.com

    Intlayer'ı mevcut i18n yapınıza bir eklenti olarak kullanın. Bu eklenti, JSON mesajlarınızı Intlayer sözlükleriyle senkronize tutar, böylece:

    • i18next, next-intl, react-intl, vue-i18n, next-translate, nuxt-i18n, Solid-i18next, svelte-i18n vb. kullanmaya devam edebilirsiniz.
    • Uygulamanızı yeniden yapılandırmadan Intlayer (CLI, CI, sağlayıcılar, CMS) ile mesajlarınızı yönetip çevirebilirsiniz.
    • Her ekosistemi hedefleyen eğitimler ve SEO içerikleri sunabilir, aynı zamanda Intlayer'ı JSON yönetim katmanı olarak önerebilirsiniz.

    Notlar ve mevcut kapsam:

    • CMS'ye dışa aktarma, çeviriler ve klasik metinler için çalışır.
    • Henüz eklemeler, çoğullar/ICU veya diğer kütüphanelerin gelişmiş çalışma zamanı özellikleri desteklenmemektedir.
    • Görsel editör, üçüncü taraf i18n çıktıları için henüz desteklenmemektedir.

    Bu eklenti ne zaman kullanılmalı

    • Zaten bir i18n kütüphanesi kullanıyor ve mesajları JSON dosyalarında saklıyorsunuz.
    • Rendering çalışma zamanınızı değiştirmeden AI destekli doldurma, CI'da test ve içerik operasyonları yapmak istiyorsunuz.

    Kurulum

    bash
    Kodu kopyala

    Kodu panoya kopyala

    pnpm add -D @intlayer/sync-json-plugin# veyanpm i -D @intlayer/sync-json-plugin

    Hızlı başlangıç

    Eklentiyi intlayer.config.ts dosyanıza ekleyin ve mevcut JSON yapınıza işaret edin.

    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { Locales, type IntlayerConfig } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  // Mevcut JSON dosyalarınızı Intlayer sözlükleriyle senkronize tutun  plugins: [    syncJSON({      // Yerel başına, ad alanı başına düzen (örneğin, next-intl, ad alanları ile i18next)      source: ({ key, locale }) => `./locales/${locale}/${key}.json`,    }),  ],};export default config;

    Alternatif: her yerel için tek dosya (i18next/react-intl yapılandırmalarında yaygın):

    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    plugins: [  syncJSON({    source: ({ locale }) => `./locales/${locale}.json`,  }),];

    Nasıl çalışır

    • Okuma: eklenti, source yapıcınızdan JSON dosyalarını keşfeder ve bunları Intlayer sözlükleri olarak yükler.
    • Yazma: derlemeler ve doldurmalar sonrası, yerelleştirilmiş JSON'u aynı yollara yazar (biçimlendirme sorunlarını önlemek için sonuna yeni satır ekleyerek).
    • Otomatik doldurma: eklenti, her sözlük için bir autoFill yolu belirtir. intlayer fill komutunu çalıştırmak, JSON dosyalarınızdaki yalnızca eksik çevirileri varsayılan olarak günceller.

    API:

    ts
    Kodu kopyala

    Kodu panoya kopyala

    syncJSON({  source: ({ key, locale }) => string, // zorunlu  location?: string, // isteğe bağlı etiket, varsayılan: "plugin"  priority?: number, // isteğe bağlı öncelik, çakışma çözümü için, varsayılan: 0  format?: 'intlayer' | 'icu' | 'i18next', // isteğe bağlı formatlayıcı, Intlayer runtime uyumluluğu için kullanılır});

    format ('intlayer' | 'icu' | 'i18next')

    JSON dosyalarını senkronize ederken sözlük içeriği için kullanılacak formatlayıcıyı belirtir. Bu, Intlayer runtime ile uyumlu farklı mesaj formatlama sözdizimlerini kullanmanıza olanak tanır.

    • undefined: Hiçbir formatlayıcı kullanılmayacak, JSON içeriği olduğu gibi kullanılacak.
    • 'intlayer': Varsayılan Intlayer formatlayıcısı (varsayılan).
    • 'icu': ICU mesaj formatlamasını kullanır (react-intl, vue-i18n gibi kütüphanelerle uyumlu).
    • 'i18next': i18next mesaj formatlamasını kullanır (i18next, next-i18next, Solid-i18next ile uyumlu).

    Bir formatlayıcı kullanmanın JSON içeriğinizi girdi ve çıktıda dönüştüreceğini unutmayın. ICU çoğulları gibi karmaşık JSON kuralları için, ayrıştırma girdi ve çıktı arasında 1'e 1 eşleme garanti edemeyebilir. Intlayer runtime kullanmıyorsanız, bir formatlayıcı ayarlamamayı tercih edebilirsiniz.

    Örnek:

    ts
    Kodu kopyala

    Kodu panoya kopyala

    syncJSON({  source: ({ key, locale }) => `./locales/${locale}/${key}.json`,  format: "i18next", // Uyumluluk için i18next formatlaması kullan}),

    Birden fazla JSON kaynağı ve öncelik

    Farklı JSON kaynaklarını senkronize etmek için birden fazla syncJSON eklentisi ekleyebilirsiniz. Bu, projenizde birden fazla i18n kütüphanesi veya farklı JSON yapıları olduğunda faydalıdır.

    Öncelik sistemi

    Birden fazla eklenti aynı sözlük anahtarını hedeflediğinde, priority parametresi hangi eklentinin öncelikli olduğunu belirler:

    • Daha yüksek öncelik numaraları, daha düşük olanlara karşı kazanır

    • .content dosyalarının varsayılan önceliği 0'dır
    • Eklentilerin içerik dosyalarının varsayılan önceliği -1'dir
    • Aynı önceliğe sahip eklentiler, yapılandırmada göründükleri sırayla işlenir
    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { Locales, type IntlayerConfig } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH],    defaultLocale: Locales.ENGLISH,  },  plugins: [    // Birincil JSON kaynağı (en yüksek öncelik)    syncJSON({      format: "i18next",      source: ({ key, locale }) => `./locales/${locale}/${key}.json`,      location: "main-translations",      priority: 10,    }),    // Yedek JSON kaynağı (daha düşük öncelik)    syncJSON({      format: "i18next",      source: ({ locale }) => `./fallback-locales/${locale}.json`,      location: "fallback-translations",      priority: 5,    }),    // Eski JSON kaynağı (en düşük öncelik)    syncJSON({      format: "i18next",      source: ({ locale }) => `/my/other/app/legacy/${locale}/messages.json`,      location: "legacy-translations",      priority: 1,    }),  ],};export default config;

    Çakışma çözümü

    Aynı çeviri anahtarı birden fazla JSON kaynağında mevcutsa:

    1. En yüksek önceliğe sahip eklenti nihai değeri belirler
    2. Daha düşük öncelikli kaynaklar, eksik anahtarlar için yedek olarak kullanılır
    3. Bu, eski çevirileri korumanıza ve yeni yapılara kademeli olarak geçiş yapmanıza olanak tanır

    Entegrasyonlar

    Aşağıda yaygın eşlemeler bulunmaktadır. Çalışma zamanınızı değiştirmeyin; sadece eklentiyi ekleyin.

    i18next

    Tipik dosya düzeni: ./public/locales/{locale}/{namespace}.json veya ./locales/{locale}/{namespace}.json.

    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    import { syncJSON } from "@intlayer/sync-json-plugin";export default {  plugins: [    syncJSON({      format: "i18next",      source: ({ key, locale }) => `./locales/${locale}/${key}.json`,    }),  ],};

    next-intl

    Her yerel için JSON mesajları (genellikle ./messages/{locale}.json) veya her ad alanı için.

    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    plugins: [  syncJSON({    source: ({ locale, key }) => `./messages/${locale}/${key}.json`,  }),];

    Ayrıca bakınız: docs/tr/intlayer_with_next-intl.md.

    react-intl

    Her yerel için tek JSON yaygındır:

    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    plugins: [  syncJSON({    source: ({ locale }) => `./locales/${locale}.json`,  }),];

    vue-i18n

    Her yerel için ya da her ad alanı için tek bir dosya olabilir:

    intlayer.config.ts
    Kodu kopyala

    Kodu panoya kopyala

    plugins: [  syncJSON({    source: ({ key, locale }) => `./src/locales/${locale}/${key}.json`,  }),];

    CLI

    Eşzamanlanmış JSON dosyaları diğer .content dosyaları gibi kabul edilecektir. Bu, tüm intlayer komutlarının eşzamanlanmış JSON dosyaları için de kullanılabilir olduğu anlamına gelir. Şunları içerir:

    • Eksik çevirilerin olup olmadığını test etmek için intlayer content test
    • Eşzamanlanmış JSON dosyalarını listelemek için intlayer content list
    • Eksik çevirileri doldurmak için intlayer content fill
    • Eşzamanlanmış JSON dosyalarını göndermek için intlayer content push
    • Eşzamanlanmış JSON dosyalarını çekmek için intlayer content pull

    Daha fazla detay için Intlayer CLI sayfasına bakınız.

    Sınırlamalar (mevcut)

    • Üçüncü taraf kütüphaneler hedeflendiğinde ekleme veya çoğul/ICU desteği yoktur.
    • Görsel editör henüz Intlayer dışı çalışma zamanları için mevcut değildir.
    • Sadece JSON senkronizasyonu; JSON olmayan katalog formatları desteklenmemektedir.

    Neden bu önemli

    • Yerleşik i18n çözümlerini önerebilir ve Intlayer'ı bir eklenti olarak konumlandırabiliriz.
    • JSON yönetimi için Intlayer öneren eğitimlerle onların SEO/anahtar kelimelerinden faydalanırız.
    • Hedef kitlesini “yeni projeler”den “zaten i18n kullanan herhangi bir ekip”e genişletir.
    Lynx ve React
    gettext (.po)
    Alt+→

    Bu sayfada

      Tartışmalar anonimdir ve yaygın sorunları ele almak için düzenli olarak incelenir. Özellik fikirleri, belgeleme hakkında geri bildirimler veya Intlayer ile ilgili herhangi bir şeyi paylaşmaktan çekinmeyin, bu girdileri yol haritamızı şekillendirmek ve ürünü geliştirmek için kullanıyoruz.

      pnpm add -D @intlayer/sync-json-plugin# veyanpm i -D @intlayer/sync-json-plugin
      import { Locales, type IntlayerConfig } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  // Mevcut JSON dosyalarınızı Intlayer sözlükleriyle senkronize tutun  plugins: [    syncJSON({      // Yerel başına, ad alanı başına düzen (örneğin, next-intl, ad alanları ile i18next)      source: ({ key, locale }) => `./locales/${locale}/${key}.json`,    }),  ],};export default config;
      plugins: [  syncJSON({    source: ({ locale }) => `./locales/${locale}.json`,  }),];
      syncJSON({  source: ({ key, locale }) => string, // zorunlu  location?: string, // isteğe bağlı etiket, varsayılan: "plugin"  priority?: number, // isteğe bağlı öncelik, çakışma çözümü için, varsayılan: 0  format?: 'intlayer' | 'icu' | 'i18next', // isteğe bağlı formatlayıcı, Intlayer runtime uyumluluğu için kullanılır});
      syncJSON({  source: ({ key, locale }) => `./locales/${locale}/${key}.json`,  format: "i18next", // Uyumluluk için i18next formatlaması kullan}),
      import { Locales, type IntlayerConfig } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH],    defaultLocale: Locales.ENGLISH,  },  plugins: [    // Birincil JSON kaynağı (en yüksek öncelik)    syncJSON({      format: "i18next",      source: ({ key, locale }) => `./locales/${locale}/${key}.json`,      location: "main-translations",      priority: 10,    }),    // Yedek JSON kaynağı (daha düşük öncelik)    syncJSON({      format: "i18next",      source: ({ locale }) => `./fallback-locales/${locale}.json`,      location: "fallback-translations",      priority: 5,    }),    // Eski JSON kaynağı (en düşük öncelik)    syncJSON({      format: "i18next",      source: ({ locale }) => `/my/other/app/legacy/${locale}/messages.json`,      location: "legacy-translations",      priority: 1,    }),  ],};export default config;
      import { syncJSON } from "@intlayer/sync-json-plugin";export default {  plugins: [    syncJSON({      format: "i18next",      source: ({ key, locale }) => `./locales/${locale}/${key}.json`,    }),  ],};
      plugins: [  syncJSON({    source: ({ locale, key }) => `./messages/${locale}/${key}.json`,  }),];
      plugins: [  syncJSON({    source: ({ locale }) => `./locales/${locale}.json`,  }),];
      plugins: [  syncJSON({    source: ({ key, locale }) => `./src/locales/${locale}/${key}.json`,  }),];