Blog içeriği
June 3, 2026

DeepL API ile Shopify Mağazanızı Uygulama Olmadan Başka Bir Dile Çevirin

Shopify mağazanızı DeepL API ve Shopify Translations API kullanarak uygulama satın almadan başka bir dile çevirin. GraphQL entegrasyonu, hreflang kurulumu ve maliyet karşılaştırması.

Shopify Translations API, mağazanızdaki her içeriği (ürün başlıkları, açıklamalar, koleksiyon sayfaları, blog yazıları) doğrudan GraphQL üzerinden okuyup yazmanıza izin verir. DeepL API ise bu içerikleri profesyonel kalitede makine çevirisiyle dönüştürür. İki API'yi birleştirdiğinizde Weglot veya Langify'a aylık $15-99 ödemeden aynı sonucu alır, çeviri üzerinde tam kontrolü elinizde tutarsınız

Bu rehber, Shopify mağazanızı DeepL ile başka bir dile çevirmek için gereken teknik adımları, GraphQL sorgularını ve otomasyon akışını kapsar. Herhangi bir uygulama yüklemeniz gerekmez.

Shopify Translations API Nedir ve DeepL ile Nasıl Çalışır?

Shopify Translations API, Admin GraphQL API'nin bir parçasıdır ve mağazanızdaki her "çevrilebilir kaynak" için çeviri kaydetmenizi, okumanızı ve silmenizi sağlar. DeepL API bu noktada bir ara katman görevi görür: Shopify'dan ham içeriği alır, DeepL'e gönderir, dönen çeviriyi Shopify'a geri yazar.

Shopify, çevrilebilir kaynak olarak şu tipleri tanımlar: PRODUCT, PRODUCT_VARIANT, COLLECTION, BLOG, ARTICLE, PAGE, SHOP, THEME, METAFIELD, LINK, FILTER. Her kaynak için çevrilecek alanlar önceden belirlidir. Örneğin bir ürün için title, body_html, handle, meta_title, meta_description alanları çevrilebilirdir.

DeepL ise /v2/translate endpoint'i üzerinden çalışır. İstek gövdesinde kaynak dili, hedef dili ve çevrilecek metni gönderirsiniz; JSON yanıtında çevrilmiş metin döner. HTML içerikleri için tag_handling=html parametresini eklemek zorunludur; aksi takdirde <p>, <strong>, <br> gibi etiketler de çevirilmeye çalışılır ve bozulur.

Başlamadan Önce: Gereksinimler ve Ön Hazırlık

Bu entegrasyonu kurabilmek için dört şeye ihtiyacınız var: Shopify Custom App, doğru API izinleri, DeepL hesabı ve Shopify Markets'ta hedef dil için aktif bir locale. Shopify'ın temel yapısına yeniyseniz önce Shopify Nedir içeriğimizi okumanızı öneririz.

1. Shopify Custom App Oluşturma

Shopify Admin'den Settings > Apps and sales channels > Develop apps yolunu izleyin. Yeni bir uygulama oluşturun. Admin API Configuration bölümünde şu scope'ları açın:

  • read_translations
  • write_translations
  • read_products (ürün içeriklerini çekmek için)
  • read_content (sayfa ve blog içerikleri için)

Uygulamayı yükleyin ve Admin API access token'ı kopyalayın. Bu token tüm API çağrılarında X-Shopify-Access-Token header'ı olarak kullanılacak.

2. DeepL API Key

DeepL API sayfasından ücretsiz hesap açın. Ücretsiz plan ayda 500.000 karaktere kadar çeviri yapmanıza izin verir. Orta ölçekli bir Shopify mağazası için bu limit genellikle tek seferlik tam çeviriyi karşılar; sonraki aylarda yalnızca yeni eklenen içerikler çevrildiğinden tüketim düşer. Hesap panelinden API key'inizi alın.

3. Shopify Markets'ta Locale Aktivasyonu

Shopify Admin'den Settings > Markets bölümüne gidin. Hedef dilinizi (örneğin Almanca için de) ilgili market'e ekleyin. Locale eklenmeden translationsRegister mutation'ı hata döner.

Kritik Not: Shopify, aynı anda en fazla 20 locale destekler. Temel plandaki mağazalar ek dil için Shopify Markets'ın ücretli özelliğini aktifleştirmek zorunda kalabilir. Shopify Plus müşterileri bu kısıtla karşılaşmaz.

Adım Adım Uygulama: DeepL + Shopify Çeviri Akışı

Entegrasyon dört aşamada tamamlanır: içerikleri Shopify'dan çekme, DeepL'e gönderme, çevirileri Shopify'a yazma ve webhook ile otomatik tetikleme.

1. Çevrilecek İçerikleri Shopify'dan Çekme

translatableResources query'si belirli bir kaynak tipindeki tüm çevrilebilir alanları döndürür. Aşağıdaki GraphQL sorgusu mağazanızdaki tüm ürünlerin çevrilebilir içeriklerini ve mevcut çevirilerini getirir:

query GetTranslatableProducts($after: String) {
  translatableResources(resourceType: PRODUCT, first: 50, after: $after) {
    edges {
      node {
        resourceId
        translatableContent {
          key
          value
          digest
          locale
        }
        translations(locale: "de") {
          key
          value
          outdatedAt
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

digest alanı kritik önem taşır. Her içerik bloğunun hash'ini temsil eder. translationsRegister mutation'ında bu değeri göndermek zorundasınız; Shopify böylece hangi orijinal içeriğin çevrildiğini doğrular. digest olmadan mutation hata döner.

pageInfo.hasNextPage true döndükçe after parametresine endCursor değerini vererek döngüyü sürdürün. 100'den fazla ürünü olan mağazalarda pagination zorunludur.

2. DeepL API'ye İçerik Gönderme

Shopify'dan gelen içerikleri DeepL'e göndermek için HTTP POST isteği kullanılır:

POST https://api-free.deepl.com/v2/translate
Authorization: DeepL-Auth-Key {API_KEY}
Content-Type: application/json

{
  "text": ["Ürün başlığı", "<p>Ürün açıklaması <strong>kalın metin</strong></p>"],
  "source_lang": "TR",
  "target_lang": "DE",
  "tag_handling": "html"
}

Birden fazla metni tek istekte göndermek, hem API kotanızı hem de yanıt süresini optimize eder. DeepL, bir istekte en fazla 50 metin bloğu kabul eder.

Şunu göz önünde bulundurun: body_html alanı içinde Shopify'a özgü {{ variable }} Liquid ifadeleri varsa, bu ifadeleri çeviriye göndermeden önce placeholder ile değiştirin ve çeviri döndükten sonra geri yerleştirin. Aksi takdirde DeepL bu ifadeleri de çevirir ve Liquid bozulur.

3. Çevirileri Shopify'a Kaydetme

translationsRegister mutation'ı, DeepL'den dönen çevirileri Shopify'a yazar:

mutation RegisterTranslations($resourceId: ID!, $translations: [TranslationInput!]!) {
  translationsRegister(resourceId: $resourceId, translations: $translations) {
    userErrors {
      field
      message
    }
    translations {
      key
      value
      locale
    }
  }
}

Variables:

{
  "resourceId": "gid://shopify/Product/1234567890",
  "translations": [
    {
      "key": "title",
      "value": "Produkttitel auf Deutsch",
      "locale": "de",
      "translatableContentDigest": "abc123..."
    },
    {
      "key": "body_html",
      "value": "<p>Produktbeschreibung auf Deutsch</p>",
      "locale": "de",
      "translatableContentDigest": "def456..."
    }
  ]
}

userErrors alanını kontrol edin. BLANK_TRANSLATION_VALUE hatası alıyorsanız boş string göndermek yerine o alanı translations dizisinden çıkarın. INVALID_DIGEST hatası translatableContentDigest'in yanlış olduğunu gösterir; query'i tekrar çalıştırıp güncel digest'i alın.

4. Webhook ile Otomatik Çeviri Akışı

Manuel çeviri yerine yeni ürün eklendiğinde otomatik tetikleme kurabilirsiniz. Shopify'da products/create webhook'unu kendi sunucunuzdaki bir endpoint'e yönlendirin:

POST https://your-server.com/webhooks/product-created

Endpoint şu akışı işler:

  1. Webhook payload'ından product.id'yi al
  2. translatableResources query'siyle ürünün çevrilebilir içeriklerini çek
  3. DeepL API'ye gönder
  4. translationsRegister ile Shopify'a yaz
  5. İşlemi logla

Shopify webhook'larını doğrulamayı unutmayın. Her webhook isteğinin header'ında X-Shopify-Hmac-Sha256 değeri gelir; bu değeri kendi secret key'inizle HMAC-SHA256 ile hesaplayıp karşılaştırmazsanız sahte isteklere açık kalırsınız.

İpucu: Çeviri işlemi asenkron çalıştırılmalı. Webhook yanıtı 5 saniyeden uzun sürerse Shopify yeniden deneme başlatır ve aynı ürün birden fazla kez çevrilir. Webhook gelir gelmez 200 OK döndürün, asıl işi bir job queue'ya (örneğin Redis + Bull veya AWS SQS) bırakın.

Uygulama vs. API: Weglot, Langify ve DeepL Karşılaştırması

Piyasadaki Shopify çeviri uygulamaları işi tek tıkla yapıyor gibi görünse de ölçeklendikçe maliyet ve kontrol sorunları ortaya çıkar.

Çözüm Aylık Maliyet Çeviri Kalitesi Özelleştirme Dil Limiti Teknik Gereksinim
Weglot $15 - $99 DeepL + Google Karışımı Sınırlı Plana göre 1 - 10 dil Sıfır (Kod gerektirmez)
Langify $17.50 Google Translate Orta Sınırsız Düşük
Transcy $0 - $49 Google Translate Orta Plana göre 1 - 117 dil Düşük
DeepL API (Ücretsiz) $0 DeepL (En yüksek) Tam Sınırsız Yüksek (Geliştirici desteği)
DeepL API (Pro) ~$25 (5M karakter için) DeepL (En yüksek) Tam Sınırsız Yüksek (Geliştirici desteği)

Weglot'un fiyatlandırması kelime sayısına değil, sayfa görüntülemesine göre ölçeklenir. Aylık 200.000 sayfa görüntülemesi olan bir mağaza için Business planı yılda $2.388 tutar. Aynı mağazada DeepL Pro + tek seferlik geliştirme maliyeti ilk yılda genellikle daha düşük, ikinci yıldan itibaren belirgin olarak avantajlıdır.

Kriter Uygulama (Weglot/Langify) DeepL API Entegrasyonu
Kurulum süresi 30 dakika 1-3 gün (geliştirme dahil)
Maliyet (yıllık, orta ölçek) $180 - $1.200 $0 - $300
Çeviri sonrası düzenleme Uygulama arayüzünde Doğrudan Shopify Admin panelinde
Tema koduna müdahale Evet (JavaScript enjeksiyonu) Hayır
Sayfa hızına etkisi Negatif (Ek JS yükü) Nötr
Vendor (Sağlayıcı) bağımlılığı Uygulama kapatılırsa veya silinirse çeviriler kaybolur Shopify native (yerel) altyapısında saklanır, kayıt kalıcıdır

Weglot ve Langify gibi uygulamalar tema koduna JavaScript enjekte ederek çalışır. Bu yöntem Core Web Vitals metriklerini, özellikle LCP ve TBT'yi olumsuz etkiler. DeepL API entegrasyonu ise çevirileri Shopify'ın kendi veri tabanına yazar; tema koduna dokunulmaz.

Hreflang ve Çok Dilli SEO: Shopify'ın Otomatik Yaptıkları ve Eksik Kaldıkları

Shopify, aktif locale'lar için <link rel="alternate" hreflang="..."> etiketlerini otomatik olarak <head> bölümüne ekler. Mağazanızda de locale aktifse Almanca ürün sayfaları https://sizinmagazaniz.com/de/products/urun-adi URL'inde yayınlanır ve Türkçe sayfada hreflang="de" etiketi otomatik görünür.

Shopify'ın Otomatik Eklediği Hreflang Tag'leri

Subdirectory yapısı (/de/, /fr/) Shopify'ın varsayılan davranışıdır ve Google'ın önerdiği yapıdır. Subdomain (de.example.com) veya ayrı domain (example.de) için harici bir DNS yapılandırması ve Shopify Markets'ta özel domain ataması gerekir.

Meta Title ve Description Çevirisi

Shopify Translations API, meta_title ve meta_description alanlarını da destekler. Bu alanları çevirmezseniz Almanca sayfada Türkçe meta etiketler görünür; Google bu durumda sayfayı hedef dilde yanlış kategorize eder.

translatableContent listesinde bu alanlar key: "meta_title" ve key: "meta_description" olarak gelir. Ürün çevirisiyle aynı translationsRegister mutation'ına dahil edin.

Handle Çevirisi ve SEO Uyarısı

Ürün handle'larını (URL slug) çevirmek mümkündür fakat dikkatli olunmalıdır. Handle değiştirilirse eski URL 404 döner. Shopify otomatik redirect oluşturmaz. Handle'ları değiştirmek yerine orijinal bırakmak, SEO açısından daha güvenlidir. Hedef dilde anlamlı URL istiyorsanız, redirect oluşturmayı ayrı bir adım olarak planlayın.

Shopify SEO konusundaki kapsamlı teknik rehber için Shopify SEO Optimizasyonu içeriğimizi inceleyin.

Nodus Works Sahasından 3 Kritik Gözlem

Gözlem 1: body_html alanındaki Liquid ifadeleri entegrasyonları çökertir

Shopify tema geliştiricileri zaman zaman ürün açıklamalarına {% if %} blokları veya {{ metafield }} ifadeleri gömer. Bu içerik doğrudan DeepL'e gönderildiğinde iki sonuç çıkar: ya Liquid ifadesi çevrilip bozulur, ya da DeepL ifadeyi görmezden gelip etrafındaki metni çevirir ve kayıt hatasız görünür. Ancak Shopify bu çeviriyi render ettiğinde Liquid bozuk işlendiği için sayfa boş veya hatalı görünür. Gönderim öncesinde {{ }} ve {% %} blokları için regex ile placeholder sistemi kurun.

Gözlem 2: 500 ürünlü bir mağazanın tam çevirisi ücretsiz limiti aşmaz

500 ürünlü tipik bir Türk e-ticaret mağazasında ortalama başlık 60 karakter, açıklama 800 karakter, meta alanlar 200 karakter olarak ölçtük. Ürün başına ortalama 1.060 karakter, toplam 530.000 karakter tutulur. Bu rakam DeepL'in aylık 500.000 karakterlik ücretsiz limitini çok az aşar. Koleksiyon, sayfa ve blog içerikleri hariç tutulduğunda büyük bölümü ücretsiz limite sığar. Sayfalar ve blog içerikleri dahil edildiğinde Pro plan gerekebilir.

Gözlem 3: Uygulama kullanıcılarının yüzde kırkı çevirilerin "kaybolduğunu" düşünür; aslında locale silinmiştir

Weglot veya Langify kullanan mağazalarda sık karşılaştığımız senaryo: geliştirici bir temayı güncellerken veya Shopify arka ofisinden bir ayarı değiştirirken kasıtsız olarak locale'ı Markets'tan kaldırır. Uygulama çevirileri kendi veri tabanında tutar ama Shopify artık o locale'ı göstermez. Kullanıcı panikler, destek bileti açar. DeepL API entegrasyonunda çeviriler Shopify'ın kendi translations sisteminde tutulur; locale silinip yeniden eklendiğinde içerikler geri gelir.

SSS

Shopify'da DeepL API kullanmak için yazılım bilmek şart mı?

Temel JavaScript veya Python bilgisi yeterlidir. Shopify GraphQL API'si standart HTTP istekleri üzerinden çalışır, özel bir SDK gerektirmez. Ancak webhook tabanlı otomasyon için bir sunucu (Node.js, Python Flask/FastAPI veya serverless bir fonksiyon) kurabilmeniz gerekir. Teknik altyapı kurmak istemiyorsanız bu entegrasyonu sizin için kurabilecek bir Shopify ajansıyla çalışmak, uzun vadede uygulama maliyetinden daha ekonomiktir.

Shopify Translations API ücretsiz mi?

Evet, Shopify Translations API tüm planlarda ücretsizdir. DeepL API'nin ücretsiz katmanı ayda 500.000 karaktere kadar çeviriyi karşılar. Ücret ödemeniz gereken tek durum DeepL'in ücretsiz limitini aşmaktır; bu durumda DeepL Pro planı aylık yaklaşık 25 dolardan başlar.

translationsRegister mutation'ı kaç dili destekler?

Shopify, Translations API üzerinden 20'ye kadar locale destekler. Desteklenen dillerin tam listesi Shopify'ın supportedLocales query'siyle çekilebilir. Türkçe (tr), Almanca (de), İngilizce (en), Arapça (ar), Fransızca (fr) dahil 60'ın üzerinde dil mevcuttur.

Çeviriler Shopify Admin'den manuel düzenlenebilir mi?

Evet. translationsRegister ile kaydedilen çeviriler, Shopify Admin'de Settings > Languages altında görünür ve oradan düzenlenebilir. Bu, DeepL'in otomatik çevirilerini manuel olarak iyileştirmek için kullanılabilir. Yapılan düzenleme sonraki webhook tetiklemesinde silinmez; ancak ürün güncellendiğinde digest değişeceğinden API yeniden yazma yaparsa düzenlemeniz üzerine yazılır. Bunu önlemek için webhook akışına "zaten çevrilmiş ve düzenlenmiş mi?" kontrolü ekleyin.

DeepL API Türkçeyi destekliyor mu?

Evet. DeepL, Türkçeyi 2022'den itibaren hem kaynak hem hedef dil olarak destekler. Türkçeden İngilizceye ve Almancaya çeviri kalitesi, Google Translate'e kıyasla özellikle e-ticaret metinlerinde ölçülebilir olarak daha yüksektir. DeepL'in 2023 kalite karşılaştırma raporu, Türkçe dil çiftlerinde %85 kullanıcı tercih oranını belgeliyor.

Shopify Markets olmadan bu entegrasyon çalışır mı?

Hayır. translationsRegister mutation'ının locale parametresi, Shopify Markets'ta aktif bir locale'a karşılık gelmelidir. Locale aktifleştirilmeden yapılan kayıt LOCALE_NOT_ENABLED hatası döndürür. Shopify Markets'ı açmak için Admin'den Settings > Markets > Add market yolunu izleyin.

Shopify mağazasını DeepL ile çevirmek ne kadar sürer?

500 ürünlük bir mağaza için başlangıç kurulumu 1-3 gün sürer: Custom App oluşturma, API entegrasyonunu yazma ve test etme dahil. Çeviri işleminin kendisi DeepL'in hızına göre değişir; 500 ürün için toplu çekim ve yazma işlemi genellikle 10-30 dakika içinde tamamlanır. Webhook tabanlı otomasyon kurulduktan sonra her yeni ürün eklenmesinde çeviri 1-2 dakika içinde otomatik gerçekleşir.

Shopify'da çeviri uygulaması yerine API kullanmak daha mı iyi?

Teknik altyapınız varsa ve 2 yıldan fazla süreyle çok dilli mağaza işletecekseniz API yolu daha avantajlıdır. Uygulama kullanmak kurulum süresini minimuma indirir ama ölçeklendikçe maliyet artar, sayfa hızına JavaScript yükü eklenir ve vendor bağımlılığı oluşur. Tek seferlik kurulum sonrası maliyet neredeyse sıfıra yaklaşır; bu yatırımı 6 ay içinde geri döner.

Shopify Translations API ile hangi içerikler çevrilebilir?

Ürün başlıkları, açıklamalar, koleksiyon sayfaları, blog yazıları, statik sayfalar, navigasyon linkleri, ürün varyant seçenekleri, metafieldler ve tema metin dizeleri çevrilebilir. Ürün görselleri, fiyatlar ve stok bilgileri çevri kapsamı dışındadır.

Sonuç

Shopify Translations API ile DeepL API'yi birleştirmek, mağazanıza tam kontrollü, düşük maliyetli ve performansa zarar vermeyen bir çeviri altyapısı kurar. Weglot veya Langify gibi uygulamaların aylık sabit maliyeti yerine yalnızca gerçekten harcadığınız karakter başına ödeme yaparsınız; çeviriler Shopify'ın kendi sisteminde yerel olarak saklanır.

Kritik teknik nokta: translatableContentDigest'i doğru yönetin, body_html içindeki Liquid ifadelerini placeholder ile koruyun ve webhook yanıtını asenkron yapılandırın.

Shopify mağazanızda bu entegrasyonu kurmak veya mevcut çeviri altyapınızı yeniden yapılandırmak için Shopify Entegrasyon Çözümleri sayfamızı inceleyin ya da doğrudan bizimle iletişime geçin.

Kargo ve ödeme entegrasyonlarını da aynı anda yapılandırmak isteyenler için Shopify ERP Entegrasyonu rehberimiz ilgili teknik altyapıyı kapsamaktadır.