diff --git a/README.md b/README.md index c31c911..98f262a 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ > **[Full Platform](https://www.open-health.me/)** - Advanced tools for comprehensive health management ### 🌍 Choose Your Language -[English](README.md) | [Français](i18n/readme/README.fr.md) | [Deutsch](i18n/readme/README.de.md) | [Español](i18n/readme/README.es.md) | [한국어](i18n/readme/README.ko.md) | [中文](i18n/readme/README.zh.md) | [日本語](i18n/readme/README.ja.md) | [Українська](i18n/readme/README.uk.md) | [Русский](i18n/readme/README.ru.md) | [اردو](i18n/readme/README.ur.md) +[English](README.md) | [Français](i18n/readme/README.fr.md) | [Deutsch](i18n/readme/README.de.md) | [Español](i18n/readme/README.es.md) | [한국어](i18n/readme/README.ko.md) | [中文](i18n/readme/README.zh.md) | [日本語](i18n/readme/README.ja.md) | [Українська](i18n/readme/README.uk.md) | [Русский](i18n/readme/README.ru.md) | [اردو](i18n/readme/README.ur.md) | [Türkçe](i18n/readme/README.tr.md) diff --git a/i18n/readme/README.tr.md b/i18n/readme/README.tr.md new file mode 100644 index 0000000..4efb2ae --- /dev/null +++ b/i18n/readme/README.tr.md @@ -0,0 +1,181 @@ +# 🚀 **OpenHealth** + +
+ +**Yapay Zekâ Sağlık Asistanı | Verilerinizle Güçlendirilmiş** + +

+ Platform + Language + Framework +

+ +> **📢 Artık Web’de Kullanılabilir!** +> OpenHealth’i daha erişilebilir hale getirdik; iki farklı seçenekle: +> **[Klinik](https://qna.open-health.me/)** - Hızlı ve kolay sağlık danışmanlığı +> **[Tam Platform](https://www.open-health.me/)** - Kapsamlı sağlık yönetimi için gelişmiş araçlar + +### 🌍 Dilinizi Seçin +[English](README.md) | [Français](i18n/readme/README.fr.md) | [Deutsch](i18n/readme/README.de.md) | [Español](i18n/readme/README.es.md) | [한국어](i18n/readme/README.ko.md) | [中文](i18n/readme/README.zh.md) | [日本語](i18n/readme/README.ja.md) | [Українська](i18n/readme/README.uk.md) | [Русский](i18n/readme/README.ru.md) | [اردو](i18n/readme/README.ur.md) | [Türkçe](i18n/readme/README.tr.md) + +
+ +--- + +

+ OpenHealth Demo +

+ +## 🌟 Genel Bakış + +> OpenHealth, **sağlık verilerinizi kontrol altına almanıza** yardımcı olur. +> Yapay zekâ ve kişisel sağlık bilgilerinizi kullanarak size özel bir sağlık asistanı sağlar. +> Maksimum gizlilik için tamamen yerel olarak çalıştırabilirsiniz. + +## ✨ Proje Özellikleri + +
+Temel Özellikler + +- 📊 **Merkezi Sağlık Verisi Girişi:** Tüm sağlık verilerinizi tek bir yerde toplayın. +- 🛠️ **Akıllı Ayrıştırma:** Verilerinizi otomatik olarak ayrıştırır ve yapılandırılmış dosyalara dönüştürür. +- 🤝 **Bağlamsal Sohbetler:** Yapılandırılmış verileri GPT destekli kişiselleştirilmiş sohbetlerde kullanın. + +
+ +## 📥 Desteklenen Veri Kaynakları & Dil Modelleri + + + + + + + + + + +
Ekleyebileceğiniz Veri KaynaklarıDesteklenen Dil Modelleri
+ • Kan Testi Sonuçları
+ • Sağlık Kontrol Verileri
+ • Kişisel Fiziksel Bilgiler
+ • Aile Geçmişi
+ • Semptomlar +
+ • LLaMA
+ • DeepSeek-V3
+ • GPT
+ • Claude
+ • Gemini +
+ +## 🤔 Neden OpenHealth? + +> - 💡 **Sağlığınız sizin sorumluluğunuzdur.** +> - ✅ Gerçek sağlık yönetimi, **verileriniz** + **zeka** birleşiminden doğar ve içgörüleri eyleme dönüştürür. +> - 🧠 Yapay zekâ, uzun vadeli sağlığınızı etkili bir şekilde yönetmede tarafsız bir araçtır. + +## 🗺️ Proje Diyagramı + +```mermaid +graph LR + subgraph Sağlık Veri Kaynakları + A1[Klinik Kayıtlar
Kan Testleri/Tanı
Reçeteler/Görüntüleme] + A2[Sağlık Platformları
Apple Health/Google Fit] + A3[Wearable Cihazlar
Oura/Whoop/Garmin] + A4[Kişisel Kayıtlar
Diyet/Semptomlar/
Aile Geçmişi] + end + + subgraph Veri İşleme + B1[Veri Ayrıştırma & Standardizasyon] + B2[Birleşik Sağlık Veri Formatı] + end + + subgraph Yapay Zekâ Entegrasyonu + C1[LLM İşleme
Ticari & Yerel Modeller] + C2[Etkileşim Yöntemleri
RAG/Cache/Agents] + end + + A1 & A2 & A3 & A4 --> B1 + B1 --> B2 + B2 --> C1 + C1 --> C2 + style A1 fill:#e6b3cc,stroke:#cc6699,stroke-width:2px,color:#000 + style A2 fill:#b3d9ff,stroke:#3399ff,stroke-width:2px,color:#000 + style A3 fill:#c2d6d6,stroke:#669999,stroke-width:2px,color:#000 + style A4 fill:#d9c3e6,stroke:#9966cc,stroke-width:2px,color:#000 + + style B1 fill:#c6ecd9,stroke:#66b399,stroke-width:2px,color:#000 + style B2 fill:#c6ecd9,stroke:#66b399,stroke-width:2px,color:#000 + + style C1 fill:#ffe6cc,stroke:#ff9933,stroke-width:2px,color:#000 + style C2 fill:#ffe6cc,stroke:#ff9933,stroke-width:2px,color:#000 + + classDef default color:#000 +``` + +> **Not:** Veri ayrıştırma fonksiyonu şu anda ayrı bir Python sunucusunda uygulanmaktadır. Gelecekte TypeScript’e taşınması planlanmaktadır. + +## Başlangıç + +## ⚙️ OpenHealth Nasıl Çalıştırılır + +
+Kurulum Talimatları + +1. **Depoyu Klonlayın:** + ```bash + git clone https://github.com/OpenHealthForAll/open-health.git + cd open-health + ``` + +2. **Kurulum ve Çalıştırma:** + ```bash + # Ortam dosyasını kopyalayın + cp .env.example .env + + # Docker/Podman Compose ile başlatın + docker/podman compose --env-file .env up + ``` + + Mevcut kullanıcılar için: + ```bash + # .env dosyası için ENCRYPTION_KEY oluşturun: + # Çıktıyı .env içindeki ENCRYPTION_KEY alanına ekleyin + echo $(head -c 32 /dev/urandom | base64) + + # Uygulamayı yeniden oluşturup başlatın + docker/podman compose --env-file .env up --build + ``` + to rebuild the image. Run this also if you make any modifications to the .env file. + +3. **OpenHealth’e Erişim:** + Tarayıcınızdan `http://localhost:3000` adresine giderek OpenHealth’i kullanmaya başlayabilirsiniz. + +> **Note:** Sistem iki ana bileşenden oluşur: ayrıştırma ve LLM. Ayrıştırma için docling kullanabilirsiniz, LLM bileşeni ise Ollama ile tamamen yerel çalıştırılabilir. + +> **Note:** Docker ile Ollama kullanıyorsanız, API endpoint’inizi şu şekilde ayarlayın: Mac: `http://docker.for.mac.localhost:11434` ya da Windows: `http://host.docker.internal:11434`. + +
+ +--- + +## Yıldız Geçmişi + +[![Star History Chart](https://api.star-history.com/svg?repos=OpenHealthForAll/open-health&type=Date)](https://star-history.com/#OpenHealthForAll/open-health&Date) + +--- + +## 🌐 Topluluk ve Destek + +
+ +### 💫 Hikayeni Paylaş | Güncellemeleri Takip Et | Geri Bildirim Ver +[![AIDoctor Subreddit](https://img.shields.io/badge/r/AIDoctor-FF4500?style=for-the-badge&logo=reddit&logoColor=white)](https://www.reddit.com/r/AIDoctor/) +[![Discord](https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/B9K654g4wf) + +### 🤝 Ekip ile İletişime Geç +[![Calendly](https://img.shields.io/badge/Schedule_Meeting-00A2FF?style=for-the-badge&logo=calendar&logoColor=white)](https://calendly.com/open-health/30min) +[![Email](https://img.shields.io/badge/Send_Email-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:sj@open-health.me) + +
+ diff --git a/messages/tr.json b/messages/tr.json new file mode 100644 index 0000000..feff398 --- /dev/null +++ b/messages/tr.json @@ -0,0 +1,203 @@ +{ + "HomePage": { + }, + "Chat": { + "inputPlaceholder": "Mesajınızı yazın..." + }, + "Feedback": { + "helpMessage": "OpenHealth'in sağlık sorunlarını sizin ve başkaları için çözmesine yardımcı olun", + "shareFeedback": "Geri Bildirim Paylaş", + "needHelpWithYourIssue": "Sorununuzla ilgili yardıma mı ihtiyacınız var?", + "askADoctor": "Bir Doktora Sor" + }, + "ChatSideBar": { + "sources": "Kaynaklar", + "numberOfFiles": "{value, number} dosya", + "countOfTokens": "{value, number} token", + "viewAggregatedSources": "Toplu kaynakları görüntüle", + "aggregatedSources": "Toplu Kaynaklar", + "manageSources": "Kaynakları Yönet", + "newChat": "Yeni Sohbet", + "copy": "Kopyala", + "download": "İndir", + "chatDeleteTitle": "Sohbeti Sil", + "chatDeleteMessage": "Bu sohbeti silmek istediğinizden emin misiniz?", + "chatDeleteMessageDetail": "Bu işlem geri alınamaz.", + "cancel": "İptal", + "delete": "Sil" + }, + "ChatSettingSideBar": { + "modelSettings": "Model Ayarları", + "systemPrompt": "Sistem Komutu", + "assistantMode": "Asistan Modu", + "addAssistant": "Asistan Ekle", + "selectModel": "Model Seç", + "selectCompany": "Şirket Seç", + "noModelsFound": "Model bulunamadı.", + "enterApiKey": "API Anahtarını Girin", + "show": "Göster", + "hide": "Gizle" + }, + "AssistantPage": { + "backToChat": "Sohbete Dön", + "addNewAssistant": "Yeni Asistan Ekle", + "createCustomAssistant": "Kendi ayarlarınızla özel bir asistan oluşturun", + "assistantName": "Asistan Adı", + "assistantNamePlaceholder": "örneğin, Tıbbi Asistan", + "description": "Açıklama", + "descriptionPlaceholder": "Bu asistanın ne yaptığını açıklayın...", + "descriptionHelp": "Asistanın amacı ve yetenekleri hakkında ayrıntılı bir açıklama sağlayın.", + "isPublic": "Bu asistanı herkese açık yap", + "isPublicHelp": "Herkese açık olursa, diğerleri bu asistanı kullanabilir. Bilginizi paylaşın.", + "systemPrompt": "Sistem Komutu", + "systemPromptPlaceholder": "Bu asistan için sistem komutunu girin...", + "systemPromptHelp": "Sistem komutu, asistanın davranışını ve bilgi tabanını tanımlar.", + "context": "Bağlam", + "contextPlaceholder": "Bu asistan için ek bağlam ekleyin...", + "contextHelp": "Ek bağlam, asistanın belirli alanları veya kullanıcı ihtiyaçlarını anlamasına yardımcı olur.", + "cancel": "İptal", + "createAssistant": "Asistan Oluştur" + }, + "SourceManagement": { + "title": "Kaynak Yönetimi", + "addSource": "Kaynak Ekle", + "addNewSource": "Yeni Kaynak Ekle", + "personalInfo": "Kişisel Bilgiler", + "parsingSettings": "Ayrıştırma Ayarları", + "parsingSettingsDescription": "Ayrıştırma performansını artırmak için Görüntü ve OCR modelleri birlikte kullanılır.", + "visionModel": "Görüntü Modeli", + "visionModelDescription": "Yalnızca görüntü yeteneklerine sahip modeller kullanılabilir.", + "documentModel": "Belge Modeli", + "documentModelDescription": "Docling, yerel olarak çalışan açık kaynaklı bir ayrıştırma modelidir.", + "documentModelDoclingGithub": "Github", + "documentModelUpstage": "Upstage", + "documentModelUpstageDescription": "Upstage, testlerimizde en iyi performansı gösterdi.", + "documentModelUpstageDescription2": "Yeni kayıtlar için $10 ücretsiz kredi sunar, kart gerekmez.", + "name": "Ad", + "birthdate": "Doğum Tarihi", + "height": "Boy", + "weight": "Kilo", + "bloodType": "Kan Grubu", + "familyHistory": "Aile Geçmişi", + "select": "Seç", + "extractedData": "Çıkarılan Veriler", + "update": "Güncelle", + "uploadFiles": "Dosya Yükle", + "uploadFilesDescription": "Görüntü veya PDF dosyaları ekleyin.", + "uploadSymptoms": "Yeni Semptomlar", + "uploadSymptomsDescription": "Bugünkü semptomları kaydedin.", + "date": "Tarih", + "endDate": "Bitiş Tarihi", + "description": "Açıklama", + "symptoms": "Semptomlar", + "selectModel": "Model Seç", + "apiKey": "API Anahtarı", + "enterYourAPIKey": "API anahtarınızı girin", + "enterYourAPIUrl": "API URL'nizi girin" + }, + "DynamicForm": { + "selectPlaceholder": "Seç..." + }, + "LoginPage": { + "username": "Kullanıcı Adı", + "usernamePlaceholder": "Kullanıcı adınızı girin", + "password": "Şifre", + "passwordPlaceholder": "••••••••", + "signIn": "Giriş Yap", + "needSignUp": "Hesabınız yok mu? Kayıt olun", + "alreadyHaveAccount": "Zaten hesabınız var mı? Giriş yapın", + "signUp": "Hesap Oluştur", + "invalidEmailFormat": "Geçersiz e-posta formatı" + }, + "Onboarding": { + "introduction": { + "title": "Sağlık Çözücüsü", + "subtitle": "OpenHealth tarafından", + "description": "Çözülemeyen sağlık sorunlarınız mı var?\nBırakın yapay zeka verilerinize derinlemesine baksın", + "privacyNotice": "Toplanan veriler yalnızca sağlık sorunlarınızı çözmek için kullanılacaktır.", + "runLocally": "Yerel olarak çalıştırabilirsiniz", + "here": "burada" + }, + "healthConcerns": { + "title": "Sağlık Sorunları", + "description": "Lütfen mevcut sağlık sorunlarınızı ayrıntılı olarak açıklayın", + "placeholder": "Örnek:\n- Hangi semptomları yaşıyorsunuz?\n- Ne zaman başladılar?\n- Semptomları kötüleştiren şeyler neler?\n- Daha önce benzer semptomlar yaşadınız mı?", + "error": "Lütfen sağlık sorunlarınızı açıklayın" + }, + "personalInfo": { + "title": "Kişisel Bilgiler", + "description": "Profilinizi daha iyi anlamamıza yardımcı olun", + "gender": { + "label": "Cinsiyet", + "male": "Erkek", + "female": "Kadın", + "error": "Lütfen cinsiyetinizi seçin" + }, + "birthDate": { + "label": "Doğum Tarihi", + "error": "Lütfen doğum tarihinizi girin" + }, + "height": { + "label": "Boy", + "placeholder": { + "cm": "170", + "ft": "5.6" + }, + "error": "Lütfen boyunuzu girin" + }, + "weight": { + "label": "Kilo", + "placeholder": { + "kg": "65", + "lb": "143" + }, + "error": "Lütfen kilonuzu girin" + }, + "ethnicity": { + "label": "Etnik Köken", + "placeholder": "Etnik kökeninizi seçin", + "options": { + "east_asian": "Doğu Asyalı", + "southeast_asian": "Güneydoğu Asyalı", + "south_asian": "Güney Asyalı", + "european": "Avrupalı", + "middle_eastern": "Orta Doğulu/Kuzey Afrikalı", + "african": "Afrikalı", + "african_american": "Afro-Amerikalı", + "pacific_islander": "Pasifik Adalı", + "native_american": "Yerli Amerikalı/İlkel", + "hispanic": "Hispanik/Latin", + "mixed": "Karışık Etnik Köken", + "other": "Diğer" + }, + "error": "Lütfen etnik kökeninizi seçin" + }, + "country": { + "label": "Ülke", + "placeholder": "Ülke adınızı yazın", + "error": "Lütfen ülkenizi seçin" + } + }, + "medicalRecords": { + "title": "Tıbbi Kayıtlar", + "description": "Daha iyi analiz için tıbbi kayıtlarınızı yükleyin (İsteğe bağlı)", + "dragDrop": { + "title": "Dosyalarınızı buraya sürükleyip bırakın", + "or": "veya", + "browse": "Dosyalara Göz At", + "supportedFormats": "Desteklenen formatlar: PDF, JPEG, PNG, DOC" + } + }, + "analysis": { + "description": "Yapay zeka sağlık verilerinizi analiz ediyor\nve kişiselleştirilmiş sağlık içgörüleri sunuyor" + }, + "navigation": { + "back": "Geri", + "next": "İleri", + "skip": "Atla" + }, + "healthSolver": { + "message": "Sağlık sorunlarımı anlat" + } + } +} \ No newline at end of file diff --git a/src/i18n/request.ts b/src/i18n/request.ts index 76d7562..81f26bf 100644 --- a/src/i18n/request.ts +++ b/src/i18n/request.ts @@ -4,7 +4,7 @@ import Negotiator from 'negotiator' import deepmerge from 'deepmerge'; export default getRequestConfig(async () => { - const availableLanguages = ['ko', 'en', 'ru', 'uk', 'de', 'fr', 'es', 'ja', 'zh', 'ur']; + const availableLanguages = ['ko', 'en', 'ru', 'uk', 'de', 'fr', 'es', 'ja', 'zh', 'ur', 'tr']; const acceptLanguage = (await headers()).get('accept-language'); const negotiator = new Negotiator({headers: {'accept-language': acceptLanguage || ''}}); const locale = negotiator.language(availableLanguages) || 'en';