diff --git a/.i18nrc.js b/.i18nrc.js
index e26a9462c6..56e3d8a817 100644
--- a/.i18nrc.js
+++ b/.i18nrc.js
@@ -5,7 +5,7 @@ module.exports = defineConfig({
reference: '翻译后的字数尽量和原文一致',
entryLocale: 'zh_CN',
output: 'locales',
- outputLocales: ['zh_TW', 'en_US', 'ru_RU', 'ja_JP', 'ko_KR', 'fr_FR'],
+ outputLocales: ['zh_TW', 'en_US', 'ru_RU', 'ja_JP', 'ko_KR', 'fr_FR', 'tr_TR'],
temperature: 0,
modelName: 'gpt-3.5-turbo-1106',
splitToken: 1024,
diff --git a/locales/en_US/common.json b/locales/en_US/common.json
index 98451e7759..f31fc302d1 100644
--- a/locales/en_US/common.json
+++ b/locales/en_US/common.json
@@ -58,7 +58,9 @@
"ru-RU": "Russian",
"zh": "Simplified Chinese",
"zh-CN": "Simplified Chinese",
- "zh-TW": "Traditional Chinese"
+ "zh-TW": "Traditional Chinese",
+ "fr-FR": "French",
+ "tr-TR": "Turkish"
},
"layoutInitializing": "Initializing layout...",
"noDescription": "No description available",
diff --git a/locales/fr_FR/common.json b/locales/fr_FR/common.json
index 06abd0c7e3..bbb300bfa7 100644
--- a/locales/fr_FR/common.json
+++ b/locales/fr_FR/common.json
@@ -58,7 +58,9 @@
"ru-RU": "Russe",
"zh": "Chinois",
"zh-CN": "Chinois simplifié",
- "zh-TW": "Chinois traditionnel"
+ "zh-TW": "Chinois traditionnel",
+ "fr-FR": "français",
+ "tr-TR": "turque"
},
"layoutInitializing": "Initialisation de la mise en page en cours...",
"noDescription": "Aucune description disponible",
diff --git a/locales/ja_JP/common.json b/locales/ja_JP/common.json
index 97ffcc4cd8..a3d06e713e 100644
--- a/locales/ja_JP/common.json
+++ b/locales/ja_JP/common.json
@@ -58,7 +58,9 @@
"ru-RU": "ロシア語",
"zh": "簡体字中国語",
"zh-CN": "簡体字中国語",
- "zh-TW": "繁体字中国語"
+ "zh-TW": "繁体字中国語",
+ "fr-FR": "フランス語",
+ "tr-TR": "トルコ語"
},
"layoutInitializing": "レイアウトを初期化中...",
"noDescription": "説明はありません",
diff --git a/locales/ko_KR/common.json b/locales/ko_KR/common.json
index b52ee2c4f8..e4c94dfe64 100644
--- a/locales/ko_KR/common.json
+++ b/locales/ko_KR/common.json
@@ -58,7 +58,9 @@
"ru-RU": "러시아어",
"zh": "중국어",
"zh-CN": "중국어(간체)",
- "zh-TW": "중국어(번체)"
+ "zh-TW": "중국어(번체)",
+ "fr-FR": "프랑스어",
+ "tr-TR": "터키어"
},
"layoutInitializing": "레이아웃을 불러오는 중...",
"noDescription": "설명 없음",
diff --git a/locales/ru_RU/common.json b/locales/ru_RU/common.json
index 2bd6fbbff8..c38f13e2cf 100644
--- a/locales/ru_RU/common.json
+++ b/locales/ru_RU/common.json
@@ -58,7 +58,9 @@
"ru-RU": "Русский",
"zh": "Китайский",
"zh-CN": "Китайский",
- "zh-TW": "Традиционный китайский"
+ "zh-TW": "Традиционный китайский",
+ "fr-FR": "французский",
+ "tr-TR": "турецкий"
},
"layoutInitializing": "Инициализация макета...",
"noDescription": "Нет описания",
diff --git a/locales/tr_TR/chat.json b/locales/tr_TR/chat.json
new file mode 100644
index 0000000000..115e35c4d7
--- /dev/null
+++ b/locales/tr_TR/chat.json
@@ -0,0 +1,77 @@
+{
+ "agentDefaultMessage": "Merhaba, Ben **{{name}}**. Hemen benimle sohbet etmeye başlayabilirsiniz veya [Asistan Ayarları](/chat/settings#session={{id}}) sayfasına giderek bilgilerimi tamamlayabilirsiniz.",
+ "agentDefaultMessageWithSystemRole": "Merhaba, Ben **{{name}}**, {{systemRole}}. Hemen sohbet etmeye başlayalım!",
+ "backToBottom": "En alta git",
+ "clearCurrentMessages": "Mevcut oturum mesajlarını temizle",
+ "confirmClearCurrentMessages": "Mevcut oturum mesajlarını temizlemek üzeresiniz. Temizlendikten sonra geri alınamazlar. Lütfen eyleminizi onaylayın.",
+ "confirmRemoveSessionItemAlert": "Bu asistanı silmek üzeresiniz. Silindikten sonra geri alınamaz. Lütfen eyleminizi onaylayın.",
+ "defaultAgent": "Varsayılan Asistan",
+ "defaultSession": "Varsayılan Asistan",
+ "historyRange": "Geçmiş Aralığı",
+ "inbox": {
+ "defaultMessage": "Merhaba, ben sanal asistanınızım. Bana herhangi bir şey sorabilirsiniz ve size cevap vermek için elimden geleni yapacağım. Daha profesyonel veya özelleştirilmiş bir asistana ihtiyacınız varsa, özel bir asistan oluşturmak için `+` simgesine tıklayabilirsiniz.",
+ "desc": "Beyin fırtınasını başlatın ve yaratıcı düşünmeye başlayın. Sanal asistanınız burada, her konuda sizinle iletişim kurmak için hazır.",
+ "title": "Sohbet Et"
+ },
+ "newAgent": "Yeni Asistan",
+ "noDescription": "Açıklama yok",
+ "pin": "Pin",
+ "pinOff": "Unpin",
+ "regenerate": "Tekrarla",
+ "roleAndArchive": "Rol ve Arşiv",
+ "searchAgentPlaceholder": "Arama yardımcıları ve konuşmalar...",
+ "send": "Gönder",
+ "sendPlaceholder": "Mesajınızı buraya yazın...",
+ "sessionList": "Asistanlar",
+ "shareModal": {
+ "download": "Ekran Görüntüsünü İndir",
+ "imageType": "Format",
+ "screenshot": "Ekran Görüntüsü",
+ "settings": "Ayarlar",
+ "shareToShareGPT": "ShareGPT Link Oluştur",
+ "withBackground": "Arka Plan",
+ "withFooter": "Footer",
+ "withPluginInfo": "Plugin Bilgileri",
+ "withSystemRole": "Asistan Rol"
+ },
+ "stop": "Dur",
+ "stt": {
+ "action": "Ses Girişi",
+ "loading": "Tanımlanıyor...",
+ "prettifying": "İyileştiriliyor..."
+ },
+ "temp": "Geçici",
+ "tokenDetail": "Rol Ayarı: {{systemRoleToken}} · Sohbet Geçmişi: {{chatsToken}}",
+ "tokenTag": {
+ "overload": "Limit Aşıldı",
+ "remained": "Kalan",
+ "used": "Kullanılan"
+ },
+ "topic": {
+ "confirmRemoveAll": "Tüm konuları silmek üzeresiniz. Bir kere silindiğinde, geri alınamazlar. Lütfen dikkatli bir şekilde devam edin.",
+ "confirmRemoveTopic": "Bu konuyu silmek üzeresiniz. Bir kere silindiğinde, geri alınamaz. Lütfen dikkatli bir şekilde devam edin.",
+ "confirmRemoveUnstarred": "Yıldızlanmamış konuları silmek üzeresiniz. Bir kere silindiğinde, geri alınamazlar. Lütfen dikkatli bir şekilde devam edin.",
+ "defaultTitle": "Konu",
+ "openNewTopic": "Yeni Konu",
+ "removeAll": "Tüm Konuları Sil",
+ "removeUnstarred": "Tüm Yıldızlanmamış Konuları Sil",
+ "saveCurrentMessages": "Mevcut oturumu konu olarak kaydet",
+ "searchPlaceholder": "Konuları ara...",
+ "title": "Konular"
+ },
+ "translate": {
+ "action": "Çeviri",
+ "clear": "Çeviriyi Temizle"
+ },
+ "tts": {
+ "action": "Text-to-Speech",
+ "clear": "Clear Speech"
+ },
+ "updateAgent": "Asistan Bilgilerini Güncelle",
+ "upload": {
+ "actionTooltip": "Resim Yükle",
+ "dragDesc": "Dosyaları buraya sürükleyip bırakın, birden fazla resim yüklemeyi destekler. Resimleri doğrudan göndermek için Shift tuşunu basılı tutun.",
+ "dragTitle": "Resim Yükle"
+ },
+ "warp": "Warp"
+}
diff --git a/locales/tr_TR/common.json b/locales/tr_TR/common.json
new file mode 100644
index 0000000000..75aac1de9d
--- /dev/null
+++ b/locales/tr_TR/common.json
@@ -0,0 +1,90 @@
+{
+ "about": "Hakkında",
+ "advanceSettings": "Gelişmiş Ayarlar",
+ "agentMaxToken": "Maksimum Oturum Süresi",
+ "agentModel": "Model",
+ "agentProfile": "Asistan Profili",
+ "appInitializing": "LobeChat başlatılıyor, lütfen bekleyin...",
+ "archive": "Arşiv",
+ "autoGenerate": "Otomatik Oluştur",
+ "autoGenerateTooltip": "Auto-generate agent description based on prompts",
+ "cancel": "İptal",
+ "changelog": "Changelog",
+ "close": "Kapat",
+ "confirmRemoveSessionItemAlert": "Bu asistanı silmek üzeresiniz. Silindikten sonra geri alınamaz. Lütfen eyleminizi onaylayın.",
+ "copy": "Kopyala",
+ "copySuccess": "Kopyalama Başarılı",
+ "defaultAgent": "Varsayılan Asistan",
+ "defaultSession": "Varsayılan Asistan",
+ "delete": "Sil",
+ "edit": "Düzenle",
+ "export": "Dışa Aktar",
+ "exportType": {
+ "agent": "Asistan Ayarlarını Dışa Aktar",
+ "agentWithMessage": "Asistan ve Mesajları Dışa Aktar",
+ "all": "Ayarları ve Asistan Verilerini Dışa Aktar",
+ "allAgent": "Tüm Asistan Verilerini Dışa Aktar",
+ "allAgentWithMessage": "Tüm Asistan ve Mesajları Dışa Aktar",
+ "globalSetting": "Ayarları Dışa Aktar"
+ },
+ "feedback": "Feedback",
+ "historyRange": "Geçmiş Aralığı",
+ "import": "İçe Aktar",
+ "importModal": {
+ "finish": {
+ "onlySettings": "Sistem ayarları başarıyla içe aktarıldı",
+ "start": "Başla",
+ "subTitle": "Veri başarıyla aktarıldı, {{duration}} saniye sürdü. İçe aktarma ayrıntıları aşağıdaki gibidir:",
+ "title": "Veri başarıyla aktarıldı"
+ },
+ "loading": "Veri aktarılıyor, lütfen bekleyin...",
+ "result": {
+ "added": "Başarıyla içe aktarıldı",
+ "errors": "İçe Aktarma Hataları",
+ "messages": "Mesajlar",
+ "sessions": "Asistanlar",
+ "skips": "Geç",
+ "topics": "Konular",
+ "type": "Tip"
+ },
+ "title": "Veri İçe Aktar"
+ },
+ "lang": {
+ "en": "İngilizce",
+ "en-US": "İngilizce",
+ "ja-JP": "Japonca",
+ "ko-KR": "Korece",
+ "ru-RU": "Rusça",
+ "zh": "Basitleştirilmiş Çince",
+ "zh-CN": "Basitleştirilmiş Çince",
+ "zh-TW": "Geleneksel Çince",
+ "fr-FR": "Fransızca",
+ "tr-TR": "Türkçe"
+ },
+ "layoutInitializing": "Başlatılıyor...",
+ "noDescription": "Açıklama yok",
+ "ok": "Tamam",
+ "password": "Password",
+ "pin": "Pin",
+ "pinOff": "Unpin",
+ "regenerate": "Tekrarla",
+ "rename": "Yeniden İsimlendir",
+ "reset": "Reset",
+ "retry": "Yeniden Dene",
+ "send": "Gönder",
+ "setting": "Ayarlar",
+ "share": "Paylaş",
+ "stop": "Dur",
+ "tab": {
+ "chat": "Chat",
+ "market": "Keşfet",
+ "setting": "Ayarlar"
+ },
+ "temp": "Geçici",
+ "updateAgent": "Asistan Bilgilerini Güncelle",
+ "upgradeVersion": {
+ "hasNew": "Yeni güncelleme mevcut",
+ "newVersion": "Yeni sürüm mevcut: {{version}}",
+ "action": "Güncelle"
+ }
+}
diff --git a/locales/tr_TR/empty.json b/locales/tr_TR/empty.json
new file mode 100644
index 0000000000..0a4b02c5fc
--- /dev/null
+++ b/locales/tr_TR/empty.json
@@ -0,0 +1,6 @@
+{
+ "topic": {
+ "desc": "Mevcut konuşmayı kaydetmek ve yeni bir konuşma başlatmak için soldaki düğmeye tıklayın.",
+ "title": "Konular"
+ }
+}
diff --git a/locales/tr_TR/error.json b/locales/tr_TR/error.json
new file mode 100644
index 0000000000..ddd1c2d55e
--- /dev/null
+++ b/locales/tr_TR/error.json
@@ -0,0 +1,51 @@
+{
+ "pluginSettings": {
+ "desc": "Bu eklentiyi kullanmaya başlamak için aşağıdaki yapılandırmayı tamamlayın",
+ "title": "{{name}} Eklenti Ayarları"
+ },
+ "response": {
+ "400": "Üzgünüm, sunucu isteğinizi anlamadı. Lütfen istek parametrelerinizin doğru olduğundan emin olun.",
+ "401": "Üzgünüm, sunucu isteğinizi reddetti, muhtemelen yetersiz izinler veya geçersiz kimlik doğrulama nedeniyle.",
+ "403": "Üzgünüm, sunucu isteğinizi reddetti. Bu içeriğe erişim izniniz yok.",
+ "404": "Üzgünüm, sunucu istediğiniz sayfa veya kaynağı bulamıyor. Lütfen URL'nizin doğru olduğundan emin olun.",
+ "405": "Üzgünüm, sunucu kullandığınız istek yöntemini desteklemiyor. Lütfen istek yönteminizin doğru olduğundan emin olun.",
+ "429": "Üzgünüm, isteğiniz çok sık ve sunucu biraz yorgun. Lütfen daha sonra tekrar deneyin.",
+ "500": "Üzgünüm, sunucu bazı zorluklar yaşıyor ve geçici olarak isteğinizi tamamlayamıyor. Lütfen daha sonra tekrar deneyin.",
+ "502": "Üzgünüm, sunucu kayboldu ve geçici olarak hizmet veremiyor. Lütfen daha sonra tekrar deneyin.",
+ "503": "Üzgünüm, sunucu şu anda isteğinizi işleyemiyor, muhtemelen aşırı yüklenme veya bakım nedeniyle. Lütfen daha sonra tekrar deneyin.",
+ "504": "Üzgünüm, sunucu yukarı akış sunucusundan bir yanıt alamadı. Lütfen daha sonra tekrar deneyin.",
+ "InvalidAccessCode": "Şifre yanlış veya boş. Lütfen doğru erişim şifresini girin veya özel bir OpenAI API Anahtarı ekleyin.",
+ "OpenAIBizError": "OpenAI hizmeti talep ederken hata oluştu. Aşağıdaki bilgilere dayanarak sorun giderin veya tekrar deneyin.",
+ "PluginMarketIndexNotFound": "Üzgünüm, sunucu eklenti dizinini bulamadı. Lütfen dizin adresinin doğru olup olmadığını kontrol edin",
+ "PluginMarketIndexInvalid": "Üzgünüm, eklenti dizini doğrulaması başarısız oldu. Lütfen dizin dosya formatının doğru olup olmadığını kontrol edin",
+ "PluginMetaNotFound": "Üzgünüm, dizinde eklenti bulunamadı. Lütfen dizindeki eklentinin yapılandırma bilgilerini kontrol edin",
+ "PluginMetaInvalid": "Üzgünüm, eklentinin meta veri doğrulaması başarısız oldu. Lütfen eklenti meta veri formatının doğru olup olmadığını kontrol edin",
+ "PluginManifestNotFound": "Üzgünüm, sunucu eklentinin bildirim dosyasını (manifest.json) bulamadı. Lütfen eklenti bildirim dosyası adresinin doğru olup olmadığını kontrol edin",
+ "PluginManifestInvalid": "Üzgünüm, eklentinin bildirim doğrulaması başarısız oldu. Lütfen bildirim formatının doğru olup olmadığını kontrol edin",
+ "PluginApiNotFound": "Üzgünüm, eklentinin bildiriminde API mevcut değil. Lütfen istek yönteminizin eklenti bildirim API'sı ile eşleşip eşleşmediğini kontrol edin",
+ "PluginApiParamsError": "Üzgünüm, eklenti isteği için giriş parametre doğrulaması başarısız oldu. Lütfen giriş parametrelerinin API açıklamasıyla eşleşip eşleşmediğini kontrol edin",
+ "PluginSettingsInvalid": "Bu eklenti, kullanılmadan önce doğru şekilde yapılandırılmalıdır. Lütfen yapılandırmanızın doğru olup olmadığını kontrol edin",
+ "PluginServerError": "Eklenti sunucusu isteği bir hata ile döndü. Lütfen aşağıdaki hata bilgilerine dayanarak eklenti bildirim dosyanızı, eklenti yapılandırmanızı veya sunucu uygulamanızı kontrol edin",
+ "NoAPIKey": "OpenAI API Anahtarı boş, lütfen özel bir OpenAI API Anahtarı ekleyin"
+ },
+ "stt": {
+ "responseError": "Hizmet isteği başarısız oldu, lütfen yapılandırmayı kontrol edin veya tekrar deneyin"
+ },
+ "tts": {
+ "responseError": "Hizmet isteği başarısız oldu, lütfen yapılandırmayı kontrol edin veya tekrar deneyin"
+ },
+ "unlock": {
+ "apikey": {
+ "title": "Özel API Anahtarı Kullanın",
+ "description": "Konuşmayı başlatmak için OpenAI API Anahtarınızı girin. Uygulama API Anahtarınızı kaydetmeyecek.",
+ "addProxyUrl": "OpenAI Proxy URL'si Ekle (isteğe bağlı)"
+ },
+ "confirm": "Onayla ve Yeniden Dene",
+ "password": {
+ "description": "Uygulama şifrelemesi yönetici tarafından etkinleştirilmiştir. Uygulamayı açmak için uygulama şifresini girin. Şifre sadece bir kez doldurulmalıdır.",
+ "title": "Uygulamayı Açmak için Şifre Girin",
+ "placeholder": "Lütfen şifre girin"
+ },
+ "closeMessage": "Mesajı kapat"
+ }
+}
diff --git a/locales/tr_TR/market.json b/locales/tr_TR/market.json
new file mode 100644
index 0000000000..6291a4f28e
--- /dev/null
+++ b/locales/tr_TR/market.json
@@ -0,0 +1,30 @@
+{
+ "addAgent": "Asistan Ekle",
+ "guide": {
+ "func1": {
+ "desc1": "Sohbet penceresinin sağ üst köşesindeki ayarlar simgesine tıklayarak asistana göndermek istediğiniz ayarlar sayfasına girin.",
+ "desc2": "Sağ üst köşedeki 'Asistan Pazarına Gönder' düğmesine tıklayın.",
+ "tag": "Method 1",
+ "title": "LobeChat üzerinden Gönder"
+ },
+ "func2": {
+ "button": "Github Asistan Repositorisine Git",
+ "desc": "Asistanı dizine eklemek istiyorsanız, plugins dizininde agent-template.json veya agent-template-full.json kullanarak bir giriş oluşturun, kısa bir açıklama ve uygun etiketler yazın, ardından bir çekme isteği oluşturun.",
+ "tag": "Method 2",
+ "title": "Github üzerinden Gönder"
+ }
+ },
+ "search": {
+ "placeholder": "Asistanadı, açıklama veya anahtar kelimeleri ara..."
+ },
+ "sidebar": {
+ "comment": "Yorumlar",
+ "prompt": "Prompts",
+ "title": "Asistan Detay"
+ },
+ "submitAgent": "Asistan Ekle",
+ "title": {
+ "recentSubmits": "Son Eklenenler",
+ "allAgents": "Tüm Asistanlar"
+ }
+}
diff --git a/locales/tr_TR/migration.json b/locales/tr_TR/migration.json
new file mode 100644
index 0000000000..076b307952
--- /dev/null
+++ b/locales/tr_TR/migration.json
@@ -0,0 +1,45 @@
+{
+ "dbV1": {
+ "action": {
+ "clearDB": "Yerel Verileri Temizle",
+ "downloadBackup": "Yedeğini İndir",
+ "reUpgrade": "Yeniden Yükselt",
+ "start": "Başla",
+ "upgrade": "Yükselt"
+ },
+ "clear": {
+ "confirm": "Yerel verileri temizlemek üzeresiniz (global ayarlar etkilenmeyecek). Lütfen yedeği indirdiğinizi onaylayın."
+ },
+ "description": "Yeni sürümde, LobeChat'in veri arttı. Bu nedenle, size daha iyi bir kullanıcı deneyimi sunmak için eski sürüm verilerini yükseltmemiz gerekiyor.",
+ "features": {
+ "capability": {
+ "desc": "IndexedDB teknolojisine ile ömür boyu konuşma mesajları depolayabilir.",
+ "title": "Yüksek Kapasite"
+ },
+ "performance": {
+ "title": "Yüksek Performans",
+ "desc": "Milyonlarca mesaj otomatik olarak indekslenir ve sorgu yanıtları milisaniyeler içinde gerçekleşir."
+ },
+ "use": {
+ "desc": "Başlıkları, açıklamaları, etiketleri, mesaj içeriğini ve hatta çevrilmiş metni aramayı destekler, günlük arama verimliliğini büyük ölçüde artırır.",
+ "title": "Daha Kullanıcı Dostu"
+ }
+ },
+ "title": "LobeChat Data Evolution",
+ "upgrade": {
+ "error": {
+ "title": "Veritabanı Yükseltmesi Başarısız Oldu",
+ "subTitle": "Üzgünüz, veritabanı yükseltme işlemi sırasında bir hata oluştu. Lütfen şu çözümleri deneyin: A. Yerel verileri temizleyin ve yedek verileri yeniden içe aktarın; B. 'Yükseltmeyi Yeniden Dene' düğmesine tıklayın.
Sorun devam ederse, lütfen <1>bir istek gönderin1>, en kısa sürede size yardımcı olacağız."
+ },
+ "success": {
+ "subTitle": "LobeChat'in veritabanı en son sürüme başarıyla yükseltildi. Şimdi deneyimlemeye başlayın!",
+ "title": "Veritabanı Yükseltmesi Başarılı"
+ }
+ },
+ "upgradeTip": "Yükseltme işlemi yaklaşık 10 ila 20 saniye sürecektir. Lütfen yükseltme sırasında LobeChat'i kapatmayın."
+ },
+ "migrateError": {
+ "missVersion": "İçe aktarılan verilerde bir sürüm numarası eksik. Lütfen dosyayı kontrol edin ve tekrar deneyin.",
+ "noMigration": "Mevcut sürüm için bir geçiş çözümü bulunamadı. Lütfen sürüm numarasını kontrol edin ve tekrar deneyin. Sorun devam ederse, lütfen bir geri bildirim isteği gönderin."
+ }
+}
diff --git a/locales/tr_TR/plugin.json b/locales/tr_TR/plugin.json
new file mode 100644
index 0000000000..fe2af719e7
--- /dev/null
+++ b/locales/tr_TR/plugin.json
@@ -0,0 +1,129 @@
+{
+ "debug": {
+ "arguments": "Argümanlar",
+ "function_call": "Fonksiyon Çağrısı",
+ "off": "Hata Ayıklamayı Kapat",
+ "on": "Eklenti Çağrı Bilgilerini Görüntüle",
+ "response": "Yanıt"
+ },
+ "dev": {
+ "confirmDeleteDevPlugin": "Bu eklentiyi silmek istediğinizden emin misiniz? Bir kere silindiğinde, geri alınamaz.",
+ "deleteSuccess": "Eklenti başarıyla silindi",
+ "manifest": {
+ "identifier": {
+ "desc": "Eklenti için benzersiz tanımlayıcı",
+ "label": "Tanımlayıcı"
+ },
+ "mode": {
+ "local": "Yapılandırma",
+ "local-tooltip": "Yapılandırma geçici olarak desteklenmiyor",
+ "url": "Çevrimiçi Bağlantı"
+ },
+ "name": {
+ "desc": "Eklenti başlığı",
+ "label": "Başlık",
+ "placeholder": "Arama Motoru"
+ }
+ },
+ "meta": {
+ "author": {
+ "desc": "Eklentinin yazarı",
+ "label": "Yazar"
+ },
+ "avatar": {
+ "desc": "Eklenti simgesi, Emoji veya URL kullanılabilir",
+ "label": "Simge"
+ },
+ "description": {
+ "desc": "Eklenti açıklaması",
+ "label": "Açıklama",
+ "placeholder": "Bilgi için arama motorunu sorgula"
+ },
+ "formFieldRequired": "Bu alan gereklidir",
+ "homepage": {
+ "desc": "Eklentinin ana sayfası",
+ "label": "Ana Sayfa"
+ },
+ "identifier": {
+ "desc": "Eklenti için benzersiz tanımlayıcı, manifestten otomatik olarak tanınacak",
+ "errorDuplicate": "Tanımlayıcı başka bir eklenti tarafından kullanılıyor, lütfen tanımlayıcıyı değiştirin",
+ "label": "Tanımlayıcı",
+ "pattenErrorMessage": "Sadece İngilizce karakterler, sayılar, - ve _ kullanılabilir"
+ },
+ "manifest": {
+ "desc": "LobeChat, eklentiyi bu bağlantı üzerinden yükleyecek",
+ "label": "Eklenti Tanım Dosyası (Manifest) URL'si",
+ "preview": "Manifesti Önizle",
+ "refresh": "Yenile"
+ },
+ "title": {
+ "desc": "Eklenti başlığı",
+ "label": "Başlık",
+ "placeholder": "Arama Motoru"
+ }
+ },
+ "metaConfig": "Eklenti meta veri yapılandırması",
+ "modalDesc": "Özel bir eklenti ekledikten sonra, eklenti doğrulama için veya doğrudan oturumda kullanılabilir. Eklenti geliştirme için lütfen <1>geliştirme dokümantasyonuna↗> başvurun.",
+ "preview": {
+ "card": "Eklenti Görünümünü Önizle",
+ "desc": "Eklenti Açıklamasını Önizle",
+ "title": "Eklenti Adı Önizlemesi"
+ },
+ "save": "Eklentiyi Yükle",
+ "saveSuccess": "Eklenti ayarları başarıyla kaydedildi",
+ "tabs": {
+ "manifest": "Manifest Tanımı",
+ "meta": "Eklenti Meta Verileri"
+ },
+ "title": "Eklenti Ekle",
+ "update": "Güncelle",
+ "updateSuccess": "Eklenti ayarları başarıyla güncellendi"
+ },
+ "error": {
+ "fetchError": "Manifest bağlantısı alınamadı. Lütfen bağlantının geçerli olduğundan ve çapraz köken erişimine izin verdiğinden emin olun.",
+ "installError": "{{name}} eklentisi yüklenemedi",
+ "manifestInvalid": "Manifest, şartnameye uygun değil. Doğrulama sonucu: \n\n {{error}}",
+ "noManifest": "Manifest dosyası mevcut değil",
+ "reinstallError": "{{name}} eklentisi yenilenemedi",
+ "urlError": "Bağlantı JSON formatında içerik döndürmedi. Lütfen geçerli bir bağlantı olduğundan emin olun"
+ },
+ "list": {
+ "item": {
+ "deprecated.title": "Eski",
+ "local.config": "Yapılandırma",
+ "local.title": "Özel"
+ }
+ },
+ "loading": {
+ "content": "Eklenti çağrılıyor...",
+ "plugin": "Eklenti çalışıyor..."
+ },
+ "pluginList": "Eklenti Listesi",
+ "plugins": {
+ "loading": "Eklentiler kontrol ediliyor...",
+ "unknown": "Bilinmeyen eklenti"
+ },
+ "setting": "Eklenti Ayarları",
+ "settings": {
+ "indexUrl": {
+ "title": "Pazar Endeksi",
+ "tooltip": "Çevrimiçi düzenleme şu anda desteklenmiyor. Lütfen dağıtım sırasında çevre değişkenleri üzerinden ayarlayın."
+ },
+ "modalDesc": "Eklenti pazarı adresini yapılandırdıktan sonra, özel bir eklenti pazarı kullanabilirsiniz.",
+ "title": "Eklenti Pazarı Ayarla"
+ },
+ "store": {
+ "empty": "Henüz yüklenmiş eklenti yok",
+ "install": "Yükle",
+ "installAllPlugins": "Tümünü Yükle",
+ "networkError": "Eklenti mağazası alınamadı. Lütfen ağ bağlantınızı kontrol edin ve tekrar deneyin.",
+ "releasedAt": "{{createdAt}} tarihinde yayınlandı",
+ "tabs": {
+ "all": "Tümü",
+ "installed": "Yüklü"
+ },
+ "title": "Eklenti Mağazası",
+ "uninstall": "Kaldır",
+ "placeholder": "Eklenti adını, açıklamasını veya anahtar kelimeleri ara..."
+ }
+}
diff --git a/locales/tr_TR/setting.json b/locales/tr_TR/setting.json
new file mode 100644
index 0000000000..84e5731aca
--- /dev/null
+++ b/locales/tr_TR/setting.json
@@ -0,0 +1,301 @@
+{
+ "danger": {
+ "clear": {
+ "action": "Temizle",
+ "confirm": "Tüm sohbet verilerini temizlemeyi onaylıyor musunuz?",
+ "desc": "Bu, oturum verilerini, asistanı, dosyaları, mesajları, eklentileri vb. temizleyecektir.",
+ "success": "Tüm oturum mesajları temizlendi",
+ "title": "Tüm Oturum Mesajlarını Temizle"
+ },
+ "reset": {
+ "action": "Sıfırla",
+ "confirm": "Tüm ayarları sıfırlamayı onaylıyor musunuz?",
+ "currentVersion": "Geçerli Sürüm",
+ "desc": "Tüm ayarları varsayılan değerlere sıfırlar",
+ "title": "Tüm Ayarları Sıfırla"
+ }
+ },
+ "header": {
+ "global": "Genel Ayarlar",
+ "session": "Oturum Ayarları",
+ "sessionWithName": "Oturum Ayarları · {{name}}"
+ },
+ "llm": {
+ "AzureOpenAI": {
+ "endpoint": {
+ "desc": "Bu değer, Azure portalındaki kaynağı kontrol ederken 'Keys and Endpoints' bölümünde bulunabilir",
+ "placeholder": "https://docs-test-001.openai.azure.com",
+ "title": "Azure API Adresi"
+ },
+ "models": {
+ "desc": "Desteklenen modeller",
+ "title": "Model Listesi"
+ },
+ "title": "Azure OpenAI Ayarları",
+ "token": {
+ "desc": "Bu değer, Azure portalındaki kaynağı kontrol ederken 'Keys and Endpoints' bölümünde bulunabilir. KEY1 veya KEY2'yi kullanabilirsiniz",
+ "placeholder": "Azure API Anahtarı",
+ "title": "API Anahtarı"
+ }
+ },
+ "OpenAI": {
+ "azureApiVersion": {
+ "desc": "Azure için API sürümü, YYYY-MM-DD formatını takip eder, [en son sürümü kontrol edin](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Listeyi Al",
+ "title": "Azure API Sürümü"
+ },
+ "check": {
+ "button": "Kontrol Et",
+ "desc": "Api Anahtarı ve proxy adresinin doğru şekilde doldurulup doldurulmadığını test eder",
+ "pass": "Kontrol Başarılı",
+ "title": "Bağlantı Kontrolü"
+ },
+ "customModelName": {
+ "desc": "Özel modeller ekleyin, birden fazla modeli virgülle (,) ayırarak yazın",
+ "placeholder": "model1,model2,model3",
+ "title": "Özel Model Adı"
+ },
+ "endpoint": {
+ "desc": "Varsayılan adresin yanı sıra http(s):// içermelidir",
+ "placeholder": "https://api.openai.com/v1",
+ "title": "API Proxy Adresi"
+ },
+ "models": {
+ "count": "Toplam {{count}} modeli destekler",
+ "desc": "Desteklenen modeller",
+ "fetch": "Model Listesini Al",
+ "notSupport": "Azure OpenAI şu anda model listesini görüntülemeyi desteklemiyor",
+ "notSupportTip": "Dağıtım adının model adıyla eşleştiğinden emin olmalısınız",
+ "refetch": "Model Listesini Yeniden Al",
+ "title": "Model Listesi"
+ },
+ "title": "OpenAI Ayarları",
+ "token": {
+ "desc": "Kendi OpenAI Anahtarınızı kullanın",
+ "placeholder": "OpenAI API Anahtarı",
+ "title": "API Anahtarı"
+ },
+ "useAzure": {
+ "desc": "Azure tarafından sağlanan OpenAI hizmetlerini kullanın",
+ "fetch": "Listeyi Al",
+ "serverConfig": "Yönetici, sunucu tarafında Azure OpenAI'yi etkinleştirdi ve değiştirme yasağı getirdi",
+ "title": "Azure OpenAI"
+ }
+ },
+ "waitingForMore": "Daha fazla model eklenmesi planlanıyor ✨"
+ },
+ "plugin": {
+ "addTooltip": "Eklenti Ekle",
+ "clearDeprecated": "Kullanım Dışı Eklentileri Kaldır",
+ "empty": "Henüz eklenti yok, <1>Eklenti Mağazası1>'nı keşfetmekten çekinmeyin",
+ "installStatus": {
+ "deprecated": "Kaldırıldı"
+ },
+ "settings": {
+ "hint": "Açıklamaya dayalı olarak aşağıdaki yapılandırmaları doldurun",
+ "title": "{{id}} Eklenti Yapılandırması",
+ "tooltip": "Eklenti Yapılandırması"
+ },
+ "store": "Eklenti Mağazası"
+ },
+ "settingAgent": {
+ "avatar": {
+ "title": "Avatar"
+ },
+ "backgroundColor": {
+ "title": "Arka Plan Rengi"
+ },
+ "description": {
+ "placeholder": "Asistan açıklamasını girin",
+ "title": "Asistan Açıklaması"
+ },
+ "name": {
+ "placeholder": "Asistan adını girin",
+ "title": "Ad"
+ },
+ "prompt": {
+ "placeholder": "Prompt girin",
+ "title": "Rol Ayarı"
+ },
+ "tag": {
+ "placeholder": "Etiket girin",
+ "title": "Etiket"
+ },
+ "title": "Asistan Bilgileri"
+ },
+ "settingChat": {
+ "autoCreateTopicThreshold": {
+ "desc": "Mevcut mesaj sayısı bu değeri aştığında otomatik olarak bir konu oluşturulur",
+ "title": "Mesaj Sınırı"
+ },
+ "chatStyleType": {
+ "title": "Sohbet Pencere Stili",
+ "type": {
+ "chat": "Konuşma Modu",
+ "docs": "Belge Modu"
+ }
+ },
+ "compressThreshold": {
+ "desc": "Sıkıştırılmamış geçmiş mesajlar bu değeri aştığında sıkıştırma uygulanır",
+ "title": "Geçmiş Mesaj Uzunluğu Sıkıştırma Eşiği"
+ },
+ "enableAutoCreateTopic": {
+ "desc": "Sohbet sırasında otomatik olarak bir konu oluşturup oluşturmayacağınız, yalnızca geçici konularda etkilidir",
+ "title": "Otomatik Konu Oluştur"
+ },
+ "enableCompressThreshold": {
+ "title": "Geçmiş Mesaj Uzunluğu Sıkıştırma Eşiği Kullan"
+ },
+ "enableHistoryCount": {
+ "alias": "Sınırsız",
+ "limited": "Yalnızca {{number}} konuşma mesajını içerir",
+ "title": "Geçmiş Mesaj Sayısı Sınırlama",
+ "unlimited": "Sınırsız geçmiş mesaj sayısı"
+ },
+ "historyCount": {
+ "desc": "Her istekle taşınan tarihsel mesaj sayısı",
+ "title": "Eklenen Geçmiş Mesaj Sayısı"
+ },
+ "inputTemplate": {
+ "desc": "Kullanıcının son mesajı bu şablona doldurulur",
+ "placeholder": "Ön işleme şablonu {{text}}, gerçek zamanlı giriş bilgileri ile değiştirilir",
+ "title": "Kullanıcı Girişi Ön İşleme"
+ },
+ "title": "Sohbet Ayarları"
+ },
+ "settingModel": {
+ "enableMaxTokens": {
+ "title": "Max Token Sınırlamasını Etkinleştir"
+ },
+ "frequencyPenalty": {
+ "desc": "Değer ne kadar yüksekse, tekrarlayan kelimeleri azaltma olasılığı o kadar yüksektir",
+ "title": "Frequency Penalty"
+ },
+ "maxTokens": {
+ "desc": "Her etkileşim için kullanılan maksimum token sayısı",
+ "title": "Max Token Sınırlaması"
+ },
+ "model": {
+ "desc": "ChatGPT modeli",
+ "list": {
+ "gpt-3.5-turbo": "GPT 3.5",
+ "gpt-3.5-turbo-16k": "GPT 3.5 (16K)",
+ "gpt-4": "GPT 4",
+ "gpt-4-32k": "GPT 4 (32K)"
+ },
+ "title": "Model"
+ },
+ "presencePenalty": {
+ "desc": "Değer ne kadar yüksekse, yeni konulara genişleme olasılığı o kadar yüksektir",
+ "title": "Presence Penalty"
+ },
+ "temperature": {
+ "desc": "Değer ne kadar yüksekse, yanıt o kadar rastgele olur",
+ "title": "Randomness",
+ "titleWithValue": "temperature {{value}}"
+ },
+ "title": "Model Ayarları",
+ "topP": {
+ "desc": "temperature gibi, ancak temperature ile birlikte değişmez",
+ "title": "Top P"
+ }
+ },
+ "settingPlugin": {
+ "title": "Eklenti Listesi"
+ },
+ "settingSystem": {
+ "accessCode": {
+ "desc": "Yönetici tarafından şifreleme erişimi etkinleştirildi",
+ "placeholder": "Erişim şifresini girin",
+ "title": "Erişim Şifresi"
+ },
+ "title": "Sistem Ayarları"
+ },
+ "settingTTS": {
+ "openai": {
+ "sttModel": "OpenAI Konuşmadan Metne Modeli",
+ "ttsModel": "OpenAI Metin Seslendirme Modeli"
+ },
+ "showAllLocaleVoice": {
+ "desc": "Kapalıysa, yalnızca mevcut dildeki sesler görüntülenir",
+ "title": "Tüm Yerel Sesleri Göster"
+ },
+ "stt": "Konuşmadan Metne Ayarlar",
+ "sttAutoStop": {
+ "desc": "Kapalıysa, konuşmadan metni otomatik olarak sona ermez ve manuel olarak durdurmak için tıklamanız gerekir",
+ "title": "Otomatik Durdur Konuşmadan Metin"
+ },
+ "sttLocale": {
+ "desc": "Konuşmadan metin dilini, bu seçenek konuşmadan metin tanıma doğruluğunu artırabilir",
+ "title": "Konuşmadan Metin Dil"
+ },
+ "sttService": {
+ "desc": "'Tarayıcı' yerel konuşmadan metin hizmeti olduğundan",
+ "title": "Konuşmadan Metin Hizmeti"
+ },
+ "title": "Konuşma Hizmeti",
+ "tts": "Metin Seslendirme Ayarlar",
+ "ttsService": {
+ "desc": "OpenAI metin seslendirme hizmetini kullanıyorsanız, OpenAI model hizmetinin etkin olduğundan emin olun",
+ "title": "Metin Seslendirme Hizmeti"
+ },
+ "voice": {
+ "desc": "Mevcut asistan için bir ses seçin, farklı TTS hizmetleri farklı sesleri destekler",
+ "preview": "Ses Önizlemesi",
+ "title": "Metin Seslendirme"
+ }
+ },
+ "settingTheme": {
+ "avatar": {
+ "title": "Avatar"
+ },
+ "fontSize": {
+ "desc": "Sohbet içeriği için yazı boyutu",
+ "title": "Yazı Boyutu"
+ },
+ "lang": {
+ "autoMode": "Sistem Takibi",
+ "title": "Dil"
+ },
+ "neutralColor": {
+ "desc": "Farklı renk eğilimleri için özel nötr renk",
+ "title": "Nötr Renk"
+ },
+ "primaryColor": {
+ "desc": "Özel ana tema rengi",
+ "title": "Ana Renk"
+ },
+ "themeMode": {
+ "auto": "Oto",
+ "dark": "Karanlık",
+ "light": "Açık",
+ "title": "Tema"
+ },
+ "title": "Tema Ayarları"
+ },
+ "submitAgentModal": {
+ "button": "Asistan Gönder",
+ "identifier": "Asistan Kimliği",
+ "metaMiss": "Lütfen göndermeden önce asistan bilgilerini tamamlayın. Bu, ad, açıklama ve etiketleri içermelidir.",
+ "placeholder": "Asistan için benzersiz bir kimlik girin, örneğin web-geliştirme",
+ "tooltips": "Asistan pazarına paylaşın"
+ },
+ "tab": {
+ "agent": "Varsayılan Asistan",
+ "common": "Genel Ayarlar",
+ "llm": "Modeller",
+ "tts": "Metin Seslendirme"
+ },
+ "tools": {
+ "builtins": {
+ "groupName": "Dahili Araçlar"
+ },
+ "plugins": {
+ "enabled": "Etkin: {{num}}",
+ "groupName": "Eklentiler",
+ "noEnabled": "Etkin eklenti yok",
+ "store": "Eklenti Mağazası"
+ },
+ "title": "Uzantı Araçları"
+ }
+}
diff --git a/locales/tr_TR/welcome.json b/locales/tr_TR/welcome.json
new file mode 100644
index 0000000000..4387151e76
--- /dev/null
+++ b/locales/tr_TR/welcome.json
@@ -0,0 +1,14 @@
+{
+ "button": {
+ "import": "İçe Aktar",
+ "start": "Başla"
+ },
+ "header": "Hoş geldiniz",
+ "pickAgent": "Veya aşağıdaki asistan şablonlarından birini seçin",
+ "skip": "Atla",
+ "slogan": {
+ "desc1": "Düşünmenin ve yaratmanın yeni çağının öncüsü. Size, Süper Birey'e özel olarak oluşturuldu.",
+ "desc2": "İlk asistanınızı oluşturun ve başlayalım~",
+ "title": "Beyninizin süper gücünü açığa çıkarın"
+ }
+}
diff --git a/locales/zh_CN/common.json b/locales/zh_CN/common.json
index abb1ffe08b..07cc0dec8b 100644
--- a/locales/zh_CN/common.json
+++ b/locales/zh_CN/common.json
@@ -58,7 +58,8 @@
"ru-RU": "俄语",
"zh": "简体中文",
"zh-CN": "简体中文",
- "zh-TW": "繁体中文"
+ "zh-TW": "繁体中文",
+ "tr-TR": "土耳其语"
},
"layoutInitializing": "正在加载布局...",
"noDescription": "暂无描述",
diff --git a/locales/zh_TW/common.json b/locales/zh_TW/common.json
index 4da28fd643..f4242fd88f 100644
--- a/locales/zh_TW/common.json
+++ b/locales/zh_TW/common.json
@@ -57,8 +57,10 @@
"ko-KR": "韓文",
"ru-RU": "俄文",
"zh": "簡體中文",
- "zh-CN": "簡體中文",
- "zh-TW": "繁體中文"
+ "zh-CN": "簡體中文",n
+ "zh-TW": "繁體中文",
+ "fr-FR": "法語",
+ "tr-TR": "土耳其"
},
"layoutInitializing": "正在載入版面配置...",
"noDescription": "暫無描述",
diff --git a/src/locales/default/common.ts b/src/locales/default/common.ts
index 7add3d2fe5..26efeae5ea 100644
--- a/src/locales/default/common.ts
+++ b/src/locales/default/common.ts
@@ -56,6 +56,7 @@ export default {
'ja-JP': '日语',
'ko-KR': '韩语',
'ru-RU': '俄语',
+ 'tr-TR': '土耳其语',
'zh': '简体中文',
'zh-CN': '简体中文',
'zh-TW': '繁体中文',
diff --git a/src/locales/options.ts b/src/locales/options.ts
index 8f25817b7e..9af414b42c 100644
--- a/src/locales/options.ts
+++ b/src/locales/options.ts
@@ -36,6 +36,10 @@ export const localeOptions: LocaleOptions = [
label: 'Français',
value: 'fr-FR',
},
+ {
+ label: 'Turkish',
+ value: 'tr-TR',
+ }
] as LocaleOptions;
export const supportLangs: string[] = localeOptions.map((i) => i.value);
diff --git a/src/locales/resources/index.ts b/src/locales/resources/index.ts
index bde29da699..3504660b49 100644
--- a/src/locales/resources/index.ts
+++ b/src/locales/resources/index.ts
@@ -1,5 +1,6 @@
import en_US from './en_US';
import fr_FR from './fr_FR';
+import tr_TR from './tr_TR';
import ja_JP from './ja_JP';
import ko_KR from './ko_KR';
import ru_RU from './ru_RU';
@@ -12,6 +13,7 @@ const resources = {
'ja-JP': ja_JP,
'ko-KR': ko_KR,
'ru-RU': ru_RU,
+ 'tr-TR': tr_TR,
'zh-CN': zh_CN,
'zh-TW': zh_TW,
} as const;
diff --git a/src/locales/resources/tr_TR.ts b/src/locales/resources/tr_TR.ts
new file mode 100644
index 0000000000..0a3782cc37
--- /dev/null
+++ b/src/locales/resources/tr_TR.ts
@@ -0,0 +1,23 @@
+import chat from '../../../locales/tr_TR/chat.json';
+import common from '../../../locales/tr_TR/common.json';
+import empty from '../../../locales/tr_TR/empty.json';
+import error from '../../../locales/tr_TR/error.json';
+import market from '../../../locales/tr_TR/market.json';
+import migration from '../../../locales/tr_TR/migration.json';
+import plugin from '../../../locales/tr_TR/plugin.json';
+import setting from '../../../locales/tr_TR/setting.json';
+import welcome from '../../../locales/tr_TR/welcome.json';
+
+const resources = {
+ chat,
+ common,
+ empty,
+ error,
+ market,
+ migration,
+ plugin,
+ setting,
+ welcome,
+} as const;
+
+export default resources;