Spaces:
Runtime error
Runtime error
| # Dil seçeneğini ConfigManager'dan (circular import olmaması için) veya direkt dosyadan okuyabiliriz. | |
| # En sağlıklısı: Bir "current_language" global değişkeni tutmak ve bunu main.py veya config_manager update ettiğinde değiştirmek. | |
| # Ancak basit olması açısından burada dosyayı okuyalım (cache ile). | |
| import json | |
| import os | |
| _CACHED_LANG = None | |
| def get_db_lang(): | |
| global _CACHED_LANG | |
| # Her çağrıda dosya okumak performansı düşürebilir, bu yüzden basit bir cache mekanizması ekleyelim. | |
| # Ancak dil değiştiğinde uygulamanın yeniden başlatılması gerektiği için bu güvenlidir. | |
| if _CACHED_LANG: return _CACHED_LANG | |
| config_path = "data/configs/config.json" | |
| if os.path.exists(config_path): | |
| try: | |
| with open(config_path, "r", encoding="utf-8") as f: | |
| data = json.load(f) | |
| _CACHED_LANG = data.get("general_settings", {}).get("language", "tr") | |
| return _CACHED_LANG | |
| except: pass | |
| return "tr" | |
| def get_str(key): | |
| lang = get_db_lang() | |
| # 1. Hedef dil sözlüğünü al | |
| target_dict = STRINGS.get(lang, STRINGS["tr"]) | |
| # 2. Key varsa döndür | |
| if key in target_dict: | |
| return target_dict[key] | |
| # 3. Yedeğe (İngilizce'ye) bak (Eğer hedef dilde yoksa) | |
| if lang != "en" and "en" in STRINGS and key in STRINGS["en"]: | |
| return STRINGS["en"][key] | |
| # 4. Hiçbir yerde yoksa key'i olduğu gibi döndür | |
| return key | |
| STRINGS = { | |
| "tr": { | |
| # Settings Tab | |
| "tab_settings_title": "⚙️ Ayarlar", | |
| "settings_header": "<h2 style='color:#2c3e50;'>Genel Yapılandırma ve Model Ayarları</h2>", | |
| "save_settings_btn": "💾 Tüm Ayarları Kaydet", | |
| "status_label": "Durum", | |
| "device_section": "### 🖥️ Cihaz, Dil & Kural Dosyaları", | |
| "device_label": "Çalıştırma Cihazı", | |
| "device_info": "Modellerin hangi işlemcide çalışacağını belirler.", | |
| "language_label": "Dil / Language", | |
| "language_info": "Uygulama dilini değiştirir (Yeniden başlatma gerekir).", | |
| "theme_label": "Arayüz Teması / UI Theme", | |
| "theme_info": "Uygulama temasını değiştirir (Yeniden başlatma gerekir).", | |
| "replacement_file_label": "Değiştirme Dosyası (Regex)", | |
| "synonym_file_label": "Birleştirme Dosyası (Eşanlamlı)", | |
| "addition_file_label": "Ekleme Dosyası (Sona Eklenecekler)", | |
| "sort_order_label": "Etiket Sıralama Yöntemi", | |
| "sort_alpha": "Alfabetik", | |
| "sort_len": "Uzunluğa Göre", | |
| "sort_random": "Rastgele", | |
| "sort_orig": "Orijinal", | |
| "model_mobilenet": "MobileNet V4 (Hızlı)", | |
| "model_convnext": "ConvNeXt V2 Huge (Pro)", | |
| "model_caformer": "Caformer B36 (Yeni)", | |
| "categorization_section": "### 🗂️ Mod Bazlı Kategorizasyon Ayarları", | |
| "categorization_desc": "Aşağıdaki sekmelerden her bir mod için ayrı kategorizasyon ayarı yapabilirsiniz.", | |
| "tab_single": "Tekil Mod", | |
| "tab_batch": "Toplu Mod", | |
| "tab_dual_left": "Dual Mod (Sol)", | |
| "tab_dual_right": "Dual Mod (Sağ)", | |
| "enable_cat_single": "Tekil Modda Kategorizasyonu Etkinleştir", | |
| "cat_single_label": "Tekil Mod Kategorileri", | |
| "enable_cat_batch": "Toplu Modda Kategorizasyonu Etkinleştir", | |
| "cat_batch_label": "Toplu Mod Kategorileri", | |
| "enable_cat_dual1": "Dual Mod Resim 1 (Sol) Kategorizasyon", | |
| "cat_dual1_label": "Dual Resim 1 Kategorileri", | |
| "enable_cat_dual2": "Dual Mod Resim 2 (Sağ) Kategorizasyon", | |
| "cat_dual2_label": "Dual Resim 2 Kategorileri", | |
| "model_sensitivity_section": "### 🤖 Model Hassasiyet Ayarları", | |
| "context_weight_label": "Bağlam Ağırlığı (Context Weight)", | |
| "context_weight_info": "Etiketleri rafine ederken veritabanında olmayan 'Unknown' etiketleri temizleme şiddeti.", | |
| "joint_settings": "Joint Tagger Ayarları", | |
| "use_joint": "Joint Etiketleyiciyi Kullan", | |
| "joint_thresh": "Joint Eşiği", | |
| "cl_settings": "CL Tagger Ayarları", | |
| "use_cl": "CL Tagger'ı Kullan", | |
| "cl_gen_thresh": "CL General/Meta/Model Eşiği", | |
| "cl_char_thresh": "CL Character/Copyright/Artist Eşiği", | |
| "pixai_settings": "PixAI Tagger Ayarları", | |
| "use_pixai": "PixAI Tagger'ı Kullan", | |
| "pixai_gen_thresh": "PixAI General Eşiği", | |
| "pixai_char_thresh": "PixAI Character Eşiği", | |
| "anime_settings": "Anime Tagger (MobileNet/ConvNeXt/Caformer)", | |
| "use_anime": "Anime Tagger'ı Kullan", | |
| "anime_model_label": "Model Seçimi", | |
| "anime_thresh": "Etiket Eşiği", | |
| "gemini_settings": "✨ Gemini Caption (Doğal Dil)", | |
| "gemini_desc": "Görselleri etiket listesi yerine **doğal cümlelerle** betimler.", | |
| "use_gemini": "Gemini Caption Kullan", | |
| "gemini_api_key": "Google Gemini API Key", | |
| "gemini_model": "Gemini Modeli", | |
| "gemini_model_info": "Kullanılacak Gemini model versiyonunu seçin.", | |
| "gemini_mode_label": "Gemini Modu", | |
| "gemini_mode_info": "Vision: Sadece resme bakar. Tags: Sadece etiketleri kullanır. Vision + Tags: İkisini birleştirir.", | |
| "gemini_system_instr": "Sistem Talimatı (System Instruction)", | |
| "gemini_system_info": "Modelin genel davranışını ve kimliğini belirleyen ana talimat.", | |
| "gemini_prompt_settings": "#### 📝 Mod Bazlı Prompt Ayarları", | |
| "prompt_vision": "Vision Modu Prompt", | |
| "prompt_tags": "Tags Modu Prompt", | |
| "prompt_hybrid": "Vision + Tags Modu Prompt", | |
| "save_success": "✅ Tüm genel ve özelleştirilmiş kategorizasyon ayarları kaydedildi. Dil değişikliğinin etkili olması için uygulamayı yeniden başlatın.", | |
| # App Title | |
| "app_title": "Ultra Pro Tagger V1", | |
| "app_subtitle": "Yapay Zeka Destekli Otomatik Etiketleme ve Düzenleme Suiti", | |
| # Main UI | |
| "btn_close_app": "Uygulamayı Kapat", | |
| "btn_restart_app": "Uygulamayı Yeniden Başlat", | |
| # Single Tab | |
| "tab_single_title": "✨ Tekil Etiketleme", | |
| "btn_process_single": "Görseli Etiketle (Genel Ayarlar ile)", | |
| "label_image_upload": "Görsel Yükle", | |
| "tab_raw_tags": "Has Etiketler", | |
| "label_unique_tags": "Birleşik Benzersiz Etiketler", | |
| "btn_send_to_cat": "Bu Etiketleri Kategorizasyona Gönder ➡️", | |
| "tab_refined_tags": "Rafine Edilmiş", | |
| "label_refined_tags": "Rafine Edilmiş (Temizlenmiş) Etiketler", | |
| "tab_categorized_tags": "Kategorize Edilmiş", | |
| "label_categorized_tags": "Kategorize Edilmiş Etiketler", | |
| "header_wildcard": "### 📂 Wildcard Paketine Ekle", | |
| "tab_gemini_caption": "Cümlelendirilmiş (GeminiCaption)", | |
| "label_gemini_caption": "Gemini Betimlemesi", | |
| "tab_combined_caption": "Kategorize + Cümlelendirilmiş (GeminiCaption)", | |
| "label_combined_caption": "Kategorize ve Gemini Birleşimi", | |
| # Batch Tab | |
| "tab_batch_title": "📚 Toplu Etiketleme", | |
| "btn_process_batch": "Resimleri İşle (Genel Ayarlar ile)", | |
| "label_batch_input": "Resimleri Yükleyin (Çoklu Seçim)", | |
| "tab_batch_original": "Orijinal Etiketler (Birleşik)", | |
| "label_batch_original": "Tüm Resimlerden Orijinal Etiketler", | |
| "tab_batch_refined": "Rafine Edilmiş (Birleşik)", | |
| "label_batch_refined": "Tüm Resimlerden Rafine Edilmiş Etiketler", | |
| "tab_batch_cat": "Kategorize Edilmiş (Satır Satır)", | |
| "tab_batch_gemini": "Gemini Caption (Tümü)", | |
| "label_batch_gemini": "Tüm Görsellerin Betimlemeleri", | |
| "tab_batch_html": "Detaylı HTML Raporu", | |
| "label_batch_html": "Detaylı Sonuçlar", | |
| "btn_batch_download": "Tüm Sonuç Etiketleri İndir (.txt)", | |
| # Dual Tab | |
| "tab_dual_title": "↔️ Dual Etiketleme", | |
| "dual_note": "<p style='color:#666; font-size:0.9em;'>Not: Dual modda her iki resim için 'Ayarlar' sekmesindeki ayrı kategorizasyon ayarları kullanılır.</p>", | |
| "btn_process_dual": "Görselleri Karşılaştır ve Etiketle", | |
| "label_img1": "Görsel 1", | |
| "label_img2": "Görsel 2", | |
| "tab_dual_combined": "Birleştirilmiş", | |
| "label_dual_combined": "İki Resmin Birleşimi (Benzersiz)", | |
| "label_dual_refined": "İki Resmin Birleşimi (Rafine)", | |
| "label_dual_cat": "Birleşik Kategorize Edilmiş", | |
| "label_gemini_img1": "Görsel 1 Gemini", | |
| "label_gemini_img2": "Görsel 2 Gemini", | |
| # Tools Tab | |
| "tab_prompt_gen": "📝 Prompt Oluşturucu", | |
| "tab_category_tools": "🏷️ Kategori Araçları", | |
| "tab_rule_management": "🔁 Kural Yönetimi", | |
| "tab_text_tools": "📝 Metin Araçları", | |
| "tab_image_tools": "🖼️ Resim Araçları", | |
| "tab_video_creator": "🎬 Video Oluşturucu", | |
| "tab_art_studio": "🎨 Sanat Stüdyosu", | |
| "label_tags_input": "Etiketleri girin (virgülle ayırın)", | |
| "placeholder_tags_input": "örnek: 1kız, mavi saç, uzun saç, kedi kulakları...", | |
| # Category Tools | |
| "cat_live_tab_title": "Canlı Kategorizasyon", | |
| "cat_live_header": "<h2 style='color:#2563eb'>Etiketleri Kategorilere Ayırın</h2>", | |
| "cat_live_main_tab": "Ana Kategorizasyon", | |
| "cat_live_main_select": "Gösterilecek Ana Kategorileri Seç", | |
| "cat_live_main_btn": "Ana Kategorilere Ayır", | |
| "cat_live_unmatched_btn": "⚠️ Eşleşmeyenleri Düzenleyiciye Aktar ve Düzenle ➡️", | |
| "cat_live_main_output": "Ana Kategorize Edilmiş Etiketler", | |
| "cat_manage_tab_title": "Kategori/Etiket Düzenleme", | |
| "cat_manage_header": "<h3 style='color:#007bff;'>Kategori ve Etiket Dosyalarını Yönetin</h3>", | |
| "cat_manage_main_accordion": "Ana Kategori Yönetimi", | |
| "cat_manage_main_grid": "Tüm Kategoriler", | |
| "cat_manage_main_refresh": "↻ Ana Kategorileri Yenile", | |
| "cat_manage_main_select": "Kategori Seç", | |
| "cat_manage_tags_input": "Etiketler (virgülle ayırın)", | |
| "btn_add": "Ekle", | |
| "btn_delete": "Sil", | |
| # Category Redesign | |
| "cat_redesign_live_tab": "Kategorilere Ayır", | |
| "cat_redesign_main_tab": "📂 Kategori Yönetimi", | |
| # Image Tools | |
| "img_tools_header": "<h3 style='color:#0077b6;'>Toplu Resim İşleme</h3>", | |
| "img_tools_paths_input": "Klasör Yolları (Her satıra bir yol)", | |
| "img_tools_select_folder_btn": "📁 Klasör Seç", | |
| "img_tools_clear_btn": "🗑️ Temizle", | |
| "img_tools_save_settings_btn": "Yolu ve Araç Ayarlarını Kaydet", | |
| "img_tools_res_accordion": "1. 📐 Çözünürlük", | |
| "img_tools_scale_label": "Oran", | |
| "btn_apply": "Uygula", | |
| "img_tools_rename_accordion": "2. 📝 İsimlendirme (Şablonlu)", | |
| "img_tools_rename_desc": "Dosyaları sırasıyla yeniden adlandırır. Şablonun içinde mutlaka **`{Number}`** olmalıdır.", | |
| "img_tools_template_select": "Hazır Şablonlar", | |
| "img_tools_delete_template_btn": "🗑️ Şablonu Sil", | |
| "img_tools_new_template_input": "Yeni Şablon Ekle", | |
| "img_tools_new_template_placeholder": "Örn: Adoptable {Number} (Elf)", | |
| "img_tools_add_template_btn": "➕ Listeye Ekle", | |
| "img_tools_start_num": "Başlangıç Numarası (Start)", | |
| "img_tools_digit_count": "Basamak Sayısı (001 için 3)", | |
| "img_tools_rename_btn": "Dosyaları Yeniden Adlandır", | |
| "img_tools_watermark_accordion": "3. 🖋️ Filigran", | |
| "img_tools_watermark_default": "Örnek Filigran", | |
| "img_tools_watermark_text": "Metin", | |
| "img_tools_watermark_opacity": "Opaklık", | |
| "img_tools_watermark_size": "Font Boyutu", | |
| "img_tools_watermark_angle": "Açı", | |
| "img_tools_format_accordion": "4. 🖼️ Format", | |
| "img_tools_format_label": "Format", | |
| "btn_convert": "Dönüştür", | |
| "img_tools_bc_accordion": "5. 🔅 Parlaklık/Kontrast", | |
| "img_tools_brightness": "Parlaklık", | |
| "img_tools_contrast": "Kontrast", | |
| "img_tools_ds_accordion": "6. 🧼 Gürültü/Netlik", | |
| "img_tools_denoise": "Gürültü Azaltma", | |
| "img_tools_sharpen": "Netleştirme", | |
| # Text Tools | |
| "txt_tools_header": "<h3 style='color:#28a745;'>Manuel Metin Araçları</h3>", | |
| "txt_tools_input": "İşlenecek Metin", | |
| "txt_tools_tab_clean": "Temizleme", | |
| "txt_tools_clean_btn": "Temizle ve Tekilleştir", | |
| "label_result": "Sonuç", | |
| "txt_tools_tab_format": "Format Değiştirme", | |
| "txt_tools_lines_to_comma": "Satır -> Virgül", | |
| "txt_tools_comma_to_lines": "Virgül -> Satır", | |
| "txt_tools_tab_random": "Rastgele Seç", | |
| "txt_tools_line_count": "Satır Sayısı", | |
| "btn_select": "Seç", | |
| "btn_filter": "Filtrele", | |
| # Rule Tools | |
| "rule_tools_intro": "Bu alanda etiketlerin nasıl değiştirileceğini, birleştirileceğini ve sonuçlara hangi etiketlerin ekleneceğini yönetebilirsiniz.", | |
| "rule_rep_desc": "Etiketleri otomatik olarak başka etiketlerle değiştirir.", | |
| "rule_rep_accordion": "Değiştirme Kuralları (Regex Destekli)", | |
| "rule_active_file": "Aktif Dosya", | |
| "rule_new_file_name": "Yeni Dosya Adı", | |
| "rule_create_file_btn": "Yeni Dosya Oluştur", | |
| "rule_tab_quick_add": "Hızlı Kural Ekle", | |
| "rule_rep_old": "Eski Etiket (veya Regex)", | |
| "rule_rep_new": "Yeni Etiket", | |
| "rule_add_to_file_btn": "Kuralı Dosyaya Ekle", | |
| "rule_tab_edit_file": "Dosyayı Düzenle", | |
| "rule_file_content_manual": "Dosya İçeriği (Manuel Düzenleme)", | |
| "rule_save_all_btn": "Tüm İçeriği Kaydet", | |
| "rule_syn_accordion": "Birleştirme Kuralları (Eşanlamlı)", | |
| "rule_syn_intro": "Birden fazla etiketi tek bir ana etikette birleştirir (Diğerlerini siler).", | |
| "rule_syn_main": "Ana Etiket (Kalan)", | |
| "rule_syn_remove": "Silinecek Eşanlamlılar (Virgülle ayırın)", | |
| "rule_add_accordion": "Ekleme Kuralları (Sonuçlara Otomatik Eklenecekler)", | |
| "rule_add_intro": "Bu bölümdeki etiketler, işlem bittikten sonra sonuç listesinin sonuna otomatik olarak eklenir.", | |
| "rule_add_content_input": "Eklenecek Etiketler (Her satıra veya virgülle)", | |
| "rule_add_save_btn": "Ekleme Kuralını Kaydet", | |
| # Art Tools | |
| "art_header": "### 🎨 Furry & Adoptable Araçları", | |
| "art_desc": "Satış için grid oluşturma araçları.", | |
| "art_tab_grid": "田 Adoptable Grid Oluşturucu", | |
| "art_file_input": "Görselleri Seç (Çoklu)", | |
| "art_grid_settings": "Grid Ayarları", | |
| "art_cols": "Sütun Sayısı (Yan Yana Kaç Resim?)", | |
| "art_bg_color": "Arkaplan Rengi", | |
| "art_label_settings": "Etiket Ayarları", | |
| "art_add_labels_check": "Resim Altına Yazı Ekle", | |
| "art_label_type": "Yazı Tipi", | |
| "art_start_num": "Başlangıç Numarası / Fiyatı", | |
| "art_create_btn": "Grid Oluştur", | |
| "art_output": "Grid Sonucu", | |
| # Prompt Generator | |
| "prompt_template_mgmt_header": "### 📝 Şablon Yönetimi", | |
| "prompt_select_template": "Şablon Seçiniz", | |
| "prompt_new_template_name": "Yeni Şablon Adı", | |
| "prompt_template_content": "Şablon İçeriği", | |
| "btn_update": "💾 Güncelle", | |
| "btn_add_new": "➕ Yeni Ekle", | |
| "prompt_generation_header": "### 🚀 Üretim", | |
| "prompt_gen_btn": "SEÇİLİ ŞABLONU OLUŞTUR", | |
| "prompt_gen_all_btn": "TÜM ŞABLONLARI OLUŞTUR", | |
| "prompt_var_settings_accordion": "🛠️ Değişken Ayarları (Seçenek Ekle/Düzenle)", | |
| "prompt_select_var": "Düzenlenecek Değişkeni Seç", | |
| "prompt_var_label": "Etiket Adı", | |
| "prompt_var_default": "Varsayılan Değer", | |
| "prompt_var_options": "Seçenekler (Her satıra bir seçenek yazın)", | |
| "prompt_update_var_btn": "Değişkeni Güncelle", | |
| # Video Creator | |
| "vid_header": "### 🎬 Pro Video Stüdyosu", | |
| "vid_desc": "Görselleri ve müzikleri birleştirin, format seçin ve efekt ekleyin.", | |
| "vid_img_input": "1. Görselleri Seçin (Slayt için çoklu)", | |
| "vid_audio_input": "2. Müzikleri Seçin (Çoklu)", | |
| "vid_resolution": "Video Formatı (Çözünürlük)", | |
| "vid_speed": "İşleme Hızı", | |
| "vid_text_overlay": "Video Üzerine Yazı Ekle (Opsiyonel)", | |
| "vid_spectrum_check": "Ses Dalgası (Spectrum) Ekle (DİKKAT: Render süresini çok uzatır)", | |
| "vid_create_btn": "VİDEOYU OLUŞTUR", | |
| "vid_preview": "Önizleme", | |
| "vid_status": "İşlem Durumu", | |
| }, | |
| "en": { | |
| # Settings Tab | |
| "tab_settings_title": "⚙️ Tagger & Model Settings", | |
| "settings_header": "<h2 style='color:#2c3e50;'>General Configuration and Model Settings</h2><p style='color:#666;'>Manage tagging modes, sensitivity, and language options here.</p>", | |
| "save_settings_btn": "💾 Save All Settings", | |
| "status_label": "Status", | |
| "device_section": "### 🖥️ Device, Language & Rule Files", | |
| "device_label": "Execution Device", | |
| "device_info": "Determines which processor the models will run on.", | |
| "language_label": "Dil / Language", | |
| "language_info": "Changes application language (Requires restart).", | |
| "theme_label": "UI Theme", | |
| "theme_info": "Changes the application theme (Requires restart).", | |
| "replacement_file_label": "Replacement File (Regex)", | |
| "synonym_file_label": "Synonym File", | |
| "addition_file_label": "Addition File (Append to End)", | |
| "sort_order_label": "Tag Sorting Method", | |
| "sort_alpha": "Alphabetical", | |
| "sort_len": "By Length", | |
| "sort_random": "Random", | |
| "sort_orig": "Original", | |
| "model_mobilenet": "MobileNet V4 (Fast)", | |
| "model_convnext": "ConvNeXt V2 Huge (Pro)", | |
| "model_caformer": "Caformer B36 (New)", | |
| "categorization_section": "### 🗂️ Mode-Based Categorization Settings", | |
| "categorization_desc": "Configure separate categorization settings for each mode below.", | |
| "tab_single": "Single Mode", | |
| "tab_batch": "Batch Mode", | |
| "tab_dual_left": "Dual Mode (Left)", | |
| "tab_dual_right": "Dual Mode (Right)", | |
| "enable_cat_single": "Enable Categorization in Single Mode", | |
| "cat_single_label": "Single Mode Categories", | |
| "enable_cat_batch": "Enable Categorization in Batch Mode", | |
| "cat_batch_label": "Batch Mode Categories", | |
| "enable_cat_dual1": "Dual Mode Image 1 (Left) Categorization", | |
| "cat_dual1_label": "Dual Image 1 Categories", | |
| "enable_cat_dual2": "Dual Mode Image 2 (Right) Categorization", | |
| "cat_dual2_label": "Dual Image 2 Categories", | |
| "model_sensitivity_section": "### 🤖 Model Sensitivity Settings", | |
| "context_weight_label": "Context Weight", | |
| "context_weight_info": "Intensity of removing 'Unknown' tags not in database during refinement.", | |
| "joint_settings": "Joint Tagger Settings", | |
| "use_joint": "Use Joint Tagger", | |
| "joint_thresh": "Joint Threshold", | |
| "cl_settings": "CL Tagger Settings", | |
| "use_cl": "Use CL Tagger", | |
| "cl_gen_thresh": "CL General/Meta/Model Threshold", | |
| "cl_char_thresh": "CL Character/Copyright/Artist Threshold", | |
| "pixai_settings": "PixAI Tagger Settings", | |
| "use_pixai": "Use PixAI Tagger", | |
| "pixai_gen_thresh": "PixAI General Threshold", | |
| "pixai_char_thresh": "PixAI Character Threshold", | |
| "anime_settings": "Anime Tagger (MobileNet/ConvNeXt/Caformer)", | |
| "use_anime": "Use Anime Tagger", | |
| "anime_model_label": "Model Selection", | |
| "anime_thresh": "Tag Threshold", | |
| "gemini_settings": "✨ Gemini Caption (Natural Language)", | |
| "gemini_desc": "Describes images with **natural sentences** instead of just tag lists.", | |
| "use_gemini": "Use Gemini Caption", | |
| "gemini_api_key": "Google Gemini API Key", | |
| "gemini_model": "Gemini Model", | |
| "gemini_model_info": "Select the Gemini model version to use.", | |
| "gemini_mode_label": "Gemini Mode", | |
| "gemini_mode_info": "Vision: Only looks at image. Tags: Only uses tags. Vision + Tags: Combines both.", | |
| "gemini_system_instr": "System Instruction", | |
| "gemini_system_info": "Main instruction defining the model's behavior and identity.", | |
| "gemini_prompt_settings": "#### 📝 Mode-Based Prompt Settings", | |
| "prompt_vision": "Vision Mode Prompt", | |
| "prompt_tags": "Tags Mode Prompt", | |
| "prompt_hybrid": "Vision + Tags Mode Prompt", | |
| "save_success": "✅ All general and categorization settings saved. Please restart to apply language changes.", | |
| # App Title | |
| "app_title": "Ultra Pro Tagger V1", | |
| "app_subtitle": "AI-Powered Automatic Tagging and Editing Suite", | |
| # Main UI | |
| "btn_close_app": "Close Application", | |
| "btn_restart_app": "Restart Application", | |
| # Single Tab | |
| "tab_single_title": "✨ Single Tagging", | |
| "btn_process_single": "Tag Image (With General Settings)", | |
| "label_image_upload": "Upload Image", | |
| "tab_raw_tags": "Raw Tags", | |
| "label_unique_tags": "Merged Unique Tags", | |
| "btn_send_to_cat": "Send These Tags to Categorization ➡️", | |
| "tab_refined_tags": "Refined", | |
| "label_refined_tags": "Refined (Cleaned) Tags", | |
| "tab_categorized_tags": "Categorized", | |
| "label_categorized_tags": "Categorized Tags", | |
| "header_wildcard": "### 📂 Add to Wildcard Pack", | |
| "tab_gemini_caption": "Captioned (GeminiCaption)", | |
| "label_gemini_caption": "Gemini Caption", | |
| "tab_combined_caption": "Categorized + Captioned (GeminiCaption)", | |
| "label_combined_caption": "Categorized and Gemini Combination", | |
| # Batch Tab | |
| "tab_batch_title": "📚 Batch Tagging", | |
| "btn_process_batch": "Process Images (With General Settings)", | |
| "label_batch_input": "Upload Images (Multiple Selection)", | |
| "tab_batch_original": "Original Tags (Combined)", | |
| "label_batch_original": "Original Tags from All Images", | |
| "tab_batch_refined": "Refined (Combined)", | |
| "label_batch_refined": "Refined Tags from All Images", | |
| "tab_batch_cat": "Categorized (Line by Line)", | |
| "tab_batch_gemini": "Gemini Caption (All)", | |
| "label_batch_gemini": "Captions for All Images", | |
| "tab_batch_html": "Detailed HTML Report", | |
| "label_batch_html": "Detailed Results", | |
| "btn_batch_download": "Download All Result Tags (.txt)", | |
| # Dual Tab | |
| "tab_dual_title": "↔️ Dual Tagging", | |
| "dual_note": "<p style='color:#666; font-size:0.9em;'>Note: Dual mode uses separate categorization settings for each image from the 'Settings' tab.</p>", | |
| "btn_process_dual": "Compare and Tag Images", | |
| "label_img1": "Image 1", | |
| "label_img2": "Image 2", | |
| "tab_dual_combined": "Combined", | |
| "label_dual_combined": "Combined Unique Tags", | |
| "label_dual_refined": "Combined Refined Tags", | |
| "label_dual_cat": "Combined Categorized", | |
| "label_gemini_img1": "Image 1 Gemini", | |
| "label_gemini_img2": "Image 2 Gemini", | |
| # Tools Tab | |
| "tab_prompt_gen": "📝 Prompt Generator", | |
| "tab_category_tools": "🏷️ Category Tools", | |
| "tab_rule_management": "🔁 Rule Management", | |
| "tab_text_tools": "📝 Text Tools", | |
| "tab_image_tools": "🖼️ Image Tools", | |
| "tab_video_creator": "🎬 Video Creator", | |
| "tab_art_studio": "🎨 Art Studio", | |
| "label_tags_input": "Enter Tags (comma separated)", | |
| "placeholder_tags_input": "example: 1girl, blue hair, long hair, cat ears...", | |
| # Category Tools | |
| "cat_live_tab_title": "Live Categorization", | |
| "cat_live_header": "<h2 style='color:#2563eb'>Categorize Tags</h2>", | |
| "cat_live_main_tab": "Main Categorization", | |
| "cat_live_main_select": "Select Main Categories to Show", | |
| "cat_live_main_btn": "Categorize by Main", | |
| "cat_live_unmatched_btn": "⚠️ Transfer Unmatched to Editor and Edit ➡️", | |
| "cat_live_main_output": "Main Categorized Tags", | |
| "cat_live_sub_tab": "Sub Categorization", | |
| "cat_live_sub_select": "Select Sub Categories to Show", | |
| "cat_live_sub_btn": "Categorize by Sub", | |
| "cat_live_sub_output": "Sub Categorized Tags", | |
| "cat_manage_tab_title": "Category/Tag Editing", | |
| "cat_manage_header": "<h3 style='color:#007bff;'>Manage Category and Tag Files</h3>", | |
| "cat_manage_main_accordion": "Main Category Management", | |
| "cat_manage_main_grid": "All Categories", | |
| "cat_manage_main_refresh": "↻ Refresh Main Categories", | |
| "cat_manage_main_select": "Select Category", | |
| "cat_manage_tags_input": "Tags (comma separated)", | |
| "btn_add": "Add", | |
| "btn_delete": "Delete", | |
| "cat_manage_sub_accordion": "Sub Category Management", | |
| "cat_manage_sub_grid": "All Sub Categories", | |
| "cat_manage_sub_refresh": "↻ Refresh Sub Categories", | |
| # Category Redesign | |
| "cat_redesign_live_tab": "⚡ Live Test", | |
| "cat_redesign_main_tab": "📂 Main Category Management", | |
| "cat_redesign_sub_tab": "📁 Sub Category Management", | |
| "cat_manage_sub_select": "Select Sub Category", | |
| # Image Tools | |
| "img_tools_header": "<h3 style='color:#0077b6;'>Batch Image Processing</h3>", | |
| "img_tools_paths_input": "Folder Paths (One per line)", | |
| "img_tools_select_folder_btn": "📁 Select Folder", | |
| "img_tools_clear_btn": "🗑️ Clear", | |
| "img_tools_save_settings_btn": "Save Path and Tool Settings", | |
| "img_tools_res_accordion": "1. 📐 Resolution", | |
| "img_tools_scale_label": "Scale", | |
| "btn_apply": "Apply", | |
| "img_tools_rename_accordion": "2. 📝 Renaming (Templated)", | |
| "img_tools_rename_desc": "Renames files sequentially. Template must include **`{Number}`**.", | |
| "img_tools_template_select": "Ready Templates", | |
| "img_tools_delete_template_btn": "🗑️ Delete Template", | |
| "img_tools_new_template_input": "Add New Template", | |
| "img_tools_new_template_placeholder": "Ex: Adoptable {Number} (Elf)", | |
| "img_tools_add_template_btn": "➕ Add to List", | |
| "img_tools_start_num": "Start Number", | |
| "img_tools_digit_count": "Digits (e.g. 3 for 001)", | |
| "img_tools_rename_btn": "Rename Files", | |
| "img_tools_watermark_accordion": "3. 🖋️ Watermark", | |
| "img_tools_watermark_default": "Sample Watermark", | |
| "img_tools_watermark_text": "Text", | |
| "img_tools_watermark_opacity": "Opacity", | |
| "img_tools_watermark_size": "Font Size", | |
| "img_tools_watermark_angle": "Angle", | |
| "img_tools_format_accordion": "4. 🖼️ Format", | |
| "img_tools_format_label": "Format", | |
| "btn_convert": "Convert", | |
| "img_tools_bc_accordion": "5. 🔅 Brightness/Contrast", | |
| "img_tools_brightness": "Brightness", | |
| "img_tools_contrast": "Contrast", | |
| "img_tools_ds_accordion": "6. 🧼 Denoise/Sharpen", | |
| "img_tools_denoise": "Denoise", | |
| "img_tools_sharpen": "Sharpen", | |
| # Text Tools | |
| "txt_tools_header": "<h3 style='color:#28a745;'>Manual Text Tools</h3>", | |
| "txt_tools_input": "Text to Process", | |
| "txt_tools_tab_clean": "Cleaning", | |
| "txt_tools_clean_btn": "Clean and Uniquify", | |
| "label_result": "Result", | |
| "txt_tools_tab_format": "Change Format", | |
| "txt_tools_lines_to_comma": "Lines -> Comma", | |
| "txt_tools_comma_to_lines": "Comma -> Lines", | |
| "txt_tools_tab_random": "Select Random", | |
| "txt_tools_line_count": "Line Count", | |
| "btn_select": "Select", | |
| "txt_tools_tab_refine": "Refine", | |
| "txt_tools_refine_desc": "Words to remove are read from **`{filename}`**.", | |
| "btn_filter": "Filter", | |
| # Rule Tools | |
| "rule_tools_intro": "Manage how tags are replaced, merged, and appended to results in this area.", | |
| "rule_rep_desc": "Automatically replaces tags with other tags.", | |
| "rule_rep_accordion": "Replacement Rules (Regex Supported)", | |
| "rule_active_file": "Active File", | |
| "rule_new_file_name": "New File Name", | |
| "rule_create_file_btn": "Create New File", | |
| "rule_tab_quick_add": "Quick Add Rule", | |
| "rule_rep_old": "Old Tag (or Regex)", | |
| "rule_rep_new": "New Tag", | |
| "rule_add_to_file_btn": "Add Rule to File", | |
| "rule_tab_edit_file": "Edit File", | |
| "rule_file_content_manual": "File Content (Manual Edit)", | |
| "rule_save_all_btn": "Save All Content", | |
| "rule_syn_accordion": "Merging Rules (Synonyms)", | |
| "rule_syn_intro": "Merges multiple tags into one main tag (Deletes others).", | |
| "rule_syn_main": "Main Tag (Kept)", | |
| "rule_syn_remove": "Synonyms to Delete (Comma separated)", | |
| "rule_add_accordion": "Addition Rules (Auto Append)", | |
| "rule_add_intro": "Tags in this section are automatically appended to the end of the result list.", | |
| "rule_add_content_input": "Tags to Add (Line by line or comma)", | |
| "rule_add_save_btn": "Save Addition Rules", | |
| # Art Tools | |
| "art_header": "### 🎨 Furry & Adoptable Tools", | |
| "art_desc": "Grid creation tools for sales.", | |
| "art_tab_grid": "田 Adoptable Grid Creator", | |
| "art_file_input": "Select Images (Multiple)", | |
| "art_grid_settings": "Grid Settings", | |
| "art_cols": "Columns (How many images side-by-side?)", | |
| "art_bg_color": "Background Color", | |
| "art_label_settings": "Label Settings", | |
| "art_add_labels_check": "Add Text Below Image", | |
| "art_label_type": "Label Type", | |
| "art_start_num": "Start Number / Price", | |
| "art_create_btn": "Create Grid", | |
| "art_output": "Grid Result", | |
| # Prompt Generator | |
| "prompt_template_mgmt_header": "### 📝 Template Management", | |
| "prompt_select_template": "Select Template", | |
| "prompt_new_template_name": "New Template Name", | |
| "prompt_template_content": "Template Content", | |
| "btn_update": "💾 Update", | |
| "btn_add_new": "➕ Add New", | |
| "prompt_generation_header": "### 🚀 Generation", | |
| "prompt_gen_btn": "GENERATE SELECTED TEMPLATE", | |
| "prompt_gen_all_btn": "GENERATE ALL TEMPLATES", | |
| "prompt_var_settings_accordion": "🛠️ Variable Settings (Add/Edit Options)", | |
| "prompt_select_var": "Select Variable to Edit", | |
| "prompt_var_label": "Label Name", | |
| "prompt_var_default": "Default Value", | |
| "prompt_var_options": "Options (One per line)", | |
| "prompt_update_var_btn": "Update Variable", | |
| # Video Creator | |
| "vid_header": "### 🎬 Pro Video Studio", | |
| "vid_desc": "Combine images and music, select format and add effects.", | |
| "vid_img_input": "1. Select Images (Multiple for Slideshow)", | |
| "vid_audio_input": "2. Select Music (Multiple)", | |
| "vid_resolution": "Video Format (Resolution)", | |
| "vid_speed": "Processing Speed", | |
| "vid_text_overlay": "Add Text Over Video (Optional)", | |
| "vid_spectrum_check": "Add Audio Spectrum (WARNING: Increases render time significantly)", | |
| "vid_create_btn": "CREATE VIDEO", | |
| "vid_preview": "Preview", | |
| "vid_status": "Process Status", | |
| }, | |
| } | |