Explorar el Código

feat: Add support for i18n Turkish language (tr-TR) (#6886)

Co-authored-by: hursit <hursit.topal@enuygun.com>
hursit hace 11 meses
padre
commit
104c797dd0

+ 1 - 0
README.md

@@ -37,6 +37,7 @@
   <a href="./README_KL.md"><img alt="README tlhIngan Hol" src="https://img.shields.io/badge/Klingon-d9d9d9"></a>
   <a href="./README_KR.md"><img alt="README in Korean" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
   <a href="./README_AR.md"><img alt="README بالعربية" src="https://img.shields.io/badge/العربية-d9d9d9"></a>
+  <a href="./README_TR.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
 </p>
 
 

+ 1 - 0
README_AR.md

@@ -37,6 +37,7 @@
   <a href="./README_KL.md"><img alt="README tlhIngan Hol" src="https://img.shields.io/badge/Klingon-d9d9d9"></a>
   <a href="./README_KR.md"><img alt="README in Korean" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
   <a href="./README_AR.md"><img alt="README بالعربية" src="https://img.shields.io/badge/العربية-d9d9d9"></a>
+  <a href="./README_TR.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
 </p>
 
 <div style="text-align: right;">

+ 1 - 0
README_CN.md

@@ -36,6 +36,7 @@
   <a href="./README_KL.md"><img alt="上个月的提交次数" src="https://img.shields.io/badge/法语-d9d9d9"></a>
   <a href="./README_FR.md"><img alt="上个月的提交次数" src="https://img.shields.io/badge/克林贡语-d9d9d9"></a>
   <a href="./README_KR.md"><img alt="上个月的提交次数" src="https://img.shields.io/badge/韓國語-d9d9d9"></a>
+  <a href="./README_TR.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
 </div>
 
 

+ 1 - 0
README_ES.md

@@ -36,6 +36,7 @@
   <a href="./README_KL.md"><img alt="Actividad de Commits el último mes" src="https://img.shields.io/badge/Français-d9d9d9"></a>
   <a href="./README_FR.md"><img alt="Actividad de Commits el último mes" src="https://img.shields.io/badge/Klingon-d9d9d9"></a>
   <a href="./README_KR.md"><img alt="Actividad de Commits el último mes" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
+  <a href="./README_TR.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
 </p>
 
 #

+ 1 - 0
README_FR.md

@@ -36,6 +36,7 @@
   <a href="./README_KL.md"><img alt="Commits le mois dernier" src="https://img.shields.io/badge/Français-d9d9d9"></a>
   <a href="./README_FR.md"><img alt="Commits le mois dernier" src="https://img.shields.io/badge/Klingon-d9d9d9"></a>
   <a href="./README_KR.md"><img alt="Commits le mois dernier" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
+  <a href="./README_TR.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
 </p>
 
 #

+ 1 - 0
README_JA.md

@@ -36,6 +36,7 @@
   <a href="./README_KL.md"><img alt="先月のコミット" src="https://img.shields.io/badge/Français-d9d9d9"></a>
   <a href="./README_FR.md"><img alt="先月のコミット" src="https://img.shields.io/badge/Klingon-d9d9d9"></a>
   <a href="./README_KR.md"><img alt="先月のコミット" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
+  <a href="./README_TR.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
 </p>
 
 #

+ 1 - 0
README_KL.md

@@ -36,6 +36,7 @@
   <a href="./README_KL.md"><img alt="Commits last month" src="https://img.shields.io/badge/Français-d9d9d9"></a>
   <a href="./README_FR.md"><img alt="Commits last month" src="https://img.shields.io/badge/Klingon-d9d9d9"></a>
   <a href="./README_KR.md"><img alt="Commits last month" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
+  <a href="./README_TR.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
 </p>
 
 #

+ 1 - 0
README_KR.md

@@ -36,6 +36,7 @@
   <a href="./README_FR.md"><img alt="README en Français" src="https://img.shields.io/badge/Français-d9d9d9"></a>
   <a href="./README_KL.md"><img alt="README tlhIngan Hol" src="https://img.shields.io/badge/Klingon-d9d9d9"></a>
   <a href="./README_KR.md"><img alt="한국어 README" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
+  <a href="./README_TR.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
 
 </p>
 

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 253 - 0
README_TR.md


+ 1 - 0
api/constants/languages.py

@@ -15,6 +15,7 @@ language_timezone_mapping = {
     'ro-RO': 'Europe/Bucharest',
     'pl-PL': 'Europe/Warsaw',
     'hi-IN': 'Asia/Kolkata',
+    'tr-TR': 'Europe/Istanbul',
 }
 
 languages = list(language_timezone_mapping.keys())

+ 2 - 0
web/i18n/language.ts

@@ -74,6 +74,8 @@ export const NOTICE_I18N = {
       'Наша система буде недоступна з 19:00 до 24:00 UTC 28 серпня для оновлення. Якщо у вас виникнуть запитання, будь ласка, зв’яжіться з нашою службою підтримки (support@dify.ai). Дякуємо за терпіння.',
     vi_VN:
       'Hệ thống của chúng tôi sẽ ngừng hoạt động từ 19:00 đến 24:00 UTC vào ngày 28 tháng 8 để nâng cấp. Nếu có thắc mắc, vui lòng liên hệ với nhóm hỗ trợ của chúng tôi (support@dify.ai). Chúng tôi đánh giá cao sự kiên nhẫn của bạn.',
+    tr_TR:
+      'Sistemimiz, 28 Ağustos\'ta 19:00 ile 24:00 UTC saatleri arasında güncelleme nedeniyle kullanılamayacaktır. Sorularınız için lütfen destek ekibimizle iletişime geçin (support@dify.ai). Sabrınız için teşekkür ederiz.',
   },
   href: '#',
 }

+ 7 - 0
web/i18n/languages.json

@@ -125,6 +125,13 @@
       "prompt_name": "Hindi",
       "example": "नमस्ते, Dify!",
       "supported": "true"
+    },
+    {
+      "value": "tr-TR",
+      "name": "Türkçe",
+      "prompt_name": "Türkçe",
+      "example": "Selam!",
+      "supported": "true"
     }
   ]
 }

+ 87 - 0
web/i18n/tr-TR/app-annotation.ts

@@ -0,0 +1,87 @@
+const translation = {
+  title: 'Ek Açıklamalar',
+  name: 'Ek Açıklama Yanıtı',
+  editBy: '{{author}} tarafından düzenlendi',
+  noData: {
+    title: 'Ek açıklama yok',
+    description: 'Uygulama hata ayıklaması sırasında ek açıklamaları düzenleyebilir veya yüksek kaliteli bir yanıt için burada toplu olarak ek açıklamaları içe aktarabilirsiniz.',
+  },
+  table: {
+    header: {
+      question: 'soru',
+      answer: 'cevap',
+      createdAt: 'oluşturulma tarihi',
+      hits: 'vuruşlar',
+      actions: 'aksiyonlar',
+      addAnnotation: 'Ek Açıklama Ekle',
+      bulkImport: 'Toplu İçe Aktarma',
+      bulkExport: 'Toplu Dışa Aktarma',
+      clearAll: 'Tüm Ek Açıklamaları Temizle',
+    },
+  },
+  editModal: {
+    title: 'Ek Açıklama Yanıtını Düzenle',
+    queryName: 'Kullanıcı Sorgusu',
+    answerName: 'Storyteller Bot',
+    yourAnswer: 'Senin Cevabın',
+    answerPlaceholder: 'Cevabınızı buraya yazın',
+    yourQuery: 'Senin Sorgun',
+    queryPlaceholder: 'Sorgunuzu buraya yazın',
+    removeThisCache: 'Bu Ek Açıklamayı Kaldır',
+    createdAt: 'Oluşturulma Tarihi',
+  },
+  addModal: {
+    title: 'Ek Açıklama Yantı Ekle',
+    queryName: 'Soru',
+    answerName: 'Cevap',
+    answerPlaceholder: 'Cevabı buraya yazın',
+    queryPlaceholder: 'Sorguyu buraya yazın',
+    createNext: 'Başka bir ek açıklamalı yanıt ekle',
+  },
+  batchModal: {
+    title: 'Toplu İçe Aktarma',
+    csvUploadTitle: 'CSV dosyanızı buraya sürükleyip bırakın veya ',
+    browse: 'gözatın',
+    tip: 'CSV dosyası aşağıdaki yapıya uygun olmalıdır:',
+    question: 'soru',
+    answer: 'cevap',
+    contentTitle: 'içerik parçası',
+    content: 'içerik',
+    template: 'Şablonu buradan indir',
+    cancel: 'İptal',
+    run: 'Toplu İşlemi Çalıştır',
+    runError: 'Toplu işlem başarısız oldu',
+    processing: 'Toplu işlemde',
+    completed: 'İçe aktarma tamamlandı',
+    error: 'İçe Aktarma Hatası',
+    ok: 'Tamam',
+  },
+  errorMessage: {
+    answerRequired: 'Cevap gerekli',
+    queryRequired: 'Soru gerekli',
+  },
+  viewModal: {
+    annotatedResponse: 'Ek Açıklama Yanıtı',
+    hitHistory: 'Vuruş Geçmişi',
+    hit: 'Vuruş',
+    hits: 'Vuruşlar',
+    noHitHistory: 'Vuruş geçmişi yok',
+  },
+  hitHistoryTable: {
+    query: 'Sorgu',
+    match: 'Eşleşme',
+    response: 'Yanıt',
+    source: 'Kaynak',
+    score: 'Puan',
+    time: 'Zaman',
+  },
+  initSetup: {
+    title: 'Ek Açıklama Yanıtı İlk Kurulum',
+    configTitle: 'Ek Açıklama Yanıtı Ayarı',
+    confirmBtn: 'Kaydet ve Etkinleştir',
+    configConfirmBtn: 'Kaydet',
+  },
+  embeddingModelSwitchTip: 'Ek açıklama metin vektörleştirme modeli, model değiştirmek yeniden yerleştirilecek ve ek maliyetlere yol açacaktır.',
+}
+
+export default translation

+ 83 - 0
web/i18n/tr-TR/app-api.ts

@@ -0,0 +1,83 @@
+const translation = {
+  apiServer: 'API Sunucusu',
+  apiKey: 'API Anahtarı',
+  status: 'Durum',
+  disabled: 'Devre Dışı',
+  ok: 'Hizmette',
+  copy: 'Kopyala',
+  copied: 'Kopyalandı',
+  play: 'Oynat',
+  pause: 'Duraklat',
+  playing: 'Oynatılıyor',
+  loading: 'Yükleniyor',
+  merMaind: {
+    rerender: 'Yeniden İşleme',
+  },
+  never: 'Asla',
+  apiKeyModal: {
+    apiSecretKey: 'API Gizli Anahtar',
+    apiSecretKeyTips: 'API suiistimalini önlemek için, API Anahtarınızı koruyunuz. Ön uç kodda düz metin olarak kullanmaktan kaçının. :)',
+    createNewSecretKey: 'Yeni Gizli Anahtar Oluştur',
+    secretKey: 'Gizli Anahtar',
+    created: 'OLUŞTURULDU',
+    lastUsed: 'SON KULLANIM',
+    generateTips: 'Bu anahtarı güvenli ve erişilebilir bir yerde saklayın.',
+  },
+  actionMsg: {
+    deleteConfirmTitle: 'Bu gizli anahtarı silmek istiyor musunuz?',
+    deleteConfirmTips: 'Bu işlem geri alınamaz.',
+    ok: 'Tamam',
+  },
+  completionMode: {
+    title: 'Completion Uygulama API',
+    info: 'Makale, özet ve çeviri gibi yüksek kaliteli metin üretimi için, completion-messages API\'sini kullanıcı girişi ile birlikte kullanın. Metin üretimi, Dify Prompt Engineering\'de ayarlanan model parametrelerine ve prompt şablonlarına dayanır.',
+    createCompletionApi: 'Completion Mesajı Oluştur',
+    createCompletionApiTip: 'Soru-cevap modunu desteklemek için bir Completion Mesajı oluşturun.',
+    inputsTips: '(İsteğe bağlı) Prompt Eng\'deki değişkenlere karşılık gelen kullanıcı giriş alanlarını anahtar-değer çiftleri olarak sağlayın. Anahtar, değişken adıdır, Değer ise parametre değeridir. Alan türü Select ise, gönderilen Değer önceden ayarlanmış seçeneklerden biri olmalıdır.',
+    queryTips: 'Kullanıcı giriş metni içeriği.',
+    blocking: 'Bloke etme tipi, yürütmenin tamamlanmasını bekleyip sonuçları döndürme. (Süreç uzun sürerse istekler kesilebilir)',
+    streaming: 'Streaming döndürmeleri. SSE (Sunucu Tarafından Gönderilen Etkinlikler) tabanlı streaming döndürme uygulaması.',
+    messageFeedbackApi: 'Mesaj geri bildirimi (beğeni)',
+    messageFeedbackApiTip: 'Son kullanıcılar adına beğeni veya beğenmeme ile alınan mesajları değerlendirin. Bu veriler, Günlükler ve Ek Açıklamalar sayfasında görünür ve gelecekteki model ince ayarları için kullanılır.',
+    messageIDTip: 'Mesaj Kimliği',
+    ratingTip: 'beğeni veya beğenmeme, null geri almaktır',
+    parametersApi: 'Uygulama parametre bilgilerini al',
+    parametersApiTip: 'Değişken adları, alan adları, türleri ve varsayılan değerler dahil olmak üzere yapılandırılmış Giriş parametrelerini alın. Genellikle bu alanları bir formda görüntülemek veya istemci yüklendikten sonra varsayılan değerleri doldurmak için kullanılır.',
+  },
+  chatMode: {
+    title: 'Chat Uygulama API',
+    info: 'Soru-Cevap formatını kullanan çok yönlü sohbet uygulamaları için, diyalogu başlatmak üzere chat-messages API\'sini çağırın. conversation_id\'yi ileterek devam eden konuşmaları sürdürün. Yanıt parametreleri ve şablonları, Dify Prompt Engineering ayarlarına bağlıdır.',
+    createChatApi: 'Sohbet mesajı oluştur',
+    createChatApiTip: 'Yeni bir konuşma mesajı oluşturun veya mevcut diyaloğu devam ettirin.',
+    inputsTips: '(İsteğe bağlı) Prompt Eng\'deki değişkenlere karşılık gelen kullanıcı giriş alanlarını anahtar-değer çiftleri olarak sağlayın. Anahtar, değişken adıdır, Değer ise parametre değeridir. Alan türü Select ise, gönderilen Değer önceden ayarlanmış seçeneklerden biri olmalıdır.',
+    queryTips: 'Kullanıcı girişi/soru içeriği',
+    blocking: 'Bloke etme tipi, yürütmenin tamamlanmasını bekleyip sonuçları döndürme. (Süreç uzun sürerse istekler kesilebilir)',
+    streaming: 'Streaming döndürmeleri. SSE (Sunucu Tarafından Gönderilen Etkinlikler) tabanlı streaming döndürme uygulaması.',
+    conversationIdTip: '(İsteğe bağlı) Konuşma ID: ilk konuşma için boş bırakın; diyaloğu devam ettirmek için context\'ten conversation_id\'yi iletin.',
+    messageFeedbackApi: 'Mesaj son kullanıcı geri bildirimi, beğeni',
+    messageFeedbackApiTip: 'Son kullanıcılar adına beğeni veya beğenmeme ile alınan mesajları değerlendirin. Bu veriler, Günlükler ve Ek Açıklamalar sayfasında görünür ve gelecekteki model ince ayarları için kullanılır.',
+    messageIDTip: 'Mesaj Kimliği',
+    ratingTip: 'beğeni veya beğenmeme, null geri almaktır',
+    chatMsgHistoryApi: 'Sohbet geçmişi mesajı al',
+    chatMsgHistoryApiTip: 'İlk sayfa en son `limit` barını döndürür ve bu ters sıradadır.',
+    chatMsgHistoryConversationIdTip: 'Konuşma ID',
+    chatMsgHistoryFirstId: 'Mevcut sayfadaki ilk sohbet kaydının ID\'si. Varsayılan yok.',
+    chatMsgHistoryLimit: 'Bir istekte kaç sohbet döndürüleceği',
+    conversationsListApi: 'Konuşma listesini al',
+    conversationsListApiTip: 'Mevcut kullanıcının oturum listesini alır. Varsayılan olarak, son 20 oturum döndürülür.',
+    conversationsListFirstIdTip: 'Mevcut sayfadaki son kaydın ID\'si, varsayılan yok.',
+    conversationsListLimitTip: 'Bir istekte kaç sohbet döndürüleceği',
+    conversationRenamingApi: 'Konuşma yeniden adlandırma',
+    conversationRenamingApiTip: 'Konuşmaları yeniden adlandırın; ad, çoklu oturum istemci arayüzlerinde görüntülenir.',
+    conversationRenamingNameTip: 'Yeni isim',
+    parametersApi: 'Uygulama parametre bilgilerini al',
+    parametersApiTip: 'Değişken adları, alan adları, türleri ve varsayılan değerler dahil olmak üzere yapılandırılmış Giriş parametrelerini alın. Genellikle bu alanları bir formda görüntülemek veya istemci yüklendikten sonra varsayılan değerleri doldurmak için kullanılır.',
+  },
+  develop: {
+    requestBody: 'Request Body',
+    pathParams: 'Path Params',
+    query: 'Query',
+  },
+}
+
+export default translation

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 460 - 0
web/i18n/tr-TR/app-debug.ts


+ 91 - 0
web/i18n/tr-TR/app-log.ts

@@ -0,0 +1,91 @@
+const translation = {
+  title: 'Günlükler',
+  description: 'Günlükler, kullanıcının girdileri ve AI tepkileri dahil olmak üzere uygulamanın çalışma durumunu kaydeder.',
+  dateTimeFormat: 'GG/AA/YYYY ss:dd ÖÖ/ÖS',
+  table: {
+    header: {
+      time: 'Zaman',
+      endUser: 'Son Kullanıcı',
+      input: 'Girdi',
+      output: 'Çıktı',
+      summary: 'Başlık',
+      messageCount: 'Mesaj Sayısı',
+      userRate: 'Kullanıcı Puanı',
+      adminRate: 'Op. Puanı',
+      startTime: 'BAŞLANGIÇ ZAMANI',
+      status: 'DURUM',
+      runtime: 'ÇALIŞMA SÜRESİ',
+      tokens: 'TOKENLAR',
+      user: 'SON KULLANICI',
+      version: 'VERSİYON',
+    },
+    pagination: {
+      previous: 'Önceki',
+      next: 'Sonraki',
+    },
+    empty: {
+      noChat: 'Henüz konuşma yok',
+      noOutput: 'Çıktı yok',
+      element: {
+        title: 'Kimse var mı?',
+        content: 'Son kullanıcılar ve AI uygulamaları arasındaki etkileşimleri gözlemleyin ve açıklamalar ekleyin, böylece AI doğruluğunu sürekli olarak artırabilirsiniz. Web Uygulamasını <shareLink>paylaşmayı</shareLink> veya <testLink>kendiniz test etmeyi</testLink> deneyebilir, ardından bu sayfaya geri dönebilirsiniz.',
+      },
+    },
+  },
+  detail: {
+    time: 'Zaman',
+    conversationId: 'Konuşma ID',
+    promptTemplate: 'Prompt Şablonu',
+    promptTemplateBeforeChat: 'Sohbet Öncesi Prompt Şablonu · Sistem Mesajı Olarak',
+    annotationTip: '{{user}} tarafından işaretlenen iyileştirmeler',
+    timeConsuming: 'Geçen Süre',
+    second: 's',
+    tokenCost: 'Token harcanan',
+    loading: 'yükleniyor',
+    operation: {
+      like: 'beğeni',
+      dislike: 'beğenmeme',
+      addAnnotation: 'İyileştirme Ekle',
+      editAnnotation: 'İyileştirme Düzenle',
+      annotationPlaceholder: 'AI\'ın yanıtlamasını istediğiniz beklenen cevabı girin, bu, model ince ayarı ve metin üretim kalitesinin sürekli iyileştirilmesi için kullanılabilir.',
+    },
+    variables: 'Değişkenler',
+    uploadImages: 'Yüklenen Görseller',
+  },
+  filter: {
+    period: {
+      today: 'Bugün',
+      last7days: 'Son 7 Gün',
+      last4weeks: 'Son 4 Hafta',
+      last3months: 'Son 3 Ay',
+      last12months: 'Son 12 Ay',
+      monthToDate: 'Ay Başlangıcından İtibaren',
+      quarterToDate: 'Çeyrek Başlangıcından İtibaren',
+      yearToDate: 'Yıl Başlangıcından İtibaren',
+      allTime: 'Tüm Zamanlar',
+    },
+    annotation: {
+      all: 'Hepsi',
+      annotated: 'Açıklamalı İyileştirmeler ({{count}} öğe)',
+      not_annotated: 'Açıklanmamış',
+    },
+  },
+  workflowTitle: 'Workflow Günlükleri',
+  workflowSubtitle: 'Günlük, Automate\'in çalışmasını kaydetmiştir.',
+  runDetail: {
+    title: 'Konuşma Günlüğü',
+    workflowTitle: 'Günlük Detayı',
+  },
+  promptLog: 'Prompt Günlüğü',
+  agentLog: 'Agent Günlüğü',
+  viewLog: 'Günlüğü Görüntüle',
+  agentLogDetail: {
+    agentMode: 'Agent Modu',
+    toolUsed: 'Kullanılan Araç',
+    iterations: 'Yinelemeler',
+    iteration: 'Yineleme',
+    finalProcessing: 'Son İşleme',
+  },
+}
+
+export default translation

+ 156 - 0
web/i18n/tr-TR/app-overview.ts

@@ -0,0 +1,156 @@
+const translation = {
+  welcome: {
+    firstStepTip: 'Başlamak için,',
+    enterKeyTip: 'aşağıya OpenAI API Anahtarınızı girin',
+    getKeyTip: 'OpenAI kontrol panelinden API Anahtarınızı alın',
+    placeholder: 'API Anahtarınız (ör. sk-xxxx)',
+  },
+  apiKeyInfo: {
+    cloud: {
+      trial: {
+        title: '{{providerName}} deneme kotasını kullanıyorsunuz.',
+        description: 'Deneme kotası, test amaçlarınız için sağlanmıştır. Deneme kotası bitmeden önce kendi model sağlayıcınızı ayarlayın veya ek kota satın alın.',
+      },
+      exhausted: {
+        title: 'Deneme kotanızı kullandınız, lütfen API Anahtarınızı ayarlayın.',
+        description: 'Deneme kotanızı bitirdiniz. Lütfen kendi model sağlayıcınızı ayarlayın veya ek kota satın alın.',
+      },
+    },
+    selfHost: {
+      title: {
+        row1: 'Başlamak için,',
+        row2: 'model sağlayıcınızı ayarlayın.',
+      },
+    },
+    callTimes: 'Çağrı süresi',
+    usedToken: 'Kullanılan token',
+    setAPIBtn: 'Model sağlayıcısını ayarlamaya git',
+    tryCloud: 'Veya Dify\'nin bulut sürümünü ücretsiz kotayla deneyin',
+  },
+  overview: {
+    title: 'Genel Bakış',
+    appInfo: {
+      explanation: 'Kullanıma hazır AI WebApp',
+      accessibleAddress: 'Genel URL',
+      preview: 'Önizleme',
+      regenerate: 'Yeniden Oluştur',
+      regenerateNotice: 'Genel URL\'yi yeniden oluşturmak istiyor musunuz?',
+      preUseReminder: 'Devam etmeden önce WebApp\'i etkinleştirin.',
+      settings: {
+        entry: 'Ayarlar',
+        title: 'WebApp Ayarları',
+        webName: 'WebApp İsmi',
+        webDesc: 'WebApp Açıklaması',
+        webDescTip: 'Bu metin, uygulamanın nasıl kullanılacağına dair temel açıklamalar sağlar ve istemci tarafında görüntülenir',
+        webDescPlaceholder: 'WebApp\'in açıklamasını girin',
+        language: 'Dil',
+        workflow: {
+          title: 'Workflow Adımları',
+          show: 'Göster',
+          hide: 'Gizle',
+        },
+        chatColorTheme: 'Sohbet renk teması',
+        chatColorThemeDesc: 'Sohbet botunun renk temasını ayarlayın',
+        chatColorThemeInverted: 'Tersine çevrilmiş',
+        invalidHexMessage: 'Geçersiz hex değeri',
+        more: {
+          entry: 'Daha fazla ayarı göster',
+          copyright: 'Telif Hakkı',
+          copyRightPlaceholder: 'Yazarın veya kuruluşun adını girin',
+          privacyPolicy: 'Gizlilik Politikası',
+          privacyPolicyPlaceholder: 'Gizlilik politikası bağlantısını girin',
+          privacyPolicyTip: 'Ziyaretçilerin uygulamanın topladığı verileri anlamalarına yardımcı olur, Dify\'nin <privacyPolicyLink>Gizlilik Politikası</privacyPolicyLink>\'na bakın.',
+          customDisclaimer: 'Özel İfşa',
+          customDisclaimerPlaceholder: 'Özel ifşa metnini girin',
+          customDisclaimerTip: 'Özel ifşa metni istemci tarafında görüntülenecek ve uygulama hakkında ek bilgiler sağlayacak',
+        },
+      },
+      embedded: {
+        entry: 'Gömülü',
+        title: 'Siteye Yerleştir',
+        explanation: 'Sohbet uygulamasını web sitenize yerleştirmenin yollarını seçin',
+        iframe: 'Sohbet uygulamasını web sitenizin herhangi bir yerine eklemek için bu iframe\'i HTML kodunuza ekleyin.',
+        scripts: 'Sohbet uygulamasını web sitenizin sağ alt köşesine eklemek için bu kodu HTML\'e ekleyin.',
+        chromePlugin: 'Dify Chatbot Chrome Eklentisini Yükleyin',
+        copied: 'Kopyalandı',
+        copy: 'Kopyala',
+      },
+      qrcode: {
+        title: 'Bağlantı QR Kodu',
+        scan: 'Paylaşmak İçin Taramak',
+        download: 'QR Kodu İndir',
+      },
+      customize: {
+        way: 'yol',
+        entry: 'Özelleştir',
+        title: 'AI WebApp\'i Özelleştirin',
+        explanation: 'Web Uygulamasının ön yüzünü senaryo ve stil ihtiyaçlarınıza uygun şekilde özelleştirebilirsiniz.',
+        way1: {
+          name: 'İstemci kodunu forklayarak değiştirin ve Vercel\'e dağıtın (önerilen)',
+          step1: 'İstemci kodunu forklayarak değiştirin',
+          step1Tip: 'Kaynak kodunu GitHub hesabınıza forklayarak değiştirmek için buraya tıklayın',
+          step1Operation: 'Dify-WebClient',
+          step2: 'Vercel\'e dağıtın',
+          step2Tip: 'Depoyu Vercel\'e içe aktarmak ve dağıtmak için buraya tıklayın',
+          step2Operation: 'Depo içe aktar',
+          step3: 'Çevresel değişkenleri yapılandırın',
+          step3Tip: 'Vercel\'de aşağıdaki çevresel değişkenleri ekleyin',
+        },
+        way2: {
+          name: 'İstemci kodunu yazarak API\'yi çağırın ve bir sunucuya dağıtın',
+          operation: 'Dokümantasyon',
+        },
+      },
+    },
+    apiInfo: {
+      title: 'Arka Uç Servis API\'si',
+      explanation: 'Kolayca uygulamanıza entegre edin',
+      accessibleAddress: 'Servis API Uç Noktası',
+      doc: 'API Referansı',
+    },
+    status: {
+      running: 'Hizmette',
+      disable: 'Devre Dışı',
+    },
+  },
+  analysis: {
+    title: 'Analiz',
+    ms: 'ms',
+    tokenPS: 'Token/s',
+    totalMessages: {
+      title: 'Toplam Mesajlar',
+      explanation: 'Günlük AI etkileşim sayısı; prompt mühendisliği/hata ayıklama hariç.',
+    },
+    activeUsers: {
+      title: 'Aktif Kullanıcılar',
+      explanation: 'AI ile Soru-Cevap etkileşiminde bulunan benzersiz kullanıcılar; prompt mühendisliği/hata ayıklama hariç.',
+    },
+    tokenUsage: {
+      title: 'Token Kullanımı',
+      explanation: 'Uygulama için dil modelinin günlük token kullanımını yansıtır, maliyet kontrolü amacıyla faydalıdır.',
+      consumed: 'Tüketilen',
+    },
+    avgSessionInteractions: {
+      title: 'Ort. Oturum Etkileşimleri',
+      explanation: 'Sohbete dayalı uygulamalar için sürekli kullanıcı-AI iletişim sayısı.',
+    },
+    avgUserInteractions: {
+      title: 'Ort. Kullanıcı Etkileşimleri',
+      explanation: 'Kullanıcıların günlük kullanım sıklığını yansıtır. Bu metrik, kullanıcı bağlılığını yansıtır.',
+    },
+    userSatisfactionRate: {
+      title: 'Kullanıcı Memnuniyet Oranı',
+      explanation: 'Her 1.000 mesajda alınan beğeni sayısı. Bu, kullanıcıların çok memnun olduğu cevapların oranını gösterir.',
+    },
+    avgResponseTime: {
+      title: 'Ort. Yanıt Süresi',
+      explanation: 'Metin tabanlı uygulamalar için AI\'ın işlem/yanıt süresi (ms).',
+    },
+    tps: {
+      title: 'Token Çıktı Hızı',
+      explanation: 'LLM\'nin performansını ölçün. İstekten çıktının tamamlanmasına kadar LLM\'nin Token çıktı hızını sayın.',
+    },
+  },
+}
+
+export default translation

+ 126 - 0
web/i18n/tr-TR/app.ts

@@ -0,0 +1,126 @@
+const translation = {
+  createApp: 'UYGULAMA OLUŞTUR',
+  types: {
+    all: 'Hepsi',
+    chatbot: 'Chatbot',
+    agent: 'Agent',
+    workflow: 'Workflow',
+    completion: 'Tamamlama',
+  },
+  duplicate: 'Çoğalt',
+  duplicateTitle: 'Uygulamayı Çoğalt',
+  export: 'DSL Dışa Aktar',
+  exportFailed: 'DSL dışa aktarımı başarısız oldu.',
+  importDSL: 'DSL dosyasını içe aktar',
+  createFromConfigFile: 'DSL dosyasından oluştur',
+  importFromDSL: 'DSL içe aktar',
+  importFromDSLFile: 'DSL dosyasından',
+  importFromDSLUrl: 'URL\'den',
+  importFromDSLUrlPlaceholder: 'DSL bağlantısını buraya yapıştır',
+  deleteAppConfirmTitle: 'Bu uygulamayı silmek istiyor musunuz?',
+  deleteAppConfirmContent: 'Uygulamanın silinmesi geri alınamaz. Kullanıcılar artık uygulamanıza erişemeyecek ve tüm prompt yapılandırmaları ile loglar kalıcı olarak silinecektir.',
+  appDeleted: 'Uygulama silindi',
+  appDeleteFailed: 'Uygulama silinemedi',
+  join: 'Topluluğa katıl',
+  communityIntro: 'Farklı kanallarda takım üyeleri, katkıda bulunanlar ve geliştiricilerle tartışın.',
+  roadmap: 'Yol haritamızı görün',
+  newApp: {
+    startFromBlank: 'Boş Oluştur',
+    startFromTemplate: 'Şablondan Oluştur',
+    captionAppType: 'Ne tür bir uygulama oluşturmak istiyorsunuz?',
+    chatbotDescription: 'Sohbete dayalı bir uygulama oluşturun. Bu uygulama, çoklu turlar halinde sürekli konuşmaya izin veren bir soru-cevap formatı kullanır.',
+    completionDescription: 'Prompt temelinde yüksek kaliteli metinler üreten bir uygulama oluşturun, örneğin makaleler, özetler, çeviriler ve daha fazlasını oluşturmak için.',
+    completionWarning: 'Bu tür bir uygulama artık desteklenmeyecek.',
+    agentDescription: 'Görevleri tamamlamak için araçları bağımsız olarak seçebilen bir zeki Agent oluşturun',
+    workflowDescription: 'Yüksek derecede özelleştirilebilir bir workflow ile yüksek kaliteli metinler üreten bir uygulama oluşturun. Deneyimli kullanıcılar için uygundur.',
+    workflowWarning: 'Şu anda beta aşamasında',
+    chatbotType: 'Chatbot düzenleme yöntemi',
+    basic: 'Temel',
+    basicTip: 'Yeni başlayanlar için, daha sonra Chatflow\'a geçilebilir',
+    basicFor: 'YENİ BAŞLAYANLAR İÇİN',
+    basicDescription: 'Temel Orkestrasyon, yerleşik promptları değiştirme yeteneği olmadan, basit ayarlarla bir Chatbot uygulamasının orkestrasyonuna olanak tanır. Yeni başlayanlar için uygundur.',
+    advanced: 'Chatflow',
+    advancedFor: 'Gelişmiş kullanıcılar için',
+    advancedDescription: 'Workflow Orkestrasyonu, yerleşik promptları düzenleme yeteneği de dahil olmak üzere yüksek derecede özelleştirme sunarak Chatbotları workflow formunda düzenler. Deneyimli kullanıcılar için uygundur.',
+    captionName: 'Uygulama simgesi & ismi',
+    appNamePlaceholder: 'Uygulamanıza bir isim verin',
+    captionDescription: 'Açıklama',
+    appDescriptionPlaceholder: 'Uygulamanın açıklamasını girin',
+    useTemplate: 'Bu şablonu kullan',
+    previewDemo: 'Önizleme demosu',
+    chatApp: 'Asistan',
+    chatAppIntro: 'Sohbete dayalı bir uygulama oluşturmak istiyorum. Bu uygulama, çoklu turlar halinde sürekli konuşmaya izin veren bir soru-cevap formatı kullanır.',
+    agentAssistant: 'Yeni Agent Asistanı',
+    completeApp: 'Metin Üretici',
+    completeAppIntro: 'Promptlara dayalı olarak yüksek kaliteli metinler üreten bir uygulama oluşturmak istiyorum, örneğin makaleler, özetler, çeviriler ve daha fazlasını oluşturmak için.',
+    showTemplates: 'Bir şablondan seçmek istiyorum',
+    hideTemplates: 'Mod seçim ekranına geri dön',
+    Create: 'Oluştur',
+    Cancel: 'İptal',
+    nameNotEmpty: 'İsim boş olamaz',
+    appTemplateNotSelected: 'Lütfen bir şablon seçin',
+    appTypeRequired: 'Lütfen bir uygulama türü seçin',
+    appCreated: 'Uygulama oluşturuldu',
+    appCreateFailed: 'Uygulama oluşturulamadı',
+  },
+  editApp: 'Bilgileri Düzenle',
+  editAppTitle: 'Uygulama Bilgilerini Düzenle',
+  editDone: 'Uygulama bilgileri güncellendi',
+  editFailed: 'Uygulama bilgileri güncellenemedi',
+  emoji: {
+    ok: 'Tamam',
+    cancel: 'İptal',
+  },
+  switch: 'Workflow Orkestrasyonuna Geç',
+  switchTipStart: 'Sizin için yeni bir uygulama kopyası oluşturulacak ve yeni kopya Workflow Orkestrasyonuna geçecektir. Yeni kopya ',
+  switchTip: 'izin vermeyecek',
+  switchTipEnd: ' Temel Orkestrasyona geri dönmek.',
+  switchLabel: 'Oluşturulacak uygulama kopyası',
+  removeOriginal: 'Orijinal uygulamayı sil',
+  switchStart: 'Geçişi Başlat',
+  typeSelector: {
+    all: 'ALL Types',
+    chatbot: 'Chatbot',
+    agent: 'Agent',
+    workflow: 'Workflow',
+    completion: 'Completion',
+  },
+  tracing: {
+    title: 'Uygulama performansını izleme',
+    description: 'Üçüncü taraf LLMOps sağlayıcısını yapılandırma ve uygulama performansını izleme.',
+    config: 'Yapılandırma',
+    collapse: 'Daralt',
+    expand: 'Genişlet',
+    tracing: 'İzleme',
+    disabled: 'Devre Dışı',
+    disabledTip: 'Lütfen önce sağlayıcıyı yapılandırın',
+    enabled: 'Hizmette',
+    tracingDescription: 'Uygulama yürütmesinin tam bağlamını, LLM çağrıları, bağlam, promptlar, HTTP istekleri ve daha fazlası dahil olmak üzere üçüncü taraf izleme platformuna yakalama.',
+    configProviderTitle: {
+      configured: 'Yapılandırıldı',
+      notConfigured: 'İzlemeyi etkinleştirmek için sağlayıcıyı yapılandırın',
+      moreProvider: 'Daha Fazla Sağlayıcı',
+    },
+    langsmith: {
+      title: 'LangSmith',
+      description: 'LLM destekli uygulama yaşam döngüsünün her adımı için her şeyi kapsayan bir geliştirici platformu.',
+    },
+    langfuse: {
+      title: 'Langfuse',
+      description: 'LLM uygulamanızı hata ayıklamak ve geliştirmek için izlemeler, değerlendirmeler, prompt yönetimi ve metrikler.',
+    },
+    inUse: 'Kullanımda',
+    configProvider: {
+      title: 'Yapılandırma',
+      placeholder: '{{key}} bilgilerinizi girin',
+      project: 'Proje',
+      publicKey: 'Genel Anahtar',
+      secretKey: 'Gizli Anahtar',
+      viewDocsLink: '{{key}} dökümanlarını görüntüle',
+      removeConfirmTitle: '{{key}} yapılandırmasını kaldır?',
+      removeConfirmContent: 'Mevcut yapılandırma kullanımda, kaldırılması İzleme özelliğini kapatacaktır.',
+    },
+  },
+}
+
+export default translation

+ 118 - 0
web/i18n/tr-TR/billing.ts

@@ -0,0 +1,118 @@
+const translation = {
+  currentPlan: 'Mevcut Plan',
+  upgradeBtn: {
+    plain: 'Planı Yükselt',
+    encourage: 'Şimdi Yükselt',
+    encourageShort: 'Yükselt',
+  },
+  viewBilling: 'Faturalandırma ve abonelikleri yönet',
+  buyPermissionDeniedTip: 'Abone olmak için lütfen işletme yöneticinize başvurun',
+  plansCommon: {
+    title: 'Size uygun bir plan seçin',
+    yearlyTip: 'Yıllık abonelikle 2 ay ücretsiz!',
+    mostPopular: 'En Popüler',
+    planRange: {
+      monthly: 'Aylık',
+      yearly: 'Yıllık',
+    },
+    month: 'ay',
+    year: 'yıl',
+    save: 'Tasarruf et ',
+    free: 'Ücretsiz',
+    currentPlan: 'Mevcut Plan',
+    contractSales: 'Satışla iletişime geçin',
+    contractOwner: 'Takım yöneticisine başvurun',
+    startForFree: 'Ücretsiz Başla',
+    getStartedWith: 'ile başlayın',
+    contactSales: 'Satışlarla İletişime Geçin',
+    talkToSales: 'Satışlarla Konuşun',
+    modelProviders: 'Model Sağlayıcılar',
+    teamMembers: 'Takım Üyeleri',
+    annotationQuota: 'Ek Açıklama Kotası',
+    buildApps: 'Uygulamalar Oluştur',
+    vectorSpace: 'Vektör Alanı',
+    vectorSpaceBillingTooltip: 'Her 1MB yaklaşık 1.2 milyon karakter vektörize veri depolayabilir (OpenAI Embeddings ile tahmin edilmiştir, modellere göre farklılık gösterebilir).',
+    vectorSpaceTooltip: 'Vektör Alanı, LLM\'lerin verilerinizi anlaması için gerekli uzun süreli hafıza sistemidir.',
+    documentsUploadQuota: 'Doküman Yükleme Kotası',
+    documentProcessingPriority: 'Doküman İşleme Önceliği',
+    documentProcessingPriorityTip: 'Daha yüksek doküman işleme önceliği için planınızı yükseltin.',
+    documentProcessingPriorityUpgrade: 'Daha fazla veriyi daha yüksek doğrulukla ve daha hızlı işleyin.',
+    priority: {
+      'standard': 'Standart',
+      'priority': 'Öncelikli',
+      'top-priority': 'En Öncelikli',
+    },
+    logsHistory: 'Günlük Geçmişi',
+    customTools: 'Özel Araçlar',
+    unavailable: 'Mevcut Değil',
+    days: 'gün',
+    unlimited: 'Sınırsız',
+    support: 'Destek',
+    supportItems: {
+      communityForums: 'Topluluk forumları',
+      emailSupport: 'E-posta desteği',
+      priorityEmail: 'Öncelikli e-posta ve sohbet desteği',
+      logoChange: 'Logo değişikliği',
+      SSOAuthentication: 'SSO kimlik doğrulama',
+      personalizedSupport: 'Kişiselleştirilmiş destek',
+      dedicatedAPISupport: 'Özel API desteği',
+      customIntegration: 'Özel entegrasyon ve destek',
+      ragAPIRequest: 'RAG API Talepleri',
+      bulkUpload: 'Toplu doküman yükleme',
+      agentMode: 'Agent Modu',
+      workflow: 'Workflow',
+      llmLoadingBalancing: 'LLM Yük Dengeleme',
+      llmLoadingBalancingTooltip: 'Modellere birden fazla API anahtarı ekleyin, API hız sınırlarını etkili bir şekilde aşın.',
+    },
+    comingSoon: 'Yakında geliyor',
+    member: 'Üye',
+    memberAfter: 'Üye',
+    messageRequest: {
+      title: 'Mesaj Kredileri',
+      tooltip: 'OpenAI modellerini (gpt4 hariç) kullanarak çeşitli planlar için mesaj çağrı kotaları. Limitin üzerindeki mesajlar OpenAI API Anahtarınızı kullanır.',
+    },
+    annotatedResponse: {
+      title: 'Ek Açıklama Kota Sınırları',
+      tooltip: 'Yanıtların elle düzenlenmesi ve ek açıklanması, uygulamalar için özelleştirilebilir yüksek kaliteli soru-cevap yetenekleri sağlar. (Sadece sohbet uygulamalarında geçerlidir)',
+    },
+    ragAPIRequestTooltip: 'Dify\'nin sadece bilgi tabanı işleme yeteneklerini çağıran API çağrıları sayısını ifade eder.',
+    receiptInfo: 'Sadece takım sahibi ve takım yöneticisi abone olabilir ve faturalandırma bilgilerini görüntüleyebilir',
+  },
+  plans: {
+    sandbox: {
+      name: 'Sandbox',
+      description: '200 kez GPT ücretsiz deneme',
+      includesTitle: 'İçerdikleri:',
+    },
+    professional: {
+      name: 'Profesyonel',
+      description: 'Bireyler ve küçük takımlar için daha fazla güç açın.',
+      includesTitle: 'Ücretsiz plandaki her şey, artı:',
+    },
+    team: {
+      name: 'Takım',
+      description: 'Sınırsız işbirliği ve en üst düzey performans.',
+      includesTitle: 'Profesyonel plandaki her şey, artı:',
+    },
+    enterprise: {
+      name: 'Kurumsal',
+      description: 'Büyük ölçekli kritik sistemler için tam yetenekler ve destek.',
+      includesTitle: 'Takım plandaki her şey, artı:',
+    },
+  },
+  vectorSpace: {
+    fullTip: 'Vektör Alanı dolu.',
+    fullSolution: 'Daha fazla alan için planınızı yükseltin.',
+  },
+  apps: {
+    fullTipLine1: 'Daha fazla uygulama oluşturmak için',
+    fullTipLine2: 'planınızı yükseltin.',
+  },
+  annotatedResponse: {
+    fullTipLine1: 'Daha fazla konuşmayı açıklamak için',
+    fullTipLine2: 'planınızı yükseltin.',
+    quotaTitle: 'Ek Açıklama Yanıtı Kotası',
+  },
+}
+
+export default translation

+ 572 - 0
web/i18n/tr-TR/common.ts

@@ -0,0 +1,572 @@
+const translation = {
+  api: {
+    success: 'Başarılı',
+    actionSuccess: 'İşlem başarılı',
+    saved: 'Kaydedildi',
+    create: 'Oluşturuldu',
+    remove: 'Kaldırıldı',
+  },
+  operation: {
+    create: 'Oluştur',
+    confirm: 'Onayla',
+    cancel: 'İptal',
+    clear: 'Temizle',
+    save: 'Kaydet',
+    saveAndEnable: 'Kaydet ve Etkinleştir',
+    edit: 'Düzenle',
+    add: 'Ekle',
+    added: 'Eklendi',
+    refresh: 'Yeniden Başlat',
+    reset: 'Sıfırla',
+    search: 'Ara',
+    change: 'Değiştir',
+    remove: 'Kaldır',
+    send: 'Gönder',
+    copy: 'Kopyala',
+    lineBreak: 'Satır sonu',
+    sure: 'Eminim',
+    download: 'İndir',
+    delete: 'Sil',
+    settings: 'Ayarlar',
+    setup: 'Kurulum',
+    getForFree: 'Ücretsiz edinin',
+    reload: 'Yeniden Yükle',
+    ok: 'Tamam',
+    log: 'log',
+    learnMore: 'Daha Fazla Bilgi',
+    params: 'Parametreler',
+    duplicate: 'Çoğalt',
+    rename: 'Yeniden Adlandır',
+  },
+  errorMsg: {
+    fieldRequired: '{{field}} gereklidir',
+    urlError: 'URL http:// veya https:// ile başlamalıdır',
+  },
+  placeholder: {
+    input: 'Lütfen girin',
+    select: 'Lütfen seçin',
+  },
+  voice: {
+    language: {
+      zhHans: 'Chinese',
+      zhHant: 'Traditional Chinese',
+      enUS: 'English',
+      deDE: 'German',
+      frFR: 'French',
+      esES: 'Spanish',
+      itIT: 'Italian',
+      thTH: 'Thai.',
+      idID: 'Indonesian',
+      jaJP: 'Japanese',
+      koKR: 'Korean',
+      ptBR: 'Portuguese',
+      ruRU: 'Russian',
+      ukUA: 'Ukrainian',
+      viVN: 'Vietnamese',
+      plPL: 'Polish',
+    },
+  },
+  unit: {
+    char: 'karakter',
+  },
+  actionMsg: {
+    noModification: 'Şu an için değişiklik yok.',
+    modifiedSuccessfully: 'Başarıyla değiştirildi',
+    modifiedUnsuccessfully: 'Değiştirme başarısız oldu',
+    copySuccessfully: 'Başarıyla kopyalandı',
+    paySucceeded: 'Ödeme başarılı oldu',
+    payCancelled: 'Ödeme iptal edildi',
+    generatedSuccessfully: 'Başarıyla oluşturuldu',
+    generatedUnsuccessfully: 'Oluşturma başarısız oldu',
+  },
+  model: {
+    params: {
+      temperature: 'Sıcaklık',
+      temperatureTip:
+        'Rastgeleliği kontrol eder: Sıcaklık düştükçe daha az rastgele tamamlamalar gerçekleşir. Sıcaklık sıfıra yaklaştıkça model deterministik ve tekrarlı hale gelir.',
+      top_p: 'Top P',
+      top_pTip:
+        'Çeşitliliği nucleus örnekleme ile kontrol eder: 0.5, tüm olasılık ağırlıklı seçeneklerin yarısının dikkate alındığı anlamına gelir.',
+      presence_penalty: 'Varlık cezası',
+      presence_penaltyTip:
+        'Şimdiye kadar metinde görünüp görünmediğine bağlı olarak yeni tokenları ne kadar cezalandıracağını belirler.\nModelin yeni konular hakkında konuşma olasılığını artırır.',
+      frequency_penalty: 'Frekans cezası',
+      frequency_penaltyTip:
+        'Mevcut metindeki frekanslarına göre yeni tokenları ne kadar cezalandıracağını belirler.\nModelin aynı satırı aynen tekrarlama olasılığını azaltır.',
+      max_tokens: 'Maksimum token',
+      max_tokensTip:
+        'Yanıtın maksimum uzunluğunu token cinsinden sınırlar.\nDaha büyük değerler prompt kelimeleri, sohbet kayıtları ve Bilgiler için bırakılacak alanı sınırlayabilir. \nİki üçün altında ayarlanması önerilir\ngpt-4-1106-preview, gpt-4-vision-preview maksimum token (giriş 128k, çıkış 4k).',
+      maxTokenSettingTip: 'Maksimum token ayarınız yüksek, bu da promptlar, sorgular ve veriler için alanı sınırlayabilir. Bu değeri 2/3\'ün altında ayarlamayı düşünün.',
+      setToCurrentModelMaxTokenTip: 'Maksimum token, mevcut modelin maksimum token\'ın %80\'ine {maxToken} olarak güncellendi.',
+      stop_sequences: 'Stop sıraları',
+      stop_sequencesTip: 'API, dört adede kadar sıra belirleyerek daha fazla token üretmeyi durduracaktır. Dönülen metin durdurma sırasını içermez.',
+      stop_sequencesPlaceholder: 'Sıra girin ve Tab tuşuna basın',
+    },
+    tone: {
+      Creative: 'Yaratıcı',
+      Balanced: 'Dengeli',
+      Precise: 'Kesin',
+      Custom: 'Özel',
+    },
+    addMoreModel: 'Daha fazla model eklemek için ayarlara gidin',
+  },
+  menus: {
+    status: 'beta',
+    explore: 'Keşfet',
+    apps: 'Studio',
+    plugins: 'Eklentiler',
+    pluginsTips: 'Üçüncü taraf eklentileri entegre edin veya ChatGPT uyumlu AI-Eklentileri oluşturun.',
+    datasets: 'Bilgi',
+    datasetsTips: 'YAKINDA: Kendi metin verilerinizi içe aktarın veya LLM bağlamını geliştirmek için Webhook aracılığıyla gerçek zamanlı veri yazın.',
+    newApp: 'Yeni Uygulama',
+    newDataset: 'Bilgi Oluştur',
+    tools: 'Araçlar',
+  },
+  userProfile: {
+    settings: 'Ayarlar',
+    emailSupport: 'E-posta Desteği',
+    workspace: 'Çalışma Alanı',
+    createWorkspace: 'Çalışma Alanı Oluştur',
+    helpCenter: 'Yardım',
+    roadmapAndFeedback: 'Geri Bildirim',
+    community: 'Topluluk',
+    about: 'Hakkında',
+    logout: 'Çıkış Yap',
+  },
+  settings: {
+    accountGroup: 'HESAP',
+    workplaceGroup: 'ÇALIŞMA ALANI',
+    account: 'Hesabım',
+    members: 'Üyeler',
+    billing: 'Faturalandırma',
+    integrations: 'Entegrasyonlar',
+    language: 'Dil',
+    provider: 'Model Sağlayıcı',
+    dataSource: 'Veri Kaynağı',
+    plugin: 'Eklentiler',
+    apiBasedExtension: 'API Uzantısı',
+  },
+  account: {
+    avatar: 'Avatar',
+    name: 'İsim',
+    email: 'E-posta',
+    password: 'Şifre',
+    passwordTip: 'Geçici giriş kodlarını kullanmak istemiyorsanız kalıcı bir şifre ayarlayabilirsiniz',
+    setPassword: 'Şifre Ayarla',
+    resetPassword: 'Şifreyi Sıfırla',
+    currentPassword: 'Mevcut şifre',
+    newPassword: 'Yeni şifre',
+    confirmPassword: 'Şifreyi onayla',
+    notEqual: 'İki şifre aynı değil.',
+    langGeniusAccount: 'Dify hesabı',
+    langGeniusAccountTip: 'Dify hesabınız ve ilişkili kullanıcı verileri.',
+    editName: 'İsmi Düzenle',
+    showAppLength: '{{length}} uygulamayı göster',
+    delete: 'Hesabı Sil',
+    deleteTip: 'Hesabınızı silmek tüm verilerinizi kalıcı olarak siler ve geri alınamaz.',
+    deleteConfirmTip: 'Onaylamak için, kayıtlı e-postanızdan şu adrese e-posta gönderin: ',
+  },
+  members: {
+    team: 'Takım',
+    invite: 'Ekle',
+    name: 'İSİM',
+    lastActive: 'SON AKTİF',
+    role: 'ROLLER',
+    pending: 'Beklemede...',
+    owner: 'Sahibi',
+    admin: 'Yönetici',
+    adminTip: 'Uygulama oluşturabilir ve takım ayarlarını yönetebilir',
+    normal: 'Normal',
+    normalTip: 'Sadece uygulamaları kullanabilir, uygulama oluşturamaz',
+    builder: 'Oluşturucu',
+    builderTip: 'Kendi uygulamalarını oluşturup düzenleyebilir',
+    editor: 'Editör',
+    editorTip: 'Uygulama oluşturabilir ve düzenleyebilir',
+    datasetOperator: 'Bilgi Yöneticisi',
+    datasetOperatorTip: 'Sadece bilgi tabanını yönetebilir',
+    inviteTeamMember: 'Takım Üyesi Ekle',
+    inviteTeamMemberTip: 'Giriş yaptıktan sonra takım verilerinize doğrudan erişebilirler.',
+    email: 'E-posta',
+    emailInvalid: 'Geçersiz E-posta Formatı',
+    emailPlaceholder: 'Lütfen e-postaları girin',
+    sendInvite: 'Davet Gönder',
+    invitedAsRole: '{{role}} kullanıcısı olarak davet edildi',
+    invitationSent: 'Davet gönderildi',
+    invitationSentTip: 'Davet gönderildi, Dify\'ye giriş yaparak takım verilerinize erişebilirler.',
+    invitationLink: 'Davet Linki',
+    failedinvitationEmails: 'Aşağıdaki kullanıcılar başarıyla davet edilmedi',
+    ok: 'Tamam',
+    removeFromTeam: 'Takımdan Kaldır',
+    removeFromTeamTip: 'Takım erişimi kaldırılacak',
+    setAdmin: 'Yönetici olarak ayarla',
+    setMember: 'Normal üye olarak ayarla',
+    setBuilder: 'Oluşturucu olarak ayarla',
+    setEditor: 'Editör olarak ayarla',
+    disinvite: 'Davetiyeyi iptal et',
+    deleteMember: 'Üyeyi Sil',
+    you: '(Siz)',
+  },
+  integrations: {
+    connected: 'Bağlandı',
+    google: 'Google',
+    googleAccount: 'Google hesabıyla giriş yap',
+    github: 'GitHub',
+    githubAccount: 'GitHub hesabıyla giriş yap',
+    connect: 'Bağlan',
+  },
+  language: {
+    displayLanguage: 'Görüntüleme Dili',
+    timezone: 'Zaman Dilimi',
+  },
+  provider: {
+    apiKey: 'API Anahtarı',
+    enterYourKey: 'API anahtarınızı buraya girin',
+    invalidKey: 'Geçersiz OpenAI API anahtarı',
+    validatedError: 'Doğrulama hatası: ',
+    validating: 'Anahtar doğrulanıyor...',
+    saveFailed: 'API anahtarını kaydetme başarısız oldu',
+    apiKeyExceedBill: 'Bu API ANAHTARININ kullanılabilir kotası yok, lütfen okuyun',
+    addKey: 'Anahtar Ekle',
+    comingSoon: 'Yakında',
+    editKey: 'Düzenle',
+    invalidApiKey: 'Geçersiz API anahtarı',
+    azure: {
+      apiBase: 'API Tabanı',
+      apiBasePlaceholder: 'Azure OpenAI Endpoint\'inizin API Tabanı URL\'si.',
+      apiKey: 'API Anahtarı',
+      apiKeyPlaceholder: 'API anahtarınızı buraya girin',
+      helpTip: 'Azure OpenAI Service hakkında bilgi edinin',
+    },
+    openaiHosted: {
+      openaiHosted: 'Barındırılan OpenAI',
+      onTrial: 'DENEMEDE',
+      exhausted: 'KOTA DOLU',
+      desc: 'Dify tarafından sağlanan OpenAI barındırma hizmeti, GPT-3.5 gibi modelleri kullanmanıza olanak tanır. Deneme kotanız bitmeden önce, diğer model sağlayıcılarını ayarlamanız gerekir.',
+      callTimes: 'Çağrı süreleri',
+      usedUp: 'Deneme kotası kullanıldı. Kendi Model Sağlayıcınızı ekleyin.',
+      useYourModel: 'Şu anda kendi Model Sağlayıcınızı kullanıyorsunuz.',
+      close: 'Kapat',
+    },
+    anthropicHosted: {
+      anthropicHosted: 'Anthropic Claude',
+      onTrial: 'DENEMEDE',
+      exhausted: 'KOTA DOLU',
+      desc: 'Güçlü model, karmaşık diyaloglar ve yaratıcı içerik üretiminden ayrıntılı yönlendirmeye kadar geniş bir görev yelpazesi konusunda mükemmeldir.',
+      callTimes: 'Çağrı Süreleri',
+      usedUp: 'Deneme kotası kullanıldı. Kendi Model Sağlayıcınızı ekleyin.',
+      useYourModel: 'Şu anda kendi Model Sağlayıcınızı kullanıyorsunuz.',
+      close: 'Kapat',
+    },
+    anthropic: {
+      using: 'Yerleştirme yeteneği,',
+      enableTip: 'Anthropic modelini etkinleştirmek için önce OpenAI veya Azure OpenAI hizmetine bağlanmanız gerekir.',
+      notEnabled: 'Etkin değil',
+      keyFrom: 'API anahtarınızı Anthropic\'ten edinin',
+    },
+    encrypted: {
+      front: 'API ANAHTARINIZ şu kullanılarak şifrelenip saklanacak:',
+      back: ' teknolojisi.',
+    },
+  },
+  modelProvider: {
+    notConfigured: 'Sistem modeli henüz tam olarak yapılandırılmadı ve bazı işlevler kullanılamayabilir.',
+    systemModelSettings: 'Sistem Model Ayarları',
+    systemModelSettingsLink: 'Sistem modelini ayarlamak neden gereklidir?',
+    selectModel: 'Modelinizi seçin',
+    setupModelFirst: 'Lütfen önce modelinizi ayarlayın',
+    systemReasoningModel: {
+      key: 'Sistem Çıkarım Modeli',
+      tip: 'Uygulamalar oluşturmak ve diyalog adı oluşturma ve sonraki soru önerisi gibi özelliklerin otomatikleştirilmesi için kullanılacak varsayılan çıkarım modelini ayarlayın.',
+    },
+    embeddingModel: {
+      key: 'Yerleştirme Modeli',
+      tip: 'Bilginin belge yerleştirme işlemi için varsayılan modeli ayarlayın, Bilginin geri alımı ve içe aktarımı için bu Yerleştirme modeli kullanılarak vektörizasyon işlemleri yapılır. Değiştirilmesi, içe aktarılan Bilgilere ve sorulara arasındaki vektör boyutlarının tutarsız olmasına neden olarak geri alım hatasına yol açar. Geri alım hatasını önlemek için önce modeli keyfi olarak değiştirmeyin.',
+      required: 'Yerleştirme Modeli gereklidir',
+    },
+    speechToTextModel: {
+      key: 'Konuşmadan Metne Modeli',
+      tip: 'Konuşmada konuşmadan metne giriş için varsayılan modeli ayarlayın.',
+    },
+    ttsModel: {
+      key: 'Metinden Konuşmaya Modeli',
+      tip: 'Konuşmada metinden konuşmaya giriş için varsayılan modeli ayarlayın.',
+    },
+    rerankModel: {
+      key: 'Yeniden Sıralama Modeli',
+      tip: 'Yeniden sıralama modeli, kullanıcı sorgusuyla anlam eşleştirmesine dayalı olarak aday belge listesini yeniden sıralayacak ve anlam sıralama sonuçlarını iyileştirecektir.',
+    },
+    apiKey: 'API-KEY',
+    quota: 'Kota',
+    searchModel: 'Model ara',
+    noModelFound: '{{model}} için model bulunamadı',
+    models: 'Modeller',
+    showMoreModelProvider: 'Daha fazla model sağlayıcı göster',
+    selector: {
+      tip: 'Bu model kaldırıldı. Lütfen bir model ekleyin veya başka bir model seçin.',
+      emptyTip: 'Kullanılabilir model yok',
+      emptySetting: 'Lütfen ayarlara gidip yapılandırın',
+      rerankTip: 'Lütfen Yeniden Sıralama modelini ayarlayın',
+    },
+    card: {
+      quota: 'KOTA',
+      onTrial: 'Deneme Sürümünde',
+      paid: 'Ücretli',
+      quotaExhausted: 'Kota Tükendi',
+      callTimes: 'Çağrı Süreleri',
+      tokens: 'Tokenler',
+      buyQuota: 'Kota Satın Al',
+      priorityUse: 'Öncelikli Kullan',
+      removeKey: 'API Anahtarını Kaldır',
+      tip: 'Öncelikle ücretli kota kullanılacaktır. Deneme kotası, ücretli kota tükendiğinde kullanılacaktır.',
+    },
+    item: {
+      deleteDesc: '{{modelName}} şu anda sistem çıkarım modeli olarak kullanılmaktadır. Kaldırıldıktan sonra bazı işlevler kullanılamayabilir. Lütfen onaylayın.',
+      freeQuota: 'ÜCRETSİZ KOTA',
+    },
+    addApiKey: 'API anahtarınızı ekleyin',
+    invalidApiKey: 'Geçersiz API anahtarı',
+    encrypted: {
+      front: 'API ANAHTARINIZ şu kullanılarak şifrelenip saklanacak:',
+      back: ' teknolojisi.',
+    },
+    freeQuota: {
+      howToEarn: 'Nasıl kazanılır',
+    },
+    addMoreModelProvider: 'DAHA FAZLA MODEL SAĞLAYICI EKLEYİN',
+    addModel: 'Model Ekle',
+    modelsNum: '{{num}} Model',
+    showModels: 'Modelleri Göster',
+    showModelsNum: '{{num}} Modeli Göster',
+    collapse: 'Daralt',
+    config: 'Yapılandır',
+    modelAndParameters: 'Model ve Parametreler',
+    model: 'Model',
+    featureSupported: '{{feature}} desteklenir',
+    callTimes: 'Çağrı Süreleri',
+    credits: 'Mesaj Kredileri',
+    buyQuota: 'Kota Satın Al',
+    getFreeTokens: 'Ücretsiz Token Al',
+    priorityUsing: 'Öncelikli Kullanım',
+    deprecated: 'Kullanım dışı',
+    confirmDelete: 'silme onayı?',
+    quotaTip: 'Kalan kullanılabilir ücretsiz tokenler',
+    loadPresets: 'Hazır Ayarları Yükle',
+    parameters: 'PARAMETRELER',
+    loadBalancing: 'Yük dengeleme',
+    loadBalancingDescription: 'Birden fazla kimlik bilgisi grubu ile baskıyı azaltın.',
+    loadBalancingHeadline: 'Yük Dengeleme',
+    configLoadBalancing: 'Yük Dengelemeyi Yapılandır',
+    modelHasBeenDeprecated: 'Bu model kullanım dışıdır',
+    providerManaged: 'Sağlayıcı tarafından yönetilen',
+    providerManagedDescription: 'Model sağlayıcı tarafından sağlanan tek bir kimlik bilgisi grubunu kullanın.',
+    defaultConfig: 'Varsayılan Yapılandırma',
+    apiKeyStatusNormal: 'API Anahtarının durumu normal',
+    apiKeyRateLimit: 'Hız sınırına ulaşıldı, {{seconds}} saniye sonra tekrar kullanılabilir',
+    addConfig: 'Yapılandırma Ekle',
+    editConfig: 'Yapılandırmayı Düzenle',
+    loadBalancingLeastKeyWarning: 'Yük dengeleme etkinleştirmek için en az 2 anahtar etkinleştirilmelidir.',
+    loadBalancingInfo: 'Varsayılan olarak, yük dengeleme Yuvarlakrobin stratejisini kullanır. Hız sınırlaması tetiklenirse, 1 dakikalık bir soğuma süresi uygulanacaktır.',
+    upgradeForLoadBalancing: 'Yük Dengelemeyi etkinleştirmek için planınızı yükseltin.',
+  },
+  dataSource: {
+    add: 'Bir veri kaynağı ekle',
+    connect: 'Bağlan',
+    configure: 'Yapılandır',
+    notion: {
+      title: 'Notion',
+      description: 'Bilgi için veri kaynağı olarak Notion kullanma.',
+      connectedWorkspace: 'Bağlı çalışma alanı',
+      addWorkspace: 'Çalışma alanı ekle',
+      connected: 'Bağlandı',
+      disconnected: 'Bağlantı Kesildi',
+      changeAuthorizedPages: 'Yetkilendirilen sayfaları değiştir',
+      pagesAuthorized: 'Yetkilendirilen sayfalar',
+      sync: 'Senkronize et',
+      remove: 'Kaldır',
+      selector: {
+        pageSelected: 'Seçilen Sayfalar',
+        searchPages: 'Sayfaları ara...',
+        noSearchResult: 'Arama sonucu yok',
+        addPages: 'Sayfa ekle',
+        preview: 'ÖNİZLEME',
+      },
+    },
+    website: {
+      title: 'Web Sitesi',
+      description: 'Web tarayıcı kullanarak web sitelerinden içerik içe aktarın.',
+      with: 'İle',
+      configuredCrawlers: 'Yapılandırılmış tarayıcılar',
+      active: 'Aktif',
+      inactive: 'Pasif',
+    },
+  },
+  plugin: {
+    serpapi: {
+      apiKey: 'API Anahtarı',
+      apiKeyPlaceholder: 'API anahtarınızı girin',
+      keyFrom: 'SerpAPI Hesap Sayfasından SerpAPI anahtarınızı alın',
+    },
+  },
+  apiBasedExtension: {
+    title: 'API uzantıları merkezi API yönetimi sağlar, Dify\'nin uygulamaları arasında kolay kullanım için yapılandırmayı basitleştirir.',
+    link: 'Kendi API Uzantınızı nasıl geliştireceğinizi öğrenin.',
+    linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension',
+    add: 'API Uzantısı Ekle',
+    selector: {
+      title: 'API Uzantısı',
+      placeholder: 'Lütfen API uzantısını seçin',
+      manage: 'API Uzantısını Yönet',
+    },
+    modal: {
+      title: 'API Uzantısı Ekle',
+      editTitle: 'API Uzantısını Düzenle',
+      name: {
+        title: 'Ad',
+        placeholder: 'Lütfen adı girin',
+      },
+      apiEndpoint: {
+        title: 'API Uç Noktası',
+        placeholder: 'Lütfen API uç noktasını girin',
+      },
+      apiKey: {
+        title: 'API anahtarı',
+        placeholder: 'Lütfen API anahtarını girin',
+        lengthError: 'API anahtarı uzunluğu 5 karakterden az olamaz',
+      },
+    },
+    type: 'Tür',
+  },
+  about: {
+    changeLog: 'Değişiklik Günlüğü',
+    updateNow: 'Şimdi güncelle',
+    nowAvailable: 'Dify {{version}} şimdi mevcut.',
+    latestAvailable: 'Dify {{version}} en son mevcut sürüm.',
+  },
+  appMenus: {
+    overview: 'İzleme',
+    promptEng: 'Orchestrate',
+    apiAccess: 'API Erişimi',
+    logAndAnn: 'Günlükler & Anlamlandırmalar',
+    logs: 'Günlükler',
+  },
+  environment: {
+    testing: 'TEST',
+    development: 'GELİŞTİRME',
+  },
+  appModes: {
+    completionApp: 'Metin Üreteci',
+    chatApp: 'Sohbet Uygulaması',
+  },
+  datasetMenus: {
+    documents: 'Belgeler',
+    hitTesting: 'Geri Alım Testi',
+    settings: 'Ayarlar',
+    emptyTip: 'Bilgi ilişkilendirilmemiş, ilişkilendirme işlemini tamamlamak için uygulama veya eklentiye gidin.',
+    viewDoc: 'Dökümantasyon görüntüle',
+    relatedApp: 'bağlantılı uygulamalar',
+  },
+  voiceInput: {
+    speaking: 'Şimdi konuş...',
+    converting: 'Metne dönüştürülüyor...',
+    notAllow: 'mikrofon yetkilendirilmedi',
+  },
+  modelName: {
+    'gpt-3.5-turbo': 'GPT-3.5-Turbo',
+    'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
+    'gpt-4': 'GPT-4',
+    'gpt-4-32k': 'GPT-4-32K',
+    'text-davinci-003': 'Text-Davinci-003',
+    'text-embedding-ada-002': 'Text-Embedding-Ada-002',
+    'whisper-1': 'Whisper-1',
+    'claude-instant-1': 'Claude-Instant',
+    'claude-2': 'Claude-2',
+  },
+  chat: {
+    renameConversation: 'Konuşmayı Yeniden Adlandır',
+    conversationName: 'Konuşma adı',
+    conversationNamePlaceholder: 'Konuşma adını girin',
+    conversationNameCanNotEmpty: 'Konuşma adı gereklidir',
+    citation: {
+      title: 'ALINTILAR',
+      linkToDataset: 'Bilgiye Bağlantı',
+      characters: 'Karakterler:',
+      hitCount: 'Geri Alım Sayısı:',
+      vectorHash: 'Vektör Hash:',
+      hitScore: 'Geri Alım Skoru:',
+    },
+  },
+  promptEditor: {
+    placeholder: 'Prompt kelimenizi buraya yazın, değişken eklemek için \'{\' tuşuna, prompt içerik bloğu eklemek için \'/\' tuşuna basın',
+    context: {
+      item: {
+        title: 'Bağlam',
+        desc: 'Bağlam şablonunu ekle',
+      },
+      modal: {
+        title: 'Bağlamda {{num}} Knowledge',
+        add: 'Bağlam Ekle',
+        footer: 'Bağlamları aşağıdaki Bağlam bölümünde yönetebilirsiniz.',
+      },
+    },
+    history: {
+      item: {
+        title: 'Konuşma Geçmişi',
+        desc: 'Tarihi mesaj şablonunu ekle',
+      },
+      modal: {
+        title: 'ÖRNEK',
+        user: 'Merhaba',
+        assistant: 'Merhaba! Bugün size nasıl yardımcı olabilirim?',
+        edit: 'Konuşma Rol İsimlerini Düzenle',
+      },
+    },
+    variable: {
+      item: {
+        title: 'Değişkenler & Harici Araçlar',
+        desc: 'Değişkenler & Harici Araçlar ekle',
+      },
+      outputToolDisabledItem: {
+        title: 'Değişkenler',
+        desc: 'Değişkenleri ekle',
+      },
+      modal: {
+        add: 'Yeni değişken',
+        addTool: 'Yeni araç',
+      },
+    },
+    query: {
+      item: {
+        title: 'Sorgu',
+        desc: 'Kullanıcı sorgu şablonunu ekle',
+      },
+    },
+    existed: 'Zaten prompt içinde mevcut',
+  },
+  imageUploader: {
+    uploadFromComputer: 'Bilgisayardan Yükle',
+    uploadFromComputerReadError: 'Görüntü okuma başarısız oldu, lütfen tekrar deneyin.',
+    uploadFromComputerUploadError: 'Görüntü yükleme başarısız oldu, lütfen tekrar yükleyin.',
+    uploadFromComputerLimit: 'Yükleme görüntüleri {{size}} MB\'yi aşamaz',
+    pasteImageLink: 'Görüntü bağlantısını yapıştır',
+    pasteImageLinkInputPlaceholder: 'Görüntü bağlantısını buraya yapıştırın',
+    pasteImageLinkInvalid: 'Geçersiz görüntü bağlantısı',
+    imageUpload: 'Görüntü Yükleme',
+  },
+  tag: {
+    placeholder: 'Tüm Etiketler',
+    addNew: 'Yeni etiket ekle',
+    noTag: 'Etiket yok',
+    noTagYet: 'Henüz etiket yok',
+    addTag: 'Etiket ekle',
+    editTag: 'Etiketleri düzenle',
+    manageTags: 'Etiketleri Yönet',
+    selectorPlaceholder: 'Aramak veya oluşturmak için yazın',
+    create: 'Oluştur',
+    delete: 'Etiketi sil',
+    deleteTip: 'Etiket kullanılıyor, silinsin mi?',
+    created: 'Etiket başarıyla oluşturuldu',
+    failed: 'Etiket oluşturma başarısız oldu',
+  },
+}
+
+export default translation

+ 30 - 0
web/i18n/tr-TR/custom.ts

@@ -0,0 +1,30 @@
+const translation = {
+  custom: 'Özelleştirme',
+  upgradeTip: {
+    prefix: 'Markanızı özelleştirmek için planınızı yükseltin',
+    suffix: '.',
+  },
+  webapp: {
+    title: 'WebApp markasını özelleştir',
+    removeBrand: 'Powered by Dify\'i kaldır',
+    changeLogo: 'Powered by Brand Resmini Değiştir',
+    changeLogoTip: 'SVG veya PNG formatında, en az 40x40px boyutunda',
+  },
+  app: {
+    title: 'Uygulama başlığı markasını özelleştir',
+    changeLogoTip: 'SVG veya PNG formatında, en az 80x80px boyutunda',
+  },
+  upload: 'Yükle',
+  uploading: 'Yükleniyor',
+  uploadedFail: 'Resim yükleme başarısız oldu, lütfen tekrar yükleyin.',
+  change: 'Değiştir',
+  apply: 'Uygula',
+  restore: 'Varsayılan Ayarları Geri Yükle',
+  customize: {
+    contactUs: ' bizimle iletişime geçin ',
+    prefix: 'Uygulama içindeki marka logosunu özelleştirmek için, lütfen',
+    suffix: 'Enterprise sürümüne yükseltin.',
+  },
+}
+
+export default translation

+ 161 - 0
web/i18n/tr-TR/dataset-creation.ts

@@ -0,0 +1,161 @@
+const translation = {
+  steps: {
+    header: {
+      creation: 'Bilgi Oluştur',
+      update: 'Veri ekle',
+    },
+    one: 'Veri kaynağı seçin',
+    two: 'Metin Ön İşleme ve Temizleme',
+    three: 'Çalıştır ve Bitir',
+  },
+  error: {
+    unavailable: 'Bu Bilgi kullanılamıyor',
+  },
+  firecrawl: {
+    configFirecrawl: '🔥Firecrawl\'ı Yapılandır',
+    apiKeyPlaceholder: 'firecrawl.dev\'den API anahtarı',
+    getApiKeyLinkText: 'API anahtarınızı firecrawl.dev\'den alın',
+  },
+  stepOne: {
+    filePreview: 'Dosya Önizleme',
+    pagePreview: 'Sayfa Önizleme',
+    dataSourceType: {
+      file: 'Dosyadan içe aktar',
+      notion: 'Notion\'dan senkronize et',
+      web: 'Web sitesinden senkronize et',
+    },
+    uploader: {
+      title: 'Dosya yükle',
+      button: 'Dosyayı sürükleyip bırakın veya',
+      browse: 'Göz atın',
+      tip: 'Destekler {{supportTypes}}. Her biri en fazla {{size}}MB.',
+      validation: {
+        typeError: 'Dosya tipi desteklenmiyor',
+        size: 'Dosya çok büyük. Maksimum {{size}} MB',
+        count: 'Birden fazla dosya desteklenmiyor',
+        filesNumber: 'Toplu yükleme sınırına ulaştınız, {{filesNumber}} dosya.',
+      },
+      cancel: 'İptal',
+      change: 'Değiştir',
+      failed: 'Yükleme başarısız',
+    },
+    notionSyncTitle: 'Notion bağlı değil',
+    notionSyncTip: 'Notion ile senkronize etmek için önce Notion\'a bağlanılmalıdır.',
+    connect: 'Bağlanmaya git',
+    button: 'Sonraki',
+    emptyDatasetCreation: 'Boş bir bilgi oluşturmak istiyorum',
+    modal: {
+      title: 'Boş bir bilgi oluştur',
+      tip: 'Boş bir bilgi hiçbir belge içermeyecektir ve dilediğiniz zaman belge yükleyebilirsiniz.',
+      input: 'Bilgi adı',
+      placeholder: 'Lütfen girin',
+      nameNotEmpty: 'Ad boş olamaz',
+      nameLengthInvaild: 'Ad 1 ile 40 karakter arasında olmalıdır',
+      cancelButton: 'İptal',
+      confirmButton: 'Oluştur',
+      failed: 'Oluşturma başarısız',
+    },
+    website: {
+      fireCrawlNotConfigured: 'Firecrawl yapılandırılmamış',
+      fireCrawlNotConfiguredDescription: 'Firecrawl\'ı kullanmak için API anahtarı ile yapılandırın.',
+      configure: 'Yapılandır',
+      run: 'Çalıştır',
+      firecrawlTitle: '🔥Firecrawl ile web içeriğini çıkarın',
+      firecrawlDoc: 'Firecrawl dokümanları',
+      firecrawlDocLink: 'https://docs.dify.ai/guides/knowledge-base/sync-from-website',
+      options: 'Seçenekler',
+      crawlSubPage: 'Alt sayfaları tarayın',
+      limit: 'Sınır',
+      maxDepth: 'Maksimum derinlik',
+      excludePaths: 'Yolları hariç tut',
+      includeOnlyPaths: 'Yalnızca yolları dahil et',
+      extractOnlyMainContent: 'Sadece ana içeriği çıkar (başlıklar, navigasyonlar, altbilgiler vb. yok)',
+      exceptionErrorTitle: 'Firecrawl işi çalıştırılırken bir istisna meydana geldi:',
+      unknownError: 'Bilinmeyen hata',
+      totalPageScraped: 'Toplam kazınan sayfa:',
+      selectAll: 'Hepsini Seç',
+      resetAll: 'Hepsini Sıfırla',
+      scrapTimeInfo: 'Toplam {{total}} sayfa {{time}}s içinde kazındı',
+      preview: 'Önizleme',
+      maxDepthTooltip: 'Girilen URL\'ye göre tarama için maksimum derinlik. Derinlik 0 sadece girilen url sayfasını kazır, derinlik 1 url ve girilen URL + bir / \'dan sonraki her şeyi kazır ve böyle devam eder.',
+    },
+  },
+  stepTwo: {
+    segmentation: 'Parçalanma ayarları',
+    auto: 'Otomatik',
+    autoDescription: 'Parçalanma ve ön işleme kurallarını otomatik olarak ayarlayın. Bilgisiz kullanıcıların bunu seçmesi önerilir.',
+    custom: 'Özel',
+    customDescription: 'Parçalanma kurallarını, parçalanma uzunluğunu ve ön işleme kurallarını kişiselleştirin.',
+    separator: 'Parçalanma belirleyicisi',
+    separatorPlaceholder: 'Örneğin, yeni satır (\\\\n) veya özel ayırıcı (örn. "***")',
+    maxLength: 'Maksimum parça uzunluğu',
+    overlap: 'Parça örtüşmesi',
+    overlapTip: 'Parça örtüşmesini ayarlamak, aralarındaki anlamsal bağı koruyabilir, geri alım etkisini artırır. Maksimum parça boyutunun %10-%25\'ini ayarlamanız önerilir.',
+    overlapCheck: 'parça örtüşmesi maksimum parça uzunluğundan büyük olmamalıdır',
+    rules: 'Metin ön işleme kuralları',
+    removeExtraSpaces: 'Art arda gelen boşlukları, yeni satırları ve sekmeleri değiştirin',
+    removeUrlEmails: 'Tüm URL\'leri ve e-posta adreslerini silin',
+    removeStopwords: '"a", "an", "the" gibi durdurma kelimelerini silin',
+    preview: 'Onayla ve Önizleme',
+    reset: 'Sıfırla',
+    indexMode: 'Dizin modu',
+    qualified: 'Yüksek Kalite',
+    recommend: 'Önerilen',
+    qualifiedTip: 'Kullanıcılar sorguladığında daha yüksek doğruluk sağlamak için varsayılan sistem yerleştirme arayüzünü çağırır.',
+    warning: 'Lütfen önce model sağlayıcı API anahtarını ayarlayın.',
+    click: 'Ayarlara git',
+    economical: 'Ekonomik',
+    economicalTip: 'Doğruluğu azaltmak için çevrimdışı vektör motorlarını, anahtar kelime dizinlerini vb. kullanın, token harcamadan',
+    QATitle: 'Soru ve Yanıt formatında parçalama',
+    QATip: 'Bu seçeneği etkinleştirmek daha fazla token tüketecektir',
+    QALanguage: 'Kullanarak parçalara ayır',
+    emstimateCost: 'Tahmin',
+    emstimateSegment: 'Tahmini parçalar',
+    segmentCount: 'parçalar',
+    calculating: 'Hesaplanıyor...',
+    fileSource: 'Belgeleri ön işleme',
+    notionSource: 'Sayfaları ön işleme',
+    websiteSource: 'Web sitesini ön işleme',
+    other: 've diğer',
+    fileUnit: ' dosyalar',
+    notionUnit: ' sayfalar',
+    webpageUnit: ' sayfalar',
+    previousStep: 'Önceki adım',
+    nextStep: 'Kaydet ve İşle',
+    save: 'Kaydet ve İşle',
+    cancel: 'İptal',
+    sideTipTitle: 'Neden parçalanma ve ön işleme?',
+    sideTipP1: 'Metin verileri işlerken, parçalama ve temizleme iki önemli ön işleme adımıdır.',
+    sideTipP2: 'Parçalanma, uzun metinleri paragraflara böler, böylece modeller daha iyi anlayabilir. Bu, model sonuçlarının kalitesini ve alaka düzeyini artırır.',
+    sideTipP3: 'Temizleme, gereksiz karakterleri ve formatları kaldırarak Bilginin daha temiz ve daha kolay analiz edilmesini sağlar.',
+    sideTipP4: 'Uygun parçalama ve temizleme, model performansını iyileştirir, daha doğru ve değerli sonuçlar sağlar.',
+    previewTitle: 'Önizleme',
+    previewTitleButton: 'Önizleme',
+    previewButton: 'Q&A formatına geçiş',
+    previewSwitchTipStart: 'Geçerli parça önizlemesi metin formatındadır, soru ve yanıt formatına geçiş ek tüketir',
+    previewSwitchTipEnd: 'token',
+    characters: 'karakterler',
+    indexSettedTip: 'Dizin yöntemini değiştirmek için, lütfen',
+    retrivalSettedTip: 'Dizin yöntemini değiştirmek için, lütfen',
+    datasetSettingLink: 'Bilgi ayarlarına gidin.',
+  },
+  stepThree: {
+    creationTitle: '🎉 Bilgi oluşturuldu',
+    creationContent: 'Bilginin adını otomatik olarak belirledik, dilediğiniz zaman değiştirebilirsiniz',
+    label: 'Bilgi adı',
+    additionTitle: '🎉 Belge yüklendi',
+    additionP1: 'Belge Bilgi\'ye yüklendi',
+    additionP2: ', bilgi listesinden bulabilirsiniz.',
+    stop: 'İşlemeyi durdur',
+    resume: 'İşlemeye devam et',
+    navTo: 'Belgeye git',
+    sideTipTitle: 'Sırada ne var',
+    sideTipContent: 'Belge dizine ekleme işlemi bittikten sonra Bilgi, bağlam olarak uygulamaya entegre edilebilir. Prompt düzenleme sayfasında bağlam ayarlarını bulabilirsiniz. Ayrıca bağımsız bir ChatGPT dizinleme eklentisi olarak yayınlamak için de oluşturabilirsiniz.',
+    modelTitle: 'Yerleştirmeyi durdurmak istediğinize emin misiniz?',
+    modelContent: 'İşlemeye daha sonra devam etmeniz gerekirse, kaldığınız yerden devam edeceksiniz.',
+    modelButtonConfirm: 'Onayla',
+    modelButtonCancel: 'İptal',
+  },
+}
+
+export default translation

+ 351 - 0
web/i18n/tr-TR/dataset-documents.ts

@@ -0,0 +1,351 @@
+const translation = {
+  list: {
+    title: 'Belgeler',
+    desc: 'Bilginin tüm dosyaları burada gösterilir ve Bilginin tamamı Dify alıntılarına veya Sohbet eklentisi üzerinden dizine eklenebilir.',
+    addFile: 'Dosya Ekle',
+    addPages: 'Sayfa Ekle',
+    addUrl: 'URL Ekle',
+    table: {
+      header: {
+        fileName: 'DOSYA ADI',
+        words: 'KELİMELER',
+        hitCount: 'GERİ ALIM SAYISI',
+        uploadTime: 'YÜKLEME ZAMANI',
+        status: 'DURUM',
+        action: 'EYLEM',
+      },
+      rename: 'Yeniden Adlandır',
+      name: 'Ad',
+    },
+    action: {
+      uploadFile: 'Yeni dosya yükle',
+      settings: 'Segment ayarları',
+      addButton: 'Parça ekle',
+      add: 'Bir parça ekle',
+      batchAdd: 'Toplu ekle',
+      archive: 'Arşivle',
+      unarchive: 'Arşivden Çıkar',
+      delete: 'Sil',
+      enableWarning: 'Arşivlenmiş dosya etkinleştirilemez',
+      sync: 'Senkronize et',
+    },
+    index: {
+      enable: 'Etkinleştir',
+      disable: 'Devre Dışı Bırak',
+      all: 'Hepsi',
+      enableTip: 'Dosya dizine eklenebilir',
+      disableTip: 'Dosya dizine eklenemez',
+    },
+    status: {
+      queuing: 'Kuyrukta',
+      indexing: 'Dizine Ekleniyor',
+      paused: 'Durduruldu',
+      error: 'Hata',
+      available: 'Kullanılabilir',
+      enabled: 'Etkin',
+      disabled: 'Devre Dışı',
+      archived: 'Arşivlendi',
+    },
+    empty: {
+      title: 'Henüz belge yok',
+      upload: {
+        tip: 'Dosya yükleyebilir, web sitesinden veya Notion, GitHub gibi web uygulamalarından senkronize edebilirsiniz.',
+      },
+      sync: {
+        tip: 'Dify, Notion\'dan periyodik olarak dosyaları indirir ve işlemeyi tamamlar.',
+      },
+    },
+    delete: {
+      title: 'Silmek istediğinize emin misiniz?',
+      content: 'İşlemeye daha sonra devam etmeniz gerekirse, kaldığınız yerden devam edeceksiniz',
+    },
+    batchModal: {
+      title: 'Toplu parçalar ekle',
+      csvUploadTitle: 'CSV dosyanızı buraya sürükleyip bırakın ya da ',
+      browse: 'göz atın',
+      tip: 'CSV dosyası şu yapıya uygun olmalıdır:',
+      question: 'soru',
+      answer: 'cevap',
+      contentTitle: 'parça içeriği',
+      content: 'içerik',
+      template: 'Şablonu buradan indir',
+      cancel: 'İptal',
+      run: 'Toplu İşlemi Çalıştır',
+      runError: 'Toplu işlem başarısız oldu',
+      processing: 'Toplu işlemde',
+      completed: 'İçe aktarma tamamlandı',
+      error: 'İçe Aktarma Hatası',
+      ok: 'Tamam',
+    },
+  },
+  metadata: {
+    title: 'Meta Veri',
+    desc: 'Belgeler için meta veri etiketleme, AI\'ın bunlara zamanında erişmesini sağlar ve kullanıcılar için referansların kaynağını ortaya çıkarır.',
+    dateTimeFormat: 'MMMM D, YYYY ss:dd ÖÖ/ÖS',
+    docTypeSelectTitle: 'Lütfen bir belge türü seçin',
+    docTypeChangeTitle: 'Belge türünü değiştir',
+    docTypeSelectWarning: 'Belge türü değiştirilirse, şimdi doldurulan meta veriler artık korunmayacaktır',
+    firstMetaAction: 'Hadi başlayalım',
+    placeholder: {
+      add: 'Ekle ',
+      select: 'Seç ',
+    },
+    source: {
+      upload_file: 'Dosya Yükle',
+      notion: 'Notion\'dan Senkronize Et',
+      github: 'GitHub\'dan Senkronize Et',
+    },
+    type: {
+      book: 'Kitap',
+      webPage: 'Web Sayfası',
+      paper: 'Makale',
+      socialMediaPost: 'Sosyal Medya Paylaşımı',
+      personalDocument: 'Kişisel Belge',
+      businessDocument: 'İş Belgesi',
+      IMChat: 'IM Sohbet',
+      wikipediaEntry: 'Wikipedia Girişi',
+      notion: 'Notion\'dan Senkronize Et',
+      github: 'GitHub\'dan Senkronize Et',
+      technicalParameters: 'Teknik Parametreler',
+    },
+    field: {
+      processRule: {
+        processDoc: 'Belgeyi İşle',
+        segmentRule: 'Parça Kuralı',
+        segmentLength: 'Parça Uzunluğu',
+        processClean: 'Metin İşleme Temizliği',
+      },
+      book: {
+        title: 'Başlık',
+        language: 'Dil',
+        author: 'Yazar',
+        publisher: 'Yayıncı',
+        publicationDate: 'Yayın Tarihi',
+        ISBN: 'ISBN',
+        category: 'Kategori',
+      },
+      webPage: {
+        title: 'Başlık',
+        url: 'URL',
+        language: 'Dil',
+        authorPublisher: 'Yazar/Yayıncı',
+        publishDate: 'Yayın Tarihi',
+        topicsKeywords: 'Konular/Anahtar Kelimeler',
+        description: 'Açıklama',
+      },
+      paper: {
+        title: 'Başlık',
+        language: 'Dil',
+        author: 'Yazar',
+        publishDate: 'Yayın Tarihi',
+        journalConferenceName: 'Dergi/Konferans Adı',
+        volumeIssuePage: 'Cilt/Sayı/Sayfa',
+        DOI: 'DOI',
+        topicsKeywords: 'Konular/Anahtar Kelimeler',
+        abstract: 'Özet',
+      },
+      socialMediaPost: {
+        platform: 'Platform',
+        authorUsername: 'Yazar/Kullanıcı adı',
+        publishDate: 'Yayın Tarihi',
+        postURL: 'Gönderi URL\'si',
+        topicsTags: 'Konular/Etiketler',
+      },
+      personalDocument: {
+        title: 'Başlık',
+        author: 'Yazar',
+        creationDate: 'Oluşturma Tarihi',
+        lastModifiedDate: 'Son Değiştirme Tarihi',
+        documentType: 'Belge Türü',
+        tagsCategory: 'Etiketler/Kategori',
+      },
+      businessDocument: {
+        title: 'Başlık',
+        author: 'Yazar',
+        creationDate: 'Oluşturma Tarihi',
+        lastModifiedDate: 'Son Değiştirme Tarihi',
+        documentType: 'Belge Türü',
+        departmentTeam: 'Bölüm/Takım',
+      },
+      IMChat: {
+        chatPlatform: 'Sohbet Platformu',
+        chatPartiesGroupName: 'Sohbet Tarafları/Grup Adı',
+        participants: 'Katılımcılar',
+        startDate: 'Başlangıç Tarihi',
+        endDate: 'Bitiş Tarihi',
+        topicsKeywords: 'Konular/Anahtar Kelimeler',
+        fileType: 'Dosya Türü',
+      },
+      wikipediaEntry: {
+        title: 'Başlık',
+        language: 'Dil',
+        webpageURL: 'Web Sayfası URL\'si',
+        editorContributor: 'Editör/Katılımcı',
+        lastEditDate: 'Son Düzenleme Tarihi',
+        summaryIntroduction: 'Özet/Giriş',
+      },
+      notion: {
+        title: 'Başlık',
+        language: 'Dil',
+        author: 'Yazar',
+        createdTime: 'Oluşturulma Zamanı',
+        lastModifiedTime: 'Son Değiştirilme Zamanı',
+        url: 'URL',
+        tag: 'Etiket',
+        description: 'Açıklama',
+      },
+      github: {
+        repoName: 'Depo Adı',
+        repoDesc: 'Depo Açıklaması',
+        repoOwner: 'Depo Sahibi',
+        fileName: 'Dosya Adı',
+        filePath: 'Dosya Yolu',
+        programmingLang: 'Programlama Dili',
+        url: 'URL',
+        license: 'Lisans',
+        lastCommitTime: 'Son Commit Zamanı',
+        lastCommitAuthor: 'Son Commit Yazar',
+      },
+      originInfo: {
+        originalFilename: 'Orijinal dosya adı',
+        originalFileSize: 'Orijinal dosya boyutu',
+        uploadDate: 'Yükleme tarihi',
+        lastUpdateDate: 'Son güncelleme tarihi',
+        source: 'Kaynak',
+      },
+      technicalParameters: {
+        segmentSpecification: 'Parçalar spesifikasyonu',
+        segmentLength: 'Parçalar uzunluğu',
+        avgParagraphLength: 'Ort. paragraf uzunluğu',
+        paragraphs: 'Paragraflar',
+        hitCount: 'Geri alım sayısı',
+        embeddingTime: 'Yerleştirme zamanı',
+        embeddedSpend: 'Yerleştirme harcaması',
+      },
+    },
+    languageMap: {
+      zh: 'Çince',
+      en: 'İngilizce',
+      es: 'İspanyolca',
+      fr: 'Fransızca',
+      de: 'Almanca',
+      ja: 'Japonca',
+      ko: 'Korece',
+      ru: 'Rusça',
+      ar: 'Arapça',
+      pt: 'Portekizce',
+      it: 'İtalyanca',
+      nl: 'Flemenkçe',
+      pl: 'Lehçe',
+      sv: 'İsveççe',
+      tr: 'Türkçe',
+      he: 'İbranice',
+      hi: 'Hintçe',
+      da: 'Danca',
+      fi: 'Fince',
+      no: 'Norveççe',
+      hu: 'Macarca',
+      el: 'Yunanca',
+      cs: 'Çekçe',
+      th: 'Tayca',
+      id: 'Endonezce',
+    },
+    categoryMap: {
+      book: {
+        fiction: 'Kurgu',
+        biography: 'Biyografi',
+        history: 'Tarih',
+        science: 'Bilim',
+        technology: 'Teknoloji',
+        education: 'Eğitim',
+        philosophy: 'Felsefe',
+        religion: 'Din',
+        socialSciences: 'Sosyal Bilimler',
+        art: 'Sanat',
+        travel: 'Gezi',
+        health: 'Sağlık',
+        selfHelp: 'Kişisel Gelişim',
+        businessEconomics: 'İş ve Ekonomi',
+        cooking: 'Yemek',
+        childrenYoungAdults: 'Çocuk ve Genç Yetişkin',
+        comicsGraphicNovels: 'Çizgi Roman ve Grafik Roman',
+        poetry: 'Şiir',
+        drama: 'Drama',
+        other: 'Diğer',
+      },
+      personalDoc: {
+        notes: 'Notlar',
+        blogDraft: 'Blog Taslağı',
+        diary: 'Günlük',
+        researchReport: 'Araştırma Raporu',
+        bookExcerpt: 'Kitap Alıntısı',
+        schedule: 'Takvim',
+        list: 'Liste',
+        projectOverview: 'Proje Genel Bakış',
+        photoCollection: 'Fotoğraf Koleksiyonu',
+        creativeWriting: 'Yaratıcı Yazma',
+        codeSnippet: 'Kod Parçacığı',
+        designDraft: 'Tasarım Taslağı',
+        personalResume: 'Kişisel Özgeçmiş',
+        other: 'Diğer',
+      },
+      businessDoc: {
+        meetingMinutes: 'Toplantı Tutanakları',
+        researchReport: 'Araştırma Raporu',
+        proposal: 'Teklif',
+        employeeHandbook: 'Çalışan El Kitabı',
+        trainingMaterials: 'Eğitim Materyalleri',
+        requirementsDocument: 'Gereksinim Dokümanı',
+        designDocument: 'Tasarım Dokümanı',
+        productSpecification: 'Ürün Spesifikasyonu',
+        financialReport: 'Mali Rapor',
+        marketAnalysis: 'Pazar Analizi',
+        projectPlan: 'Proje Planı',
+        teamStructure: 'Takım Yapısı',
+        policiesProcedures: 'Politikalar ve Prosedürler',
+        contractsAgreements: 'Sözleşmeler ve Anlaşmalar',
+        emailCorrespondence: 'E-posta Yazışmaları',
+        other: 'Diğer',
+      },
+    },
+  },
+  embedding: {
+    processing: 'Yerleştirme işlemi...',
+    paused: 'Yerleştirme duraklatıldı',
+    completed: 'Yerleştirme tamamlandı',
+    error: 'Yerleştirme hatası',
+    docName: 'Belgeler işleniyor',
+    mode: 'Segmentasyon kuralı',
+    segmentLength: 'Parçalar uzunluğu',
+    textCleaning: 'Metin önişleme ve temizlik',
+    segments: 'Paragraflar',
+    highQuality: 'Yüksek kaliteli mod',
+    economy: 'Ekonomik mod',
+    estimate: 'Tahmini tüketim',
+    stop: 'İşlemi durdur',
+    resume: 'İşleme devam et',
+    automatic: 'Otomatik',
+    custom: 'Özel',
+    previewTip: 'Paragraf önizlemesi yerleştirme tamamlandıktan sonra kullanılabilir olacak',
+  },
+  segment: {
+    paragraphs: 'Paragraflar',
+    keywords: 'Anahtar Kelimeler',
+    addKeyWord: 'Anahtar kelime ekle',
+    keywordError: 'Anahtar kelimenin maksimum uzunluğu 20',
+    characters: 'karakter',
+    hitCount: 'Geri alım sayısı',
+    vectorHash: 'Vektör hash: ',
+    questionPlaceholder: 'soruyu buraya ekleyin',
+    questionEmpty: 'Soru boş olamaz',
+    answerPlaceholder: 'cevabı buraya ekleyin',
+    answerEmpty: 'Cevap boş olamaz',
+    contentPlaceholder: 'içeriği buraya ekleyin',
+    contentEmpty: 'İçerik boş olamaz',
+    newTextSegment: 'Yeni Metin Parçası',
+    newQaSegment: 'Yeni Soru-Cevap Parçası',
+    delete: 'Bu parçayı silmek istiyor musunuz?',
+  },
+}
+
+export default translation

+ 28 - 0
web/i18n/tr-TR/dataset-hit-testing.ts

@@ -0,0 +1,28 @@
+const translation = {
+  title: 'Geri Alım Testi',
+  desc: 'Verilen sorgu metnine göre Bilginin isabet etkisini test edin.',
+  dateTimeFormat: 'GG/AA/YYYY ss:dd ÖÖ/ÖS',
+  recents: 'Sonuçlar',
+  table: {
+    header: {
+      source: 'Kaynak',
+      text: 'Metin',
+      time: 'Zaman',
+    },
+  },
+  input: {
+    title: 'Kaynak metin',
+    placeholder: 'Bir metin girin, kısa bir bildirim cümlesi önerilir.',
+    countWarning: 'En fazla 200 karakter.',
+    indexWarning: 'Yüksek kaliteli Bilgi sadece.',
+    testing: 'Test Ediliyor',
+  },
+  hit: {
+    title: 'GERİ ALINAN PARAGRAFLAR',
+    emptyTip: 'Geri Alım Testi sonuçları burada gösterilecektir',
+  },
+  noRecentTip: 'Burada son sorgu sonuçları yok',
+  viewChart: 'VEKTÖR GRAFİĞİNİ GÖRÜNTÜLE',
+}
+
+export default translation

+ 35 - 0
web/i18n/tr-TR/dataset-settings.ts

@@ -0,0 +1,35 @@
+const translation = {
+  title: 'Bilgi ayarları',
+  desc: 'Burada Bilginin özelliklerini ve çalışma yöntemlerini değiştirebilirsiniz.',
+  form: {
+    name: 'Bilgi İsmi',
+    namePlaceholder: 'Bilgi ismini girin',
+    nameError: 'İsim boş olamaz',
+    desc: 'Bilgi açıklaması',
+    descInfo: 'Lütfen Bilginin içeriğini özetlemek için net bir metinsel açıklama yazın. Bu açıklama, çıkarım için birden fazla Bilgi arasından seçim yaparken eşleştirme temeli olarak kullanılacaktır.',
+    descPlaceholder: 'Bu Bilginin içeriğini açıklayın. Ayrıntılı bir açıklama, AI\'nın Bilginin içeriğine zamanında erişmesini sağlar. Boş bırakılırsa, Dify varsayılan isabet stratejisini kullanır.',
+    descWrite: 'İyi bir Bilgi açıklamasının nasıl yazılacağını öğrenin.',
+    permissions: 'İzinler',
+    permissionsOnlyMe: 'Sadece ben',
+    permissionsAllMember: 'Tüm takım üyeleri',
+    permissionsInvitedMembers: 'Bazı takım üyeleri',
+    me: '(Siz)',
+    indexMethod: 'Dizin Yöntemi',
+    indexMethodHighQuality: 'Yüksek Kalite',
+    indexMethodHighQualityTip: 'Kullanıcılar sorguladığında daha yüksek doğruluk sağlamak için Yerleştirme modelini çağırır.',
+    indexMethodEconomy: 'Ekonomik',
+    indexMethodEconomyTip: 'Doğruluğu azaltmak için çevrimdışı vektör motorları, anahtar kelime dizinleri vb. kullanın, token harcamadan',
+    embeddingModel: 'Yerleştirme Modeli',
+    embeddingModelTip: 'Yerleştirme modelini değiştirmek için, lütfen ',
+    embeddingModelTipLink: 'Ayarlar\'a gidin',
+    retrievalSetting: {
+      title: 'Geri Alım Ayarı',
+      learnMore: 'Daha fazla bilgi edinin',
+      description: ' geri alım yöntemi hakkında.',
+      longDescription: ' geri alım yöntemi hakkında, bunu Bilgi ayarlarında istediğiniz zaman değiştirebilirsiniz.',
+    },
+    save: 'Kaydet',
+  },
+}
+
+export default translation

+ 73 - 0
web/i18n/tr-TR/dataset.ts

@@ -0,0 +1,73 @@
+const translation = {
+  knowledge: 'Bilgi',
+  documentCount: ' belge',
+  wordCount: ' k kelime',
+  appCount: ' bağlı uygulamalar',
+  createDataset: 'Bilgi Oluştur',
+  createDatasetIntro: 'Kendi metin verilerinizi içe aktarın veya Webhook aracılığıyla gerçek zamanlı olarak veri yazın, LLM bağlamını geliştirin.',
+  deleteDatasetConfirmTitle: 'Bu Bilgi\'yi silmek istiyor musunuz?',
+  deleteDatasetConfirmContent:
+    'Bilginin silinmesi geri alınamaz. Kullanıcılar artık Bilginize erişemeyecek ve tüm prompt yapılandırmaları ve günlükler kalıcı olarak silinecektir.',
+  datasetUsedByApp: 'Bilgi bazı uygulamalar tarafından kullanılıyor. Uygulamalar artık bu Bilgiyi kullanamayacak ve tüm prompt yapılandırmaları ve günlükler kalıcı olarak silinecektir.',
+  datasetDeleted: 'Bilgi silindi',
+  datasetDeleteFailed: 'Bilgi silinemedi',
+  didYouKnow: 'Biliyor muydunuz?',
+  intro1: 'Bilgi, Dify uygulamasına ',
+  intro2: 'bağlam olarak',
+  intro3: ' entegre edilebilir,',
+  intro4: 'veya ',
+  intro5: 'bağımsız bir ChatGPT dizin eklentisi olarak oluşturulabilir',
+  intro6: ' ve yayınlanabilir.',
+  unavailable: 'Kullanılamıyor',
+  unavailableTip: 'Yerleştirme modeli mevcut değil, varsayılan yerleştirme modelinin yapılandırılması gerekiyor',
+  datasets: 'BİLGİ',
+  datasetsApi: 'API ERİŞİMİ',
+  retrieval: {
+    semantic_search: {
+      title: 'Vektör Arama',
+      description: 'Sorgu yerleştirmelerini oluşturun ve vektör temsiline en benzeyen metin parçasını arayın.',
+    },
+    full_text_search: {
+      title: 'Tam Metin Arama',
+      description: 'Belgelerdeki tüm terimleri dizinleyerek, kullanıcıların herhangi bir terimi aramasına ve bu terimleri içeren ilgili metin parçasını geri almasına olanak tanır.',
+    },
+    hybrid_search: {
+      title: 'Hibrit Arama',
+      description: 'Tam metin arama ve vektör aramalarını aynı anda çalıştırın, kullanıcı sorgusu için en iyi eşleşmeyi seçmek için yeniden sıralayın. Kullanıcılar ağırlıklar ayarlayabilir veya bir Yeniden Sıralama modeli yapılandırabilir.',
+      recommend: 'Önerilir',
+    },
+    invertedIndex: {
+      title: 'Ters Dizine Kayıt',
+      description: 'Ters Dizine Kayıt, verimli geri alım için kullanılan bir yapıdır. Terimlere göre düzenlenir ve her terim, onu içeren belgelere veya web sayfalarına işaret eder.',
+    },
+    change: 'Değiştir',
+    changeRetrievalMethod: 'Geri alma yöntemini değiştir',
+  },
+  docsFailedNotice: 'belgeler dizine eklenemedi',
+  retry: 'Yeniden Dene',
+  indexingTechnique: {
+    high_quality: 'Yüksek Kalite',
+    economy: 'Ekonomi',
+  },
+  indexingMethod: {
+    semantic_search: 'VEKTÖR',
+    full_text_search: 'TAM METİN',
+    hybrid_search: 'HİBRİT',
+  },
+  mixtureHighQualityAndEconomicTip: 'Yüksek kaliteli ve ekonomik bilgi tabanlarının karışımı için Yeniden Sıralama modeli gereklidir.',
+  inconsistentEmbeddingModelTip: 'Seçilen bilgi tabanlarının Yerleştirme modelleri tutarsızsa Yeniden Sıralama modeli gereklidir.',
+  retrievalSettings: 'Geri Alım Ayarı',
+  rerankSettings: 'Yeniden Sıralama Ayarı',
+  weightedScore: {
+    title: 'Ağırlıklı Puan',
+    description: 'Verilen ağırlıkları ayarlayarak bu yeniden sıralama stratejisi, anlamsal mı yoksa anahtar kelime eşleştirmesini mi önceliklendireceğini belirler.',
+    semanticFirst: 'Anlamsal Öncelikli',
+    keywordFirst: 'Anahtar Kelime Öncelikli',
+    customized: 'Özelleştirilmiş',
+    semantic: 'Anlamsal',
+    keyword: 'Anahtar Kelime',
+  },
+  nTo1RetrievalLegacy: 'Geri alım stratejisinin optimizasyonu ve yükseltilmesi nedeniyle, N-to-1 geri alımı Eylül ayında resmi olarak kullanım dışı kalacaktır. O zamana kadar normal şekilde kullanabilirsiniz.',
+}
+
+export default translation

+ 41 - 0
web/i18n/tr-TR/explore.ts

@@ -0,0 +1,41 @@
+const translation = {
+  title: 'Keşfet',
+  sidebar: {
+    discovery: 'Keşif',
+    chat: 'Sohbet',
+    workspace: 'Çalışma Alanı',
+    action: {
+      pin: 'Sabitle',
+      unpin: 'Sabitlemeyi Kaldır',
+      rename: 'Yeniden Adlandır',
+      delete: 'Sil',
+    },
+    delete: {
+      title: 'Uygulamayı sil',
+      content: 'Bu uygulamayı silmek istediğinizden emin misiniz?',
+    },
+  },
+  apps: {
+    title: 'Dify Tarafından Keşfet Uygulamaları',
+    description: 'Bu şablon uygulamalarını anında kullanın veya şablonlara dayalı kendi uygulamalarınızı özelleştirin.',
+    allCategories: 'Önerilen',
+  },
+  appCard: {
+    addToWorkspace: 'Çalışma Alanına Ekle',
+    customize: 'Özelleştir',
+  },
+  appCustomize: {
+    title: '{{name}} uygulamasından uygulama oluştur',
+    subTitle: 'Uygulama simgesi ve ismi',
+    nameRequired: 'Uygulama ismi gereklidir',
+  },
+  category: {
+    Assistant: 'Asistan',
+    Writing: 'Yazma',
+    Translate: 'Çeviri',
+    Programming: 'Programlama',
+    HR: 'İK',
+  },
+}
+
+export default translation

+ 3 - 0
web/i18n/tr-TR/layout.ts

@@ -0,0 +1,3 @@
+const translation = {}
+
+export default translation

+ 75 - 0
web/i18n/tr-TR/login.ts

@@ -0,0 +1,75 @@
+const translation = {
+  pageTitle: 'Hey, başlayalım!👋',
+  welcome: 'Dify\'ye hoş geldiniz, devam etmek için lütfen giriş yapın.',
+  email: 'E-posta adresi',
+  emailPlaceholder: 'E-postanız',
+  password: 'Şifre',
+  passwordPlaceholder: 'Şifreniz',
+  name: 'Kullanıcı adı',
+  namePlaceholder: 'Kullanıcı adınız',
+  forget: 'Şifrenizi mi unuttunuz?',
+  signBtn: 'Giriş yap',
+  sso: 'SSO ile devam et',
+  installBtn: 'Kurulum',
+  setAdminAccount: 'Yönetici hesabı ayarlama',
+  setAdminAccountDesc: 'Yönetici hesabı için maksimum ayrıcalıklar, uygulama oluşturma ve LLM sağlayıcılarını yönetme gibi işlemler için kullanılabilir.',
+  createAndSignIn: 'Oluştur ve giriş yap',
+  oneMoreStep: 'Bir adım kaldı',
+  createSample: 'Bu bilgilere dayanarak, sizin için örnek bir uygulama oluşturacağız',
+  invitationCode: 'Davet Kodu',
+  invitationCodePlaceholder: 'Davet kodunuz',
+  interfaceLanguage: 'Arayüz Dili',
+  timezone: 'Zaman dilimi',
+  go: 'Dify\'ye git',
+  sendUsMail: 'Tanıtımınızı e-posta ile gönderin, davet talebini işleme alalım.',
+  acceptPP: 'Gizlilik politikasını okudum ve kabul ediyorum',
+  reset: 'Şifrenizi sıfırlamak için şu komutu çalıştırın',
+  withGitHub: 'GitHub ile devam et',
+  withGoogle: 'Google ile devam et',
+  rightTitle: 'LLM\'nin tam potansiyelini ortaya çıkarın',
+  rightDesc: 'Görsel olarak çekici, çalışılabilir ve iyileştirilebilir AI uygulamaları oluşturun.',
+  tos: 'Hizmet Şartları',
+  pp: 'Gizlilik Politikası',
+  tosDesc: 'Kaydolarak, Hizmet Şartlarımızı kabul etmiş olursunuz',
+  goToInit: 'Hesabı başlatmadıysanız, lütfen başlatma sayfasına gidin',
+  donthave: 'Sahip değil misiniz?',
+  invalidInvitationCode: 'Geçersiz davet kodu',
+  accountAlreadyInited: 'Hesap zaten başlatılmış',
+  forgotPassword: 'Şifrenizi mi unuttunuz?',
+  resetLinkSent: 'Sıfırlama bağlantısı gönderildi',
+  sendResetLink: 'Sıfırlama bağlantısı gönder',
+  backToSignIn: 'Girişe dön',
+  forgotPasswordDesc: 'Şifrenizi sıfırlamak için e-posta adresinizi girin. Şifrenizi nasıl sıfırlayacağınıza dair talimatları içeren bir e-posta göndereceğiz.',
+  checkEmailForResetLink: 'Şifrenizi sıfırlamak için bir bağlantı içeren e-postayı kontrol edin. Birkaç dakika içinde görünmezse, spam klasörünüzü kontrol ettiğinizden emin olun.',
+  passwordChanged: 'Şimdi giriş yapın',
+  changePassword: 'Şifre Değiştir',
+  changePasswordTip: 'Hesabınız için yeni bir şifre girin',
+  invalidToken: 'Geçersiz veya süresi dolmuş token',
+  confirmPassword: 'Şifreyi Onayla',
+  confirmPasswordPlaceholder: 'Yeni şifrenizi onaylayın',
+  passwordChangedTip: 'Şifreniz başarıyla değiştirildi',
+  error: {
+    emailEmpty: 'E-posta adresi gereklidir',
+    emailInValid: 'Geçerli bir e-posta adresi girin',
+    nameEmpty: 'İsim gereklidir',
+    passwordEmpty: 'Şifre gereklidir',
+    passwordLengthInValid: 'Şifre en az 8 karakterden oluşmalıdır',
+    passwordInvalid: 'Şifre harf ve rakamlardan oluşmalı ve uzunluğu 8 karakterden fazla olmalıdır',
+  },
+  license: {
+    tip: 'Dify Community Edition\'ı başlatmadan önce GitHub\'daki',
+    link: 'Açık Kaynak Lisansını',
+  },
+  join: 'Katıl',
+  joinTipStart: 'Sizi',
+  joinTipEnd: 'takımına davet ediyor',
+  invalid: 'Bağlantı süresi doldu',
+  explore: 'Dify\'yi Keşfet',
+  activatedTipStart: 'Katıldınız',
+  activatedTipEnd: 'takımına',
+  activated: 'Şimdi giriş yapın',
+  adminInitPassword: 'Yönetici başlangıç şifresi',
+  validate: 'Doğrula',
+}
+
+export default translation

+ 3 - 0
web/i18n/tr-TR/register.ts

@@ -0,0 +1,3 @@
+const translation = {}
+
+export default translation

+ 29 - 0
web/i18n/tr-TR/run-log.ts

@@ -0,0 +1,29 @@
+const translation = {
+  input: 'GİRİŞ',
+  result: 'SONUÇ',
+  detail: 'DETAY',
+  tracing: 'İZLEME',
+  resultPanel: {
+    status: 'DURUM',
+    time: 'GEÇEN ZAMAN',
+    tokens: 'TOPLAM TOKEN',
+  },
+  meta: {
+    title: 'METADATA',
+    status: 'Durum',
+    version: 'Sürüm',
+    executor: 'Yürütücü',
+    startTime: 'Başlama Zamanı',
+    time: 'Geçen Zaman',
+    tokens: 'Toplam Token',
+    steps: 'Çalıştırma Adımları',
+  },
+  resultEmpty: {
+    title: 'Bu çalıştırma sadece JSON formatında çıktı verdi,',
+    tipLeft: 'lütfen ',
+    link: 'detay paneli',
+    tipRight: 'ne gidin ve görüntüleyin.',
+  },
+}
+
+export default translation

+ 70 - 0
web/i18n/tr-TR/share-app.ts

@@ -0,0 +1,70 @@
+const translation = {
+  common: {
+    welcome: '',
+    appUnavailable: 'Uygulama kullanılamıyor',
+    appUnkonwError: 'Uygulama kullanılamıyor',
+  },
+  chat: {
+    newChat: 'Yeni sohbet',
+    pinnedTitle: 'Sabitlenmiş',
+    unpinnedTitle: 'Sohbetler',
+    newChatDefaultName: 'Yeni konuşma',
+    resetChat: 'Konuşmayı sıfırla',
+    powerBy: 'Tarafından desteklenmektedir',
+    prompt: 'Prompt',
+    privatePromptConfigTitle: 'Konuşma ayarları',
+    publicPromptConfigTitle: 'Başlangıç Promptu',
+    configStatusDes: 'Başlamadan önce, konuşma ayarlarını değiştirebilirsiniz',
+    configDisabled: 'Bu oturum için önceki oturum ayarları kullanılmıştır.',
+    startChat: 'Sohbete Başla',
+    privacyPolicyLeft: 'Lütfen okuyun',
+    privacyPolicyMiddle: 'gizlilik politikası',
+    privacyPolicyRight: 'uygulama geliştiricisi tarafından sağlanmıştır.',
+    deleteConversation: {
+      title: 'Konuşmayı sil',
+      content: 'Bu konuşmayı silmek istediğinize emin misiniz?',
+    },
+    tryToSolve: 'Çözmeyi Dene',
+    temporarySystemIssue: 'Üzgünüz, geçici sistem sorunu.',
+  },
+  generation: {
+    tabs: {
+      create: 'Bir Kere Çalıştır',
+      batch: 'Toplu Çalıştır',
+      saved: 'Kaydedildi',
+    },
+    savedNoData: {
+      title: 'Henüz bir sonuç kaydetmediniz!',
+      description: 'İçerik oluşturmaya başlayın ve kaydedilen sonuçları burada bulun.',
+      startCreateContent: 'İçerik oluşturmayı başlat',
+    },
+    title: 'AI Tamamlama',
+    queryTitle: 'Sorgu içeriği',
+    completionResult: 'Tamamlama sonucu',
+    queryPlaceholder: 'Sorgu içeriğinizi yazın...',
+    run: 'Çalıştır',
+    copy: 'Kopyala',
+    resultTitle: 'AI Tamamlama',
+    noData: 'AI burada istediğinizi size verecek.',
+    csvUploadTitle: 'CSV dosyanızı buraya sürükleyip bırakın ya da ',
+    browse: 'göz atın',
+    csvStructureTitle: 'CSV dosyası şu yapıya uygun olmalıdır:',
+    downloadTemplate: 'Şablonu buradan indir',
+    field: 'Alan',
+    batchFailed: {
+      info: '{{num}} başarısız işlemler',
+      retry: 'Yeniden dene',
+      outputPlaceholder: 'Çıktı içeriği yok',
+    },
+    errorMsg: {
+      empty: 'Lütfen yüklenen dosyada içerik girin.',
+      fileStructNotMatch: 'Yüklenen CSV dosyası yapıya uymuyor.',
+      emptyLine: 'Satır {{rowIndex}} boş',
+      invalidLine: 'Satır {{rowIndex}}: {{varName}} değeri boş olamaz',
+      moreThanMaxLengthLine: 'Satır {{rowIndex}}: {{varName}} değeri {{maxLength}} karakterden fazla olamaz',
+      atLeastOne: 'Lütfen yüklenen dosyada en az bir satır girin.',
+    },
+  },
+}
+
+export default translation

+ 153 - 0
web/i18n/tr-TR/tools.ts

@@ -0,0 +1,153 @@
+const translation = {
+  title: 'Araçlar',
+  createCustomTool: 'Özel Araç Oluştur',
+  customToolTip: 'Dify özel araçları hakkında daha fazla bilgi edinin',
+  type: {
+    all: 'Hepsi',
+    builtIn: 'Yerleşik',
+    custom: 'Özel',
+    workflow: 'Workflow',
+  },
+  contribute: {
+    line1: 'Dify\'ye ',
+    line2: 'araçlar eklemekle ilgileniyorum.',
+    viewGuide: 'Rehberi Görüntüle',
+  },
+  author: 'Tarafından',
+  auth: {
+    unauthorized: 'Yetki Ver',
+    authorized: 'Yetkilendirildi',
+    setup: 'Kullanmak için yetkilendirmeyi ayarla',
+    setupModalTitle: 'Yetkilendirmeyi Ayarla',
+    setupModalTitleDescription: 'Kimlik bilgilerini yapılandırdıktan sonra, çalışma alanındaki tüm üyeler uygulamaları düzenlerken bu aracı kullanabilir.',
+  },
+  includeToolNum: '{{num}} araç dahil',
+  addTool: 'Araç Ekle',
+  addToolModal: {
+    type: 'Tür',
+    category: 'Kategori',
+    add: 'Ekle',
+    added: 'Eklendi',
+    manageInTools: 'Araçlarda Yönet',
+    emptyTitle: 'Kullanılabilir workflow aracı yok',
+    emptyTip: 'Git "Workflow -> Araç olarak Yayınla"',
+  },
+  createTool: {
+    title: 'Özel Araç Oluştur',
+    editAction: 'Yapılandır',
+    editTitle: 'Özel Aracı Düzenle',
+    name: 'İsim',
+    toolNamePlaceHolder: 'Araç ismini girin',
+    nameForToolCall: 'Araç çağrı adı',
+    nameForToolCallPlaceHolder: 'Makine tanıması için kullanılır, örneğin getCurrentWeather, list_pets',
+    nameForToolCallTip: 'Sadece rakamlar, harfler ve alt çizgileri destekler.',
+    description: 'Açıklama',
+    descriptionPlaceholder: 'Araç amacının kısa açıklaması, örneğin belirli bir yer için sıcaklığı al.',
+    schema: 'Şema',
+    schemaPlaceHolder: 'OpenAPI şemanızı buraya girin',
+    viewSchemaSpec: 'OpenAPI-Swagger Spesifikasyonunu Görüntüle',
+    importFromUrl: 'URL\'den İçe Aktar',
+    importFromUrlPlaceHolder: 'https://...',
+    urlError: 'Geçerli bir URL girin',
+    examples: 'Örnekler',
+    exampleOptions: {
+      json: 'Hava Durumu (JSON)',
+      yaml: 'Evcil Hayvan Mağazası (YAML)',
+      blankTemplate: 'Boş Şablon',
+    },
+    availableTools: {
+      title: 'Kullanılabilir Araçlar',
+      name: 'İsim',
+      description: 'Açıklama',
+      method: 'Yöntem',
+      path: 'Yol',
+      action: 'Eylemler',
+      test: 'Test',
+    },
+    authMethod: {
+      title: 'Yetkilendirme yöntemi',
+      type: 'Yetkilendirme türü',
+      keyTooltip: 'Http Başlığı Anahtarı, ne olduğunu bilmiyorsanız "Authorization" olarak bırakabilirsiniz veya özel bir değere ayarlayabilirsiniz',
+      types: {
+        none: 'Yok',
+        api_key: 'API Anahtarı',
+        apiKeyPlaceholder: 'API Anahtarı için HTTP başlık adı',
+        apiValuePlaceholder: 'API Anahtarını girin',
+      },
+      key: 'Anahtar',
+      value: 'Değer',
+    },
+    authHeaderPrefix: {
+      title: 'Yetki Türü',
+      types: {
+        basic: 'Temel',
+        bearer: 'Bearer',
+        custom: 'Özel',
+      },
+    },
+    privacyPolicy: 'Gizlilik politikası',
+    privacyPolicyPlaceholder: 'Gizlilik politikasını girin',
+    toolInput: {
+      title: 'Araç Girişi',
+      name: 'İsim',
+      required: 'Gerekli',
+      method: 'Yöntem',
+      methodSetting: 'Ayar',
+      methodSettingTip: 'Kullanıcı araç yapılandırmasını doldurur',
+      methodParameter: 'Parametre',
+      methodParameterTip: 'Çıkarım sırasında LLM tarafından doldurulur',
+      label: 'Etiketler',
+      labelPlaceholder: 'Etiketleri seç (isteğe bağlı)',
+      description: 'Açıklama',
+      descriptionPlaceholder: 'Parametrenin anlamının açıklaması',
+    },
+    customDisclaimer: 'Özel feragatname',
+    customDisclaimerPlaceholder: 'Özel feragatnameyi girin',
+    confirmTitle: 'Kaydetmek için onaylıyor musunuz?',
+    confirmTip: 'Bu aracı kullanan uygulamalar etkilenecek',
+    deleteToolConfirmTitle: 'Bu Aracı silmek istiyor musunuz?',
+    deleteToolConfirmContent: 'Aracın silinmesi geri alınamaz. Kullanıcılar artık aracınıza erişemeyecek.',
+  },
+  test: {
+    title: 'Test',
+    parametersValue: 'Parametreler ve Değer',
+    parameters: 'Parametreler',
+    value: 'Değer',
+    testResult: 'Test Sonuçları',
+    testResultPlaceholder: 'Test sonucu burada gösterilecektir',
+  },
+  thought: {
+    using: 'Kullanılıyor',
+    used: 'Kullanıldı',
+    requestTitle: 'İstek',
+    responseTitle: 'Yanıt',
+  },
+  setBuiltInTools: {
+    info: 'Bilgi',
+    setting: 'Ayar',
+    toolDescription: 'Araç açıklaması',
+    parameters: 'parametreler',
+    string: 'string',
+    number: 'numara',
+    required: 'Gerekli',
+    infoAndSetting: 'Bilgi ve Ayarlar',
+  },
+  noCustomTool: {
+    title: 'Özel araç yok!',
+    content: 'AI uygulamaları oluşturmak için özel araçlarınızı buraya ekleyin ve yönetin.',
+    createTool: 'Araç Oluştur',
+  },
+  noSearchRes: {
+    title: 'Üzgünüz, sonuç bulunamadı!',
+    content: 'Aramanızla eşleşen araçlar bulamadık.',
+    reset: 'Aramayı Sıfırla',
+  },
+  builtInPromptTitle: 'Prompt',
+  toolRemoved: 'Araç kaldırıldı',
+  notAuthorized: 'Araç yetkilendirilmedi',
+  howToGet: 'Nasıl alınır',
+  openInStudio: 'Studyoda Aç',
+  toolNameUsageTip: 'Agent akıl yürütme ve prompt için araç çağrı adı',
+}
+
+export default translation

+ 499 - 0
web/i18n/tr-TR/workflow.ts

@@ -0,0 +1,499 @@
+const translation = {
+  common: {
+    undo: 'Geri Al',
+    redo: 'Yinele',
+    editing: 'Düzenleme',
+    autoSaved: 'Otomatik Kaydedildi',
+    unpublished: 'Yayınlanmamış',
+    published: 'Yayınlandı',
+    publish: 'Yayınla',
+    update: 'Güncelle',
+    run: 'Çalıştır',
+    running: 'Çalışıyor',
+    inRunMode: 'Çalıştırma Modunda',
+    inPreview: 'Ön İzlemede',
+    inPreviewMode: 'Önizleme Modunda',
+    preview: 'Önizleme',
+    viewRunHistory: 'Çalıştırma geçmişini görüntüle',
+    runHistory: 'Çalıştırma Geçmişi',
+    goBackToEdit: 'Editöre geri dön',
+    conversationLog: 'Konuşma Günlüğü',
+    features: 'Özellikler',
+    debugAndPreview: 'Önizleme',
+    restart: 'Yeniden Başlat',
+    currentDraft: 'Geçerli Taslak',
+    currentDraftUnpublished: 'Mevcut Taslak Yayınlanmamış',
+    latestPublished: 'Son Yayınlanan',
+    publishedAt: 'Yayınlandı',
+    restore: 'Geri Yükle',
+    runApp: 'Uygulamayı Çalıştır',
+    batchRunApp: 'Toplu Uygulama Çalıştır',
+    accessAPIReference: 'API Referansına Eriş',
+    embedIntoSite: 'Siteye Göm',
+    addTitle: 'Başlık ekle...',
+    addDescription: 'Açıklama ekle...',
+    noVar: 'Değişken yok',
+    searchVar: 'Değişkeni ara',
+    variableNamePlaceholder: 'Değişken adı',
+    setVarValuePlaceholder: 'Değişkeni ayarla',
+    needConnecttip: 'Bu adım hiçbir şeye bağlı değil',
+    maxTreeDepth: 'Her dal için maksimum {{depth}} düğüm limiti',
+    needEndNode: 'Son blok eklenmelidir',
+    needAnswerNode: 'Yanıt bloğu eklenmelidir',
+    workflowProcess: 'Workflow Süreci',
+    notRunning: 'Henüz çalıştırılmadı',
+    previewPlaceholder: 'Sohbet Robotunu hata ayıklamak için aşağıdaki kutuya içerik girin',
+    effectVarConfirm: {
+      title: 'Değişkeni Kaldır',
+      content: 'Değişken diğer düğümlerde kullanılıyor. Yine de kaldırmak istiyor musunuz?',
+    },
+    insertVarTip: 'Hızlı eklemek için \'/\' tuşuna basın',
+    processData: 'Veriyi İşle',
+    input: 'Girdi',
+    output: 'Çıktı',
+    jinjaEditorPlaceholder: 'Değişken eklemek için \'/\' veya \'{\' yazın',
+    viewOnly: 'Sadece Görüntüleme',
+    showRunHistory: 'Çalıştırma Geçmişini Göster',
+    enableJinja: 'Jinja şablon desteğini etkinleştir',
+    learnMore: 'Daha Fazla Bilgi',
+    copy: 'Kopyala',
+    duplicate: 'Çoğalt',
+    addBlock: 'Blok Ekle',
+    pasteHere: 'Buraya Yapıştır',
+    pointerMode: 'İşaretçi Modu',
+    handMode: 'El Modu',
+    model: 'Model',
+    workflowAsTool: 'Araç Olarak Workflow',
+    configureRequired: 'Yapılandırma Gerekli',
+    configure: 'Yapılandır',
+    manageInTools: 'Araçlarda Yönet',
+    workflowAsToolTip: 'Workflow güncellemesinden sonra araç yeniden yapılandırması gereklidir.',
+    viewDetailInTracingPanel: 'Ayrıntıları görüntüle',
+    syncingData: 'Veriler senkronize ediliyor, birkaç saniye bekleyin.',
+    importDSL: 'DSL İçe Aktar',
+    importDSLTip: 'Geçerli taslak üzerine yazılacak. İçe aktarmadan önce workflow yedekleyin.',
+    backupCurrentDraft: 'Geçerli Taslağı Yedekleyin',
+    chooseDSL: 'DSL(yml) dosyasını seçin',
+    overwriteAndImport: 'Üzerine Yaz ve İçe Aktar',
+    importFailure: 'İçe Aktarma Başarısız',
+    importSuccess: 'İçe Aktarma Başarılı',
+  },
+  env: {
+    envPanelTitle: 'Çevre Değişkenleri',
+    envDescription: 'Çevre değişkenleri özel bilgileri ve kimlik bilgilerini saklamak için kullanılabilir. Yalnızca okunabilirler ve dışa aktarım sırasında DSL dosyasından ayrılabilirler.',
+    envPanelButton: 'Değişken Ekle',
+    modal: {
+      title: 'Çevre Değişkeni Ekle',
+      editTitle: 'Çevre Değişkenini Düzenle',
+      type: 'Tür',
+      name: 'Ad',
+      namePlaceholder: 'env adı',
+      value: 'Değer',
+      valuePlaceholder: 'env değeri',
+      secretTip: 'Hassas bilgileri veya verileri tanımlamak için kullanılır, bilgi sızıntısını önlemek için DSL ayarları yapılandırılmıştır.',
+    },
+    export: {
+      title: 'Gizli çevre değişkenleri dışa aktarılsın mı?',
+      checkbox: 'Gizli değerleri dışa aktar',
+      ignore: 'DSL\'yi dışa aktar',
+      export: 'Gizli değerlerle DSL\'yi dışa aktar',
+    },
+  },
+  changeHistory: {
+    title: 'Değişiklik Geçmişi',
+    placeholder: 'Henüz hiçbir şey değiştirmediniz',
+    clearHistory: 'Geçmişi Temizle',
+    hint: 'İpucu',
+    hintText: 'Düzenleme işlemleriniz, bu oturum süresince cihazınızda saklanan bir değişiklik geçmişinde izlenir. Bu tarihçesi düzenleyiciden çıktığınızda temizlenir.',
+    stepBackward_one: '{{count}} adım geri',
+    stepBackward_other: '{{count}} adım geri',
+    stepForward_one: '{{count}} adım ileri',
+    stepForward_other: '{{count}} adım ileri',
+    sessionStart: 'Oturum Başladı',
+    currentState: 'Geçerli Durum',
+    nodeTitleChange: 'Blok başlığı değiştirildi',
+    nodeDescriptionChange: 'Blok açıklaması değiştirildi',
+    nodeDragStop: 'Blok taşındı',
+    nodeChange: 'Blok değiştirildi',
+    nodeConnect: 'Blok bağlandı',
+    nodePaste: 'Blok yapıştırıldı',
+    nodeDelete: 'Blok silindi',
+    nodeAdd: 'Blok eklendi',
+    nodeResize: 'Blok yeniden boyutlandırıldı',
+    noteAdd: 'Not eklendi',
+    noteChange: 'Not değiştirildi',
+    noteDelete: 'Not silindi',
+    edgeDelete: 'Blok bağlantısı kesildi',
+  },
+  errorMsg: {
+    fieldRequired: '{{field}} gereklidir',
+    authRequired: 'Yetkilendirme gereklidir',
+    invalidJson: '{{field}} geçersiz JSON',
+    fields: {
+      variable: 'Değişken Adı',
+      variableValue: 'Değişken Değeri',
+      code: 'Kod',
+      model: 'Model',
+      rerankModel: 'Yeniden Sıralama Modeli',
+    },
+    invalidVariable: 'Geçersiz değişken',
+  },
+  singleRun: {
+    testRun: 'Test Çalıştırma',
+    startRun: 'Çalıştırmayı Başlat',
+    running: 'Çalışıyor',
+    testRunIteration: 'Test Çalıştırma Yineleme',
+    back: 'Geri',
+    iteration: 'Yineleme',
+  },
+  tabs: {
+    'searchBlock': 'Blok ara',
+    'blocks': 'Bloklar',
+    'tools': 'Araçlar',
+    'allTool': 'Hepsi',
+    'builtInTool': 'Yerleşik',
+    'customTool': 'Özel',
+    'workflowTool': 'Workflow',
+    'question-understand': 'Soruyu Anlama',
+    'logic': 'Mantık',
+    'transform': 'Dönüştür',
+    'utilities': 'Yardımcı Araçlar',
+    'noResult': 'Eşleşen bulunamadı',
+  },
+  blocks: {
+    'start': 'Başlat',
+    'end': 'Son',
+    'answer': 'Yanıt',
+    'llm': 'LLM',
+    'knowledge-retrieval': 'Bilgi Geri Alımı',
+    'question-classifier': 'Soru Sınıflandırıcı',
+    'if-else': 'IF/ELSE',
+    'code': 'Kod',
+    'template-transform': 'Şablon',
+    'http-request': 'HTTP İsteği',
+    'variable-assigner': 'Değişken Ata',
+    'variable-aggregator': 'Değişken Toplayıcı',
+    'iteration-start': 'Yineleme Başlat',
+    'iteration': 'Yineleme',
+    'parameter-extractor': 'Parametre Çıkarıcı',
+  },
+  blocksAbout: {
+    'start': 'Bir iş akışını başlatmak için başlangıç parametrelerini tanımlayın',
+    'end': 'Bir iş akışının sonunu ve sonuç türünü tanımlayın',
+    'answer': 'Bir sohbet konuşmasının yanıt içeriğini tanımlayın',
+    'llm': 'Büyük dil modellerini soruları yanıtlamak veya doğal dili işlemek için çağırın',
+    'knowledge-retrieval': 'Kullanıcı sorularıyla ilgili metin içeriğini Bilgi\'den sorgulamanıza olanak tanır',
+    'question-classifier': 'Kullanıcı sorularının sınıflandırma koşullarını tanımlayın, LLM sınıflandırma açıklamasına dayalı olarak konuşmanın nasıl ilerleyeceğini tanımlayabilir',
+    'if-else': 'İş akışını if/else koşullarına göre iki dala ayırmanızı sağlar',
+    'code': 'Özel mantığı uygulamak için bir Python veya NodeJS kod parçası yürütün',
+    'template-transform': 'Jinja şablon sözdizimini kullanarak verileri stringe dönüştürün',
+    'http-request': 'HTTP protokolü üzerinden sunucu isteklerinin gönderilmesine izin verin',
+    'variable-assigner': 'Çoklu dal değişkenlerini tek bir değişkende toplayın ve sonraki düğümler için birleşik bir yapılandırma sağlayın.',
+    'variable-aggregator': 'Çoklu dal değişkenlerini tek bir değişkende toplayın ve sonraki düğümler için birleşik bir yapılandırma sağlayın.',
+    'iteration': 'Bir liste nesnesinde birden fazla adım gerçekleştirir ve tüm sonuçlar çıkana kadar devam eder.',
+    'parameter-extractor': 'Aracı çağırmak veya HTTP istekleri için doğal dilden yapılandırılmış parametreler çıkarmak için LLM kullanın.',
+  },
+  operator: {
+    zoomIn: 'Yakınlaştır',
+    zoomOut: 'Uzaklaştır',
+    zoomTo50: '%50 Yakınlaştır',
+    zoomTo100: '%100 Yakınlaştır',
+    zoomToFit: 'Sığdıracak Şekilde Yakınlaştır',
+  },
+  panel: {
+    userInputField: 'Kullanıcı Giriş Alanı',
+    changeBlock: 'Blok Değiştir',
+    helpLink: 'Yardım Linki',
+    about: 'Hakkında',
+    createdBy: 'Oluşturan: ',
+    nextStep: 'Sonraki Adım',
+    addNextStep: 'Bu iş akışında sonraki bloğu ekleyin',
+    selectNextStep: 'Sonraki Bloğu Seç',
+    runThisStep: 'Bu adımı çalıştır',
+    checklist: 'Kontrol Listesi',
+    checklistTip: 'Yayınlamadan önce tüm sorunların çözüldüğünden emin olun',
+    checklistResolved: 'Tüm sorunlar çözüldü',
+    organizeBlocks: 'Blokları Düzenle',
+    change: 'Değiştir',
+  },
+  nodes: {
+    common: {
+      outputVars: 'Çıktı Değişkenleri',
+      insertVarTip: 'Değişken Ekle',
+      memory: {
+        memory: 'Bellek',
+        memoryTip: 'Sohbet belleği ayarları',
+        windowSize: 'Pencere Boyutu',
+        conversationRoleName: 'Konuşma Rol Adı',
+        user: 'Kullanıcı ön eki',
+        assistant: 'Asistan ön eki',
+      },
+      memories: {
+        title: 'Bellekler',
+        tip: 'Sohbet belleği',
+        builtIn: 'Yerleşik',
+      },
+    },
+    start: {
+      required: 'gerekli',
+      inputField: 'Giriş Alanı',
+      builtInVar: 'Yerleşik Değişkenler',
+      outputVars: {
+        query: 'Kullanıcı girişi',
+        memories: {
+          des: 'Konuşma geçmişi',
+          type: 'mesaj türü',
+          content: 'mesaj içeriği',
+        },
+        files: 'Dosya listesi',
+      },
+      noVarTip: 'İş Akışında kullanılabilecek girişleri ayarlayın',
+    },
+    end: {
+      outputs: 'Çıktılar',
+      output: {
+        type: 'çıktı türü',
+        variable: 'çıktı değişkeni',
+      },
+      type: {
+        'none': 'Yok',
+        'plain-text': 'Düz Metin',
+        'structured': 'Yapılandırılmış',
+      },
+    },
+    answer: {
+      answer: 'Yanıt',
+      outputVars: 'Çıktı Değişkenleri',
+    },
+    llm: {
+      model: 'model',
+      variables: 'değişkenler',
+      context: 'bağlam',
+      contextTooltip: 'Bağlam olarak Bilgi ekleyebilirsiniz',
+      notSetContextInPromptTip: 'Bağlam özelliğini etkinleştirmek için lütfen PROMPT içinde bağlam değişkenini doldurun.',
+      prompt: 'prompt',
+      roleDescription: {
+        system: 'Konuşma için üst düzey talimatlar verin',
+        user: 'Modele talimatlar, sorgular veya herhangi bir metin tabanlı giriş sağlayın',
+        assistant: 'Modelin kullanıcı mesajlarına göre verdiği yanıtlar',
+      },
+      addMessage: 'Mesaj Ekle',
+      vision: 'görsel',
+      files: 'Dosyalar',
+      resolution: {
+        name: 'Çözünürlük',
+        high: 'Yüksek',
+        low: 'Düşük',
+      },
+      outputVars: {
+        output: 'İçerik Üret',
+        usage: 'Model Kullanım Bilgileri',
+      },
+      singleRun: {
+        variable: 'Değişken',
+      },
+      sysQueryInUser: 'sys.query kullanıcı mesajında gereklidir',
+    },
+    knowledgeRetrieval: {
+      queryVariable: 'Sorgu Değişkeni',
+      knowledge: 'Bilgi',
+      outputVars: {
+        output: 'Geri alınmış parça verisi',
+        content: 'Parça içeriği',
+        title: 'Parça başlığı',
+        icon: 'Parça simgesi',
+        url: 'Parça URL\'si',
+        metadata: 'Diğer meta veriler',
+      },
+    },
+    http: {
+      inputVars: 'Giriş Değişkenleri',
+      api: 'API',
+      apiPlaceholder: 'URL girin, değişken eklemek için ‘/’ tuşuna basın',
+      notStartWithHttp: 'API http:// veya https:// ile başlamalıdır',
+      key: 'Anahtar',
+      value: 'Değer',
+      bulkEdit: 'Toplu Düzenleme',
+      keyValueEdit: 'Anahtar-Değer Düzenleme',
+      headers: 'Başlıklar',
+      params: 'Parametreler',
+      body: 'Gövde',
+      outputVars: {
+        body: 'Yanıt İçeriği',
+        statusCode: 'Yanıt Durum Kodu',
+        headers: 'Yanıt Başlık Listesi JSON',
+        files: 'Dosya Listesi',
+      },
+      authorization: {
+        'authorization': 'Yetkilendirme',
+        'authorizationType': 'Yetkilendirme Türü',
+        'no-auth': 'Yok',
+        'api-key': 'API Anahtarı',
+        'authType': 'Yetki Türü',
+        'basic': 'Temel',
+        'bearer': 'Bearer',
+        'custom': 'Özel',
+        'api-key-title': 'API Anahtarı',
+        'header': 'Başlık',
+      },
+      insertVarPlaceholder: 'değişkeni eklemek için \'/\' yazın',
+      timeout: {
+        title: 'Zaman Aşımı',
+        connectLabel: 'Bağlantı Zaman Aşımı',
+        connectPlaceholder: 'Bağlantı zaman aşımını saniye cinsinden girin',
+        readLabel: 'Okuma Zaman Aşımı',
+        readPlaceholder: 'Okuma zaman aşımını saniye cinsinden girin',
+        writeLabel: 'Yazma Zaman Aşımı',
+        writePlaceholder: 'Yazma zaman aşımını saniye cinsinden girin',
+      },
+    },
+    code: {
+      inputVars: 'Giriş Değişkenleri',
+      outputVars: 'Çıktı Değişkenleri',
+      advancedDependencies: 'Gelişmiş Bağımlılıklar',
+      advancedDependenciesTip: 'Burada daha uzun sürede tüketilen veya varsayılan olarak yerleşik olmayan bazı ön yüklenmiş bağımlılıkları ekleyin',
+      searchDependencies: 'Bağımlılıkları Ara',
+    },
+    templateTransform: {
+      inputVars: 'Giriş Değişkenleri',
+      code: 'Kod',
+      codeSupportTip: 'Sadece Jinja2 destekler',
+      outputVars: {
+        output: 'Dönüştürülmüş içerik',
+      },
+    },
+    ifElse: {
+      if: 'Eğer',
+      else: 'Değilse',
+      elseDescription: 'Eğer koşulu karşılanmadığında hangi mantığın çalıştırılması gerektiğini tanımlamak için kullanılır.',
+      and: 've',
+      or: 'veya',
+      operator: 'Operatör',
+      notSetVariable: 'Lütfen önce değişken ayarlayın',
+      comparisonOperator: {
+        'contains': 'içerir',
+        'not contains': 'içermez',
+        'start with': 'ile başlar',
+        'end with': 'ile biter',
+        'is': 'eşittir',
+        'is not': 'eşit değildir',
+        'empty': 'boş',
+        'not empty': 'boş değil',
+        'null': 'null',
+        'not null': 'null değil',
+      },
+      enterValue: 'Değer girin',
+      addCondition: 'Koşul Ekle',
+      conditionNotSetup: 'Koşul AYARLANMADI',
+      selectVariable: 'Değişken seçin...',
+    },
+
+    variableAssigner: {
+      title: 'Değişken ata',
+      outputType: 'Çıktı Türü',
+      varNotSet: 'Değişken ayarlanmadı',
+      noVarTip: 'Atanacak değişkenleri ekleyin',
+      type: {
+        string: 'Metin',
+        number: 'Sayı',
+        object: 'Nesne',
+        array: 'Dizi',
+      },
+      aggregationGroup: 'Toplama Grubu',
+      aggregationGroupTip: 'Bu özelliği etkinleştirmek, değişken toplayıcının birden fazla değişken setini toplamasına olanak tanır.',
+      addGroup: 'Grup Ekle',
+      outputVars: {
+        varDescribe: '{{groupName}} çıktısı',
+      },
+      setAssignVariable: 'Atama değişkenini ayarla',
+    },
+    tool: {
+      toAuthorize: 'Yetkilendirmek için',
+      inputVars: 'Giriş Değişkenleri',
+      outputVars: {
+        text: 'araç tarafından oluşturulan içerik',
+        files: {
+          title: 'araç tarafından oluşturulan dosyalar',
+          type: 'Desteklenen tür. Şu anda sadece resim destekleniyor',
+          transfer_method: 'Transfer yöntemi. Değer remote_url veya local_file olabilir',
+          url: 'Resim URL\'si',
+          upload_file_id: 'Yüklenen dosya kimliği',
+        },
+        json: 'araç tarafından oluşturulan json',
+      },
+    },
+    questionClassifiers: {
+      model: 'model',
+      inputVars: 'Giriş Değişkenleri',
+      outputVars: {
+        className: 'Sınıf Adı',
+      },
+      class: 'Sınıf',
+      classNamePlaceholder: 'Sınıf adınızı yazın',
+      advancedSetting: 'Gelişmiş Ayarlar',
+      topicName: 'Konu Adı',
+      topicPlaceholder: 'Konu adınızı yazın',
+      addClass: 'Sınıf Ekle',
+      instruction: 'Talimat',
+      instructionTip: 'Soru sınıflandırıcının soruları nasıl kategorize edeceğini daha iyi anlamasına yardımcı olmak için ek talimatlar girin.',
+      instructionPlaceholder: 'Talimatınızı yazın',
+    },
+    parameterExtractor: {
+      inputVar: 'Giriş Değişkeni',
+      extractParameters: 'Parametreleri Çıkar',
+      importFromTool: 'Araçlardan içe aktar',
+      addExtractParameter: 'Çıkarma Parametresi Ekle',
+      addExtractParameterContent: {
+        name: 'Ad',
+        namePlaceholder: 'Çıkarma Parametresi Adı',
+        type: 'Tür',
+        typePlaceholder: 'Çıkarma Parametresi Türü',
+        description: 'Açıklama',
+        descriptionPlaceholder: 'Çıkarma Parametresi Açıklaması',
+        required: 'Gerekli',
+        requiredContent: 'Gerekli sadece model çıkarımı için referans olarak kullanılır ve parametre çıktısının zorunlu doğrulaması için kullanılmaz.',
+      },
+      extractParametersNotSet: 'Çıkarma Parametreleri ayarlanmadı',
+      instruction: 'Talimat',
+      instructionTip: 'Parametre çıkarıcının parametreleri nasıl çıkaracağını anlamasına yardımcı olmak için ek talimatlar girin.',
+      advancedSetting: 'Gelişmiş Ayarlar',
+      reasoningMode: 'Akıl Yürütme Modu',
+      reasoningModeTip: 'Modelin fonksiyon çağırma veya istemler için talimatlara yanıt verme yeteneğine bağlı olarak uygun akıl yürütme modunu seçebilirsiniz.',
+      isSuccess: 'Başarılı mı. Başarılı olduğunda değer 1, başarısız olduğunda değer 0\'dır.',
+      errorReason: 'Hata Nedeni',
+    },
+    iteration: {
+      deleteTitle: 'Yineleme Düğümünü Sil?',
+      deleteDesc: 'Yineleme düğümünü silmek tüm alt düğümleri silecektir',
+      input: 'Giriş',
+      output: 'Çıkış Değişkenleri',
+      iteration_one: '{{count}} Yineleme',
+      iteration_other: '{{count}} Yineleme',
+      currentIteration: 'Mevcut Yineleme',
+    },
+    note: {
+      addNote: 'Not Ekle',
+      editor: {
+        placeholder: 'Notunuzu yazın...',
+        small: 'Küçük',
+        medium: 'Orta',
+        large: 'Büyük',
+        bold: 'Kalın',
+        italic: 'İtalik',
+        strikethrough: 'Üstü Çizili',
+        link: 'Bağlantı',
+        openLink: 'Aç',
+        unlink: 'Bağlantıyı Kaldır',
+        enterUrl: 'URL girin...',
+        invalidUrl: 'Geçersiz URL',
+        bulletList: 'Madde İşaretli Liste',
+        showAuthor: 'Yazarı Göster',
+      },
+    },
+  },
+  tracing: {
+    stopBy: '{{user}} tarafından durduruldu',
+  },
+}
+
+export default translation