Spaces:
Running
Running
Create languages.py
Browse files- languages.py +173 -0
languages.py
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# languages.py
|
| 2 |
+
"""
|
| 3 |
+
قاموس الترجمة للتطبيق - يدعم العربية والإنجليزية
|
| 4 |
+
"""
|
| 5 |
+
|
| 6 |
+
TRANSLATIONS = {
|
| 7 |
+
# عناوين عامة
|
| 8 |
+
"app_title": {"en": "Medical AI Librarian", "ar": "أمين المكتبة الطبي بالذكاء الاصطناعي"},
|
| 9 |
+
"app_subtitle": {"en": "Enhanced Cataloging • Accurate NLM Classification • Multi-Source Data",
|
| 10 |
+
"ar": "فهرسة محسنة • تصنيف NLM دقيق • بيانات متعددة المصادر"},
|
| 11 |
+
|
| 12 |
+
# الشريط الجانبي
|
| 13 |
+
"recent_searches": {"en": "🔍 Recent Searches", "ar": "🔍 عمليات البحث الأخيرة"},
|
| 14 |
+
"settings": {"en": "⚙️ Settings", "ar": "⚙️ الإعدادات"},
|
| 15 |
+
"clear_history": {"en": "🔄 Clear History", "ar": "🔄 مسح التاريخ"},
|
| 16 |
+
"nlm_quick_guide": {"en": "📊 NLM Quick Guide", "ar": "📊 دليل NLM السريع"},
|
| 17 |
+
"common_nlm_classifications": {"en": "Common NLM Classifications:", "ar": "تصنيفات NLM الشائعة:"},
|
| 18 |
+
"medical_textbooks": {"en": "Medical Textbooks: W 18-20", "ar": "الكتب الدراسية الطبية: W 18-20"},
|
| 19 |
+
"clinical_medicine": {"en": "Clinical Medicine: WB-WZ series", "ar": "الطب السريري: سلسلة WB-WZ"},
|
| 20 |
+
"basic_sciences": {"en": "Basic Sciences: QS-QZ series", "ar": "العلوم الأساسية: سلسلة QS-QZ"},
|
| 21 |
+
"health_professions": {"en": "Health Professions: WY, WA, WM", "ar": "المهن الصحية: WY, WA, WM"},
|
| 22 |
+
"common_examples": {"en": "Common Examples:", "ar": "أمثلة شائعة:"},
|
| 23 |
+
"anatomy_example": {"en": "Anatomy: QS 1", "ar": "التشريح: QS 1"},
|
| 24 |
+
"pharmacology_example": {"en": "Pharmacology: QV 1", "ar": "علم الأدوية: QV 1"},
|
| 25 |
+
"surgery_example": {"en": "Surgery: WO 100", "ar": "الجراحة: WO 100"},
|
| 26 |
+
"pediatrics_example": {"en": "Pediatrics: WS 1", "ar": "طب الأطفال: WS 1"},
|
| 27 |
+
"radiology_example": {"en": "Radiology: WN 1", "ar": "الأشعة: WN 1"},
|
| 28 |
+
"stats": {"en": "📊 Stats", "ar": "📊 الإحصائيات"},
|
| 29 |
+
"total_analyses": {"en": "Total Analyses", "ar": "إجمالي التحليلات"},
|
| 30 |
+
"current_isbn": {"en": "Current ISBN", "ar": "الرقم المعياري الحالي"},
|
| 31 |
+
"none": {"en": "None", "ar": "لا شيء"},
|
| 32 |
+
|
| 33 |
+
# منطقة الإدخال الرئيسية
|
| 34 |
+
"enter_isbn": {"en": "### 📚 Enter ISBN for Analysis", "ar": "### 📚 أدخل الرقم المعياري للتحليل"},
|
| 35 |
+
"isbn_placeholder": {"en": "Enter 10 or 13 digit ISBN (e.g., 9780323083737)",
|
| 36 |
+
"ar": "أدخل رقماً معيارياً من 10 أو 13 خانة (مثال: 9780323083737)"},
|
| 37 |
+
"analyze_button": {"en": "🔍 Analyze Book", "ar": "🔍 تحليل الكتاب"},
|
| 38 |
+
"view_stats_button": {"en": "📊 View Statistics", "ar": "📊 عرض الإحصائيات"},
|
| 39 |
+
|
| 40 |
+
# رسائل المعالجة
|
| 41 |
+
"initializing": {"en": "🔄 Initializing enhanced analysis...", "ar": "🔄 جاري تهيئة التحليل المحسن..."},
|
| 42 |
+
"fetching_metadata": {"en": "📥 Fetching enhanced metadata...", "ar": "📥 جلب البيانات الوصفية المحسنة..."},
|
| 43 |
+
"retrieving_cover": {"en": "🖼️ Retrieving book cover from multiple sources...",
|
| 44 |
+
"ar": "🖼️ جلب غلاف الكتاب من عدة مصادر..."},
|
| 45 |
+
"searching_context": {"en": "🌐 Searching for additional context...", "ar": "🌐 البحث عن سياق إضافي..."},
|
| 46 |
+
"ai_analysis": {"en": "🧠 Enhanced AI analysis with NLM classification...",
|
| 47 |
+
"ar": "🧠 تحليل الذكاء الاصطناعي المحسن مع تصنيف NLM..."},
|
| 48 |
+
"analysis_complete": {"en": "✅ Enhanced analysis complete!", "ar": "✅ اكتمل التحليل المحسن!"},
|
| 49 |
+
|
| 50 |
+
# أخطاء وتحذيرات
|
| 51 |
+
"invalid_isbn": {"en": "❌ Invalid ISBN format. Please enter a valid 10 or 13 digit ISBN.",
|
| 52 |
+
"ar": "❌ تنسيق ISBN غير صالح. الرجاء إدخال رقم صحيح مكون من 10 أو 13 خانة."},
|
| 53 |
+
"analysis_failed": {"en": "❌ Analysis failed. Please try again.", "ar": "❌ فشل التحليل. حاول مرة أخرى."},
|
| 54 |
+
"ai_payment_warning": {"en": "⚠️ AI service requires paid subscription. Using local classification instead.",
|
| 55 |
+
"ar": "⚠️ خدمة الذكاء الاصطناعي تحتاج إلى اشتراك مدفوع. يتم استخدام التصنيف المحلي بدلاً من ذلك."},
|
| 56 |
+
"ai_unexpected_error": {"en": "❌ Unexpected error in AI analysis: {}",
|
| 57 |
+
"ar": "❌ خطأ غير متوقع في تحليل الذكاء الاصطناعي: {}"},
|
| 58 |
+
|
| 59 |
+
# تبويبات
|
| 60 |
+
"tab_overview": {"en": "📖 Overview", "ar": "📖 نظرة عامة"},
|
| 61 |
+
"tab_details": {"en": "🔍 Details", "ar": "🔍 التفاصيل"},
|
| 62 |
+
"tab_cataloging": {"en": "🏷️ Cataloging", "ar": "🏷️ الفهرسة"},
|
| 63 |
+
"tab_ai_insights": {"en": "📊 AI Insights", "ar": "📊 رؤى الذكاء الاصطناعي"},
|
| 64 |
+
|
| 65 |
+
# نظرة عامة
|
| 66 |
+
"quick_stats": {"en": "📈 Quick Stats", "ar": "📈 إحصائيات سريعة"},
|
| 67 |
+
"authors_label": {"en": "Authors", "ar": "المؤلفون"},
|
| 68 |
+
"quality_label": {"en": "Quality", "ar": "الجودة"},
|
| 69 |
+
"year_label": {"en": "Year", "ar": "السنة"},
|
| 70 |
+
"acquisition_decision": {"en": "📋 Acquisition Decision", "ar": "📋 قرار الاقتناء"},
|
| 71 |
+
"target_audience": {"en": "🎯 Target Audience", "ar": "🎯 الجمهور المستهدف"},
|
| 72 |
+
"not_specified": {"en": "Not specified", "ar": "غير محدد"},
|
| 73 |
+
|
| 74 |
+
# التفاصيل
|
| 75 |
+
"summary": {"en": "📝 Summary", "ar": "📝 الملخص"},
|
| 76 |
+
"no_summary": {"en": "No summary available.", "ar": "لا يوجد ملخص متاح."},
|
| 77 |
+
"table_of_contents": {"en": "📑 Table of Contents", "ar": "📑 جدول المحتويات"},
|
| 78 |
+
"not_available": {"en": "Not available.", "ar": "غير متاح."},
|
| 79 |
+
"mesh_subjects": {"en": "🏷️ MeSH Subjects", "ar": "🏷️ موضوعات MeSH"},
|
| 80 |
+
"no_mesh": {"en": "No MeSH terms identified.", "ar": "لم يتم تحديد مصطلحات MeSH."},
|
| 81 |
+
"nlm_classification": {"en": "📚 NLM Classification (060)", "ar": "📚 تصنيف NLM (060)"},
|
| 82 |
+
"classification_reasoning": {"en": "📖 Classification Reasoning", "ar": "📖 سبب التصنيف"},
|
| 83 |
+
"alternative_classifications": {"en": "🔀 Alternative Classifications", "ar": "🔀 تصنيفات بديلة"},
|
| 84 |
+
"confidence_level": {"en": "Confidence Level", "ar": "مستوى الثقة"},
|
| 85 |
+
"quality_score": {"en": "Quality Score", "ar": "درجة الجودة"},
|
| 86 |
+
"code_label": {"en": "Code", "ar": "الرمز"},
|
| 87 |
+
"reason_label": {"en": "Reason", "ar": "السبب"},
|
| 88 |
+
|
| 89 |
+
# الفهرسة
|
| 90 |
+
"marc_record": {"en": "💻 MARC21 Record - Complete Edition", "ar": "💻 تسجيلة MARC21 - نسخة كاملة"},
|
| 91 |
+
"download_marc": {"en": "📥 MARC21 (.mrc)", "ar": "📥 MARC21 (.mrc)"},
|
| 92 |
+
"download_iso": {"en": "📊 ISO 2709 (.iso)", "ar": "📊 ISO 2709 (.iso)"},
|
| 93 |
+
"download_json": {"en": "📋 JSON Metadata", "ar": "📋 بيانات JSON"},
|
| 94 |
+
"download_xml": {"en": "📑 XML/MARCXML", "ar": "📑 XML/MARCXML"},
|
| 95 |
+
|
| 96 |
+
# رؤى الذكاء الاصطناعي
|
| 97 |
+
"ai_details": {"en": "🤖 AI Analysis Details", "ar": "🤖 تفاصيل تحليل الذكاء الاصطناعي"},
|
| 98 |
+
"data_sources": {"en": "Data Sources", "ar": "مصادر البيانات"},
|
| 99 |
+
"metadata_source": {"en": "Metadata source", "ar": "مصدر البيانات الوصفية"},
|
| 100 |
+
"nlm_analysis": {"en": "NLM Classification Analysis", "ar": "تحليل تصنيف NLM"},
|
| 101 |
+
"web_context": {"en": "🔍 Web Context Sources", "ar": "🔍 مصادر سياق الويب"},
|
| 102 |
+
"no_web_context": {"en": "No web context available.", "ar": "لا يوجد سياق ويب متاح."},
|
| 103 |
+
|
| 104 |
+
# الفوتر
|
| 105 |
+
"footer_text": {"en": "Medical AI Librarian v3.0 • Enhanced Accuracy • Multi-Source Data",
|
| 106 |
+
"ar": "أمين المكتبة الطبي بالذكاء الاصطناعي v3.0 • دقة محسنة • بيانات متعددة المصادر"},
|
| 107 |
+
"footer_powered": {"en": "Powered by Hugging Face & Streamlit • Transforming Medical Library Management",
|
| 108 |
+
"ar": "مدعوم من Hugging Face و Streamlit • تحويل إدارة المكتبات الطبية"},
|
| 109 |
+
|
| 110 |
+
# إحصائيات
|
| 111 |
+
"stats_dashboard": {"en": "📊 Statistics Dashboard", "ar": "📊 لوحة الإحصائيات"},
|
| 112 |
+
"analytics_for": {"en": "Analytics for medical cataloging activities",
|
| 113 |
+
"ar": "تحليلات لأنشطة الفهرسة الطبية"},
|
| 114 |
+
"success_rate": {"en": "Success Rate", "ar": "معدل النجاح"},
|
| 115 |
+
"avg_confidence": {"en": "Avg Confidence", "ar": "متوسط الثقة"},
|
| 116 |
+
"unique_nlm_codes": {"en": "Unique NLM Codes", "ar": "رموز NLM الفريدة"},
|
| 117 |
+
"analysis_trends": {"en": "📈 Analysis Trends", "ar": "📈 اتجاهات التحليل"},
|
| 118 |
+
"daily_analyses_trend": {"en": "📅 Daily Analyses Trend", "ar": "📅 اتجاه التحليلات اليومية"},
|
| 119 |
+
"top_nlm": {"en": "🏷️ Top 10 NLM Classifications", "ar": "🏷️ أفضل 10 تصنيفات NLM"},
|
| 120 |
+
"recent_activity": {"en": "📋 Recent Activity", "ar": "📋 النشاط الأخير"},
|
| 121 |
+
"export_csv": {"en": "📥 Export History as CSV", "ar": "📥 تصدير التاريخ كـ CSV"},
|
| 122 |
+
"nlm_insights": {"en": "🎯 NLM Classification Insights", "ar": "🎯 رؤى تصنيف NLM"},
|
| 123 |
+
"current_classification_confidence": {"en": "Current Classification Confidence",
|
| 124 |
+
"ar": "ثقة التصنيف الحالي"},
|
| 125 |
+
"most_common_classifications": {"en": "🏆 Most Common Classifications",
|
| 126 |
+
"ar": "🏆 التصنيفات الأكثر شيوعاً"},
|
| 127 |
+
"analysis_summary": {"en": "�� Analysis Summary", "ar": "📊 ملخص التحليل"},
|
| 128 |
+
"books_cataloged": {"en": "Total Books Cataloged", "ar": "إجمالي الكتب المفهرسة"},
|
| 129 |
+
"analyses_today": {"en": "Analyses Today", "ar": "تحليلات اليوم"},
|
| 130 |
+
"no_history": {"en": """
|
| 131 |
+
📊 **No analysis history yet!**
|
| 132 |
+
|
| 133 |
+
Start by analyzing some medical books:
|
| 134 |
+
1. Go to the main page
|
| 135 |
+
2. Enter an ISBN number
|
| 136 |
+
3. Click "Analyze Book"
|
| 137 |
+
4. Your analyses will appear here
|
| 138 |
+
""", "ar": """
|
| 139 |
+
📊 **لا يوجد سجل تحليلات بعد!**
|
| 140 |
+
|
| 141 |
+
ابدأ بتحليل بعض الكتب الطبية:
|
| 142 |
+
1. اذهب إلى الصفحة الرئيسية
|
| 143 |
+
2. أدخل رقماً معيارياً
|
| 144 |
+
3. انقر "تحليل الكتاب"
|
| 145 |
+
4. ستظهر تحليلاتك هنا
|
| 146 |
+
"""},
|
| 147 |
+
"performance_metrics": {"en": "⚡ Performance Metrics", "ar": "⚡ مقاييس الأداء"},
|
| 148 |
+
"cover_success_rate": {"en": "Cover Success Rate", "ar": "معدل نجاح الغلاف"},
|
| 149 |
+
"date_accuracy": {"en": "Date Accuracy", "ar": "دقة التاريخ"},
|
| 150 |
+
"nlm_accuracy": {"en": "NLM Accuracy", "ar": "دقة NLM"},
|
| 151 |
+
"last_updated": {"en": "Data is stored locally in your session • Last updated: {}",
|
| 152 |
+
"ar": "البيانات مخزنة محلياً في جلستك • آخر تحديث: {}"},
|
| 153 |
+
"transforming_footer": {"en": "🏥 Transforming Medical Library Management with AI",
|
| 154 |
+
"ar": "🏥 تحويل إدارة المكتبات الطبية بالذكاء الاصطناعي"},
|
| 155 |
+
|
| 156 |
+
# رسائل الذكاء الاصطناعي
|
| 157 |
+
"local_classification_mode": {"en": "ℹ️ يعمل النظام حاليًا بوضع **التصنيف المحلي المتقدم** (بدون ذكاء اصطناعي). تتوفر جميع البيانات الأساسية.",
|
| 158 |
+
"ar": "ℹ️ النظام يعمل حالياً في وضع **التصنيف المحلي المتقدم** (بدون ذكاء اصطناعي). جميع البيانات الأساسية متاحة."},
|
| 159 |
+
"ai_connected": {"en": "✅ تم الاتصال بخدمة الذكاء الاصطناعي بنجاح.",
|
| 160 |
+
"ar": "✅ تم الاتصال بخدمة الذكاء الاصطناعي بنجاح."},
|
| 161 |
+
"ai_error": {"en": "⚠️ Hugging Face client error: {}. باستخدام التصنيف المحلي فقط.",
|
| 162 |
+
"ar": "⚠️ خطأ في عميل Hugging Face: {}. سيتم استخدام التصنيف المحلي فقط."},
|
| 163 |
+
"no_hf_token": {"en": "🔑 لم يتم العثور على HF_TOKEN. يعمل النظام بالتصنيف المحلي فقط.",
|
| 164 |
+
"ar": "🔑 لم يتم العثور على رمز HF_TOKEN. النظام يعمل بالتصنيف المحلي فقط."},
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
def get_text(key, lang='en'):
|
| 168 |
+
"""إرجاع النص المقابل للمفتاح واللغة المحددة."""
|
| 169 |
+
return TRANSLATIONS.get(key, {}).get(lang, key)
|
| 170 |
+
|
| 171 |
+
def get_language_direction(lang):
|
| 172 |
+
"""إرجاع اتجاه الصفحة بناءً على اللغة."""
|
| 173 |
+
return 'rtl' if lang == 'ar' else 'ltr'
|