mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-01-23 05:24:55 +03:00
Merge branch 'main' into Feature/Datanodes-Hoster
This commit is contained in:
commit
2407be0fb2
@ -179,7 +179,12 @@
|
|||||||
"backup_from": "Backup from {{date}}",
|
"backup_from": "Backup from {{date}}",
|
||||||
"custom_backup_location_set": "Custom backup location set",
|
"custom_backup_location_set": "Custom backup location set",
|
||||||
"no_directory_selected": "No directory selected",
|
"no_directory_selected": "No directory selected",
|
||||||
"no_write_permission": "Cannot download into this directory. Click here to learn more."
|
"no_write_permission": "Cannot download into this directory. Click here to learn more.",
|
||||||
|
"reset_achievements": "Reset achievements",
|
||||||
|
"reset_achievements_description": "This will reset all achievements for {{game}}",
|
||||||
|
"reset_achievements_title": "Are you sure?",
|
||||||
|
"reset_achievements_success": "Achievements successfully reset",
|
||||||
|
"reset_achievements_error": "Failed to reset achievements"
|
||||||
},
|
},
|
||||||
"activation": {
|
"activation": {
|
||||||
"title": "Activate Hydra",
|
"title": "Activate Hydra",
|
||||||
|
@ -168,7 +168,11 @@
|
|||||||
"manage_files_description": "Gerencie quais arquivos serão feitos backup",
|
"manage_files_description": "Gerencie quais arquivos serão feitos backup",
|
||||||
"clear": "Limpar",
|
"clear": "Limpar",
|
||||||
"no_directory_selected": "Nenhum diretório selecionado",
|
"no_directory_selected": "Nenhum diretório selecionado",
|
||||||
"no_write_permission": "O download não pode ser feito neste diretório. Clique aqui para saber mais."
|
"reset_achievements": "Resetar conquistas",
|
||||||
|
"reset_achievements_description": "Isso irá resetar todas as conquistas de {{game}}",
|
||||||
|
"reset_achievements_title": "Tem certeza?",
|
||||||
|
"reset_achievements_success": "Conquistas resetadas com sucesso",
|
||||||
|
"reset_achievements_error": "Falha ao resetar conquistas"
|
||||||
},
|
},
|
||||||
"activation": {
|
"activation": {
|
||||||
"title": "Ativação",
|
"title": "Ativação",
|
||||||
|
@ -1,131 +1,423 @@
|
|||||||
{
|
{
|
||||||
"language_name": "Türkçe",
|
"language_name": "Türkçe",
|
||||||
|
"app": {
|
||||||
|
"successfully_signed_in": "Başarıyla giriş yapıldı"
|
||||||
|
},
|
||||||
"home": {
|
"home": {
|
||||||
"featured": "Öne çıkan",
|
"featured": "Öne Çıkanlar",
|
||||||
"surprise_me": "Şaşırt beni",
|
"surprise_me": "Beni Şaşırt",
|
||||||
"no_results": "Sonuç bulunamadı"
|
"no_results": "Sonuç bulunamadı",
|
||||||
|
"start_typing": "Aramak için yazmaya başlayın...",
|
||||||
|
"hot": "Şu anda popüler",
|
||||||
|
"weekly": "📅 Haftanın en iyi oyunları",
|
||||||
|
"achievements": "🏆 Tamamlanacak oyunlar"
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
"catalogue": "Katalog",
|
"catalogue": "Katalog",
|
||||||
"downloads": "İndirmeler",
|
"downloads": "İndirilenler",
|
||||||
"settings": "Ayarlar",
|
"settings": "Ayarlar",
|
||||||
"my_library": "Kütüphane",
|
"my_library": "Kütüphanem",
|
||||||
"downloading_metadata": "{{title}} (Metadata indiriliyor…)",
|
"downloading_metadata": "{{title}} (Meta verileri indiriliyor…)",
|
||||||
"paused": "{{title}} (Duraklatıldı)",
|
"paused": "{{title}} (Durduruldu)",
|
||||||
"downloading": "{{title}} ({{percentage}} - İndiriliyor…)",
|
"downloading": "{{title}} ({{percentage}} - İndiriliyor…)",
|
||||||
"filter": "Kütüphaneyi filtrele",
|
"filter": "Kütüphaneyi filtrele",
|
||||||
"home": "Ana menü"
|
"home": "Ana Sayfa",
|
||||||
|
"queued": "{{title}} (Sırada)",
|
||||||
|
"game_has_no_executable": "Oyun için bir çalıştırılabilir dosya seçilmedi",
|
||||||
|
"sign_in": "Giriş yap",
|
||||||
|
"friends": "Arkadaşlar",
|
||||||
|
"need_help": "Yardıma mı ihtiyacınız var?"
|
||||||
},
|
},
|
||||||
"header": {
|
"header": {
|
||||||
"search": "Ara",
|
"search": "Oyunları ara",
|
||||||
"home": "Ana menü",
|
"home": "Ana Sayfa",
|
||||||
"catalogue": "Katalog",
|
"catalogue": "Katalog",
|
||||||
"downloads": "İndirmeler",
|
"downloads": "İndirilenler",
|
||||||
"search_results": "Arama sonuçları",
|
"search_results": "Arama sonuçları",
|
||||||
"settings": "Ayarlar"
|
"settings": "Ayarlar",
|
||||||
|
"version_available_install": "Sürüm {{version}} mevcut. Yüklemek ve yeniden başlatmak için buraya tıklayın.",
|
||||||
|
"version_available_download": "Sürüm {{version}} mevcut. İndirmek için buraya tıklayın."
|
||||||
},
|
},
|
||||||
"bottom_panel": {
|
"bottom_panel": {
|
||||||
"no_downloads_in_progress": "İndirilen bir şey yok",
|
"no_downloads_in_progress": "Devam eden indirme yok",
|
||||||
"downloading_metadata": "{{title}} metadatası indiriliyor…",
|
"downloading_metadata": "{{title}} meta verileri indiriliyor…",
|
||||||
"downloading": "{{title}} indiriliyor… ({{percentage}} tamamlandı) - Bitiş {{eta}} - {{speed}}"
|
"downloading": "{{title}} indiriliyor… ({{percentage}} tamamlandı) - Tamamlama: {{eta}} - Hız: {{speed}}",
|
||||||
|
"calculating_eta": "{{title}} indiriliyor… ({{percentage}} tamamlandı) - Kalan süre hesaplanıyor…",
|
||||||
|
"checking_files": "{{title}} dosyaları kontrol ediliyor… ({{percentage}} tamamlandı)"
|
||||||
},
|
},
|
||||||
"catalogue": {
|
"catalogue": {
|
||||||
"next_page": "Sonraki sayfa",
|
"search": "Filtrele…",
|
||||||
"previous_page": "Önceki sayfa"
|
"developers": "Geliştiriciler",
|
||||||
|
"genres": "Türler",
|
||||||
|
"tags": "Etiketler",
|
||||||
|
"publishers": "Yayıncılar",
|
||||||
|
"download_sources": "İndirme kaynakları",
|
||||||
|
"result_count": "{{resultCount}} sonuç",
|
||||||
|
"filter_count": "{{filterCount}} mevcut",
|
||||||
|
"clear_filters": "{{filterCount}} seçili filtreyi temizle"
|
||||||
},
|
},
|
||||||
"game_details": {
|
"game_details": {
|
||||||
"open_download_options": "İndirme seçeneklerini aç",
|
"open_download_options": "İndirme seçeneklerini aç",
|
||||||
"download_options_zero": "İndirme seçeneği yok",
|
"download_options_zero": "İndirme seçeneği yok",
|
||||||
"download_options_one": "{{count}} indirme seçeneği",
|
"download_options_one": "{{count}} indirme seçeneği",
|
||||||
"download_options_other": "{{count}} indirme seçeneği",
|
"download_options_other": "{{count}} indirme seçeneği",
|
||||||
"updated_at": "{{updated_at}} güncellendi",
|
"updated_at": "{{updated_at}} tarihinde güncellendi",
|
||||||
"install": "İndir",
|
"install": "Yükle",
|
||||||
"resume": "Devam et",
|
"resume": "Devam et",
|
||||||
"pause": "Duraklat",
|
"pause": "Durdur",
|
||||||
"cancel": "İptal et",
|
"cancel": "İptal et",
|
||||||
"remove": "Sil",
|
"remove": "Kaldır",
|
||||||
"space_left_on_disk": "Diskte {{space}} yer kaldı",
|
"space_left_on_disk": "Diskte {{space}} boş alan kaldı",
|
||||||
"eta": "Bitiş {{eta}}",
|
"eta": "{{eta}} tahmini bitiş",
|
||||||
"downloading_metadata": "Metadata indiriliyor…",
|
"calculating_eta": "Kalan süre hesaplanıyor…",
|
||||||
"filter": "Repackleri filtrele",
|
"downloading_metadata": "Meta veriler indiriliyor…",
|
||||||
|
"filter": "Paketleri filtrele",
|
||||||
"requirements": "Sistem gereksinimleri",
|
"requirements": "Sistem gereksinimleri",
|
||||||
"minimum": "Minimum",
|
"minimum": "Minimum",
|
||||||
"recommended": "Önerilen",
|
"recommended": "Önerilen",
|
||||||
"release_date": "{{date}} tarihinde çıktı",
|
"paused": "Durduruldu",
|
||||||
"publisher": "{{publisher}} tarihinde yayınlandı",
|
"release_date": "{{date}} tarihinde yayımlandı",
|
||||||
"hours": "saatler",
|
"publisher": "{{publisher}} tarafından yayımlandı",
|
||||||
"minutes": "dakikalar",
|
"hours": "saat",
|
||||||
|
"minutes": "dakika",
|
||||||
"amount_hours": "{{amount}} saat",
|
"amount_hours": "{{amount}} saat",
|
||||||
"amount_minutes": "{{amount}} dakika",
|
"amount_minutes": "{{amount}} dakika",
|
||||||
"accuracy": "%{{accuracy}} doğruluk",
|
"accuracy": "{{accuracy}}% doğruluk",
|
||||||
"add_to_library": "Kütüphaneye ekle",
|
"add_to_library": "Kütüphaneye ekle",
|
||||||
"remove_from_library": "Kütüphaneden kaldır",
|
"remove_from_library": "Kütüphaneden kaldır",
|
||||||
"no_downloads": "İndirme yok",
|
"no_downloads": "İndirilebilir içerik yok",
|
||||||
"play_time": "{{amount}} oynandı",
|
"play_time": "{{amount}} süre oynandı",
|
||||||
"last_time_played": "Son oynanan {{period}}",
|
"last_time_played": "Son oynama {{period}} önce",
|
||||||
"not_played_yet": "Bu {{title}} hiç oynanmadı",
|
"not_played_yet": "{{title}} henüz oynanmadı",
|
||||||
"next_suggestion": "Sıradaki öneri",
|
"next_suggestion": "Sonraki öneri",
|
||||||
"play": "Oyna",
|
"play": "Oyna",
|
||||||
"deleting": "Installer siliniyor…",
|
"deleting": "Yükleyici siliniyor…",
|
||||||
"close": "Kapat",
|
"close": "Kapat",
|
||||||
"playing_now": "Şimdi oynanıyor",
|
"playing_now": "Şu anda oynanıyor",
|
||||||
"change": "Değiştir",
|
"change": "Değiştir",
|
||||||
"repacks_modal_description": "İndirmek istediğiiniz repacki seçin",
|
"repacks_modal_description": "İndirmek istediğiniz paketi seçin",
|
||||||
"select_folder_hint": "Varsayılan klasörü değiştirmek için ulaşmanız gereken ayar",
|
"select_folder_hint": "Varsayılan klasörü değiştirmek için <0>Ayarlar</0> bölümüne gidin",
|
||||||
"download_now": "Şimdi"
|
"download_now": "Şimdi indir",
|
||||||
|
"no_shop_details": "Mağaza bilgileri alınamadı.",
|
||||||
|
"download_options": "İndirme seçenekleri",
|
||||||
|
"download_path": "İndirme yolu",
|
||||||
|
"previous_screenshot": "Önceki ekran görüntüsü",
|
||||||
|
"next_screenshot": "Sonraki ekran görüntüsü",
|
||||||
|
"screenshot": "{{number}} ekran görüntüsü",
|
||||||
|
"open_screenshot": "{{number}} ekran görüntüsünü aç",
|
||||||
|
"download_settings": "İndirme ayarları",
|
||||||
|
"downloader": "İndirici",
|
||||||
|
"select_executable": "Seç",
|
||||||
|
"no_executable_selected": "Hiçbir çalıştırılabilir dosya seçilmedi",
|
||||||
|
"open_folder": "Klasörü aç",
|
||||||
|
"open_download_location": "İndirilen dosyaları gör",
|
||||||
|
"create_shortcut": "Masaüstü kısayolu oluştur",
|
||||||
|
"clear": "Temizle",
|
||||||
|
"remove_files": "Dosyaları kaldır",
|
||||||
|
"remove_from_library_title": "Emin misiniz?",
|
||||||
|
"remove_from_library_description": "Bu işlem {{game}} oyununu kütüphanenizden kaldıracaktır",
|
||||||
|
"options": "Seçenekler",
|
||||||
|
"executable_section_title": "Çalıştırılabilir dosya",
|
||||||
|
"executable_section_description": "\"Oyna\" tıklandığında çalıştırılacak dosyanın yolu",
|
||||||
|
"downloads_secion_title": "İndirmeler",
|
||||||
|
"downloads_section_description": "Bu oyun için güncellemeleri veya diğer sürümleri kontrol edin",
|
||||||
|
"danger_zone_section_title": "Tehlike bölgesi",
|
||||||
|
"danger_zone_section_description": "Bu oyunu kütüphanenizden veya Hydra tarafından indirilen dosyaları kaldırın",
|
||||||
|
"download_in_progress": "İndirme devam ediyor",
|
||||||
|
"download_paused": "İndirme durduruldu",
|
||||||
|
"last_downloaded_option": "Son indirilen seçenek",
|
||||||
|
"create_shortcut_success": "Kısayol başarıyla oluşturuldu",
|
||||||
|
"create_shortcut_error": "Kısayol oluşturulurken hata oluştu",
|
||||||
|
"nsfw_content_title": "Bu oyun uygunsuz içerik içeriyor",
|
||||||
|
"nsfw_content_description": "{{title}} her yaş için uygun olmayabilecek içeriklere sahiptir. Devam etmek istediğinizden emin misiniz?",
|
||||||
|
"allow_nsfw_content": "Devam et",
|
||||||
|
"refuse_nsfw_content": "Geri dön",
|
||||||
|
"stats": "İstatistikler",
|
||||||
|
"download_count": "İndirme sayısı",
|
||||||
|
"player_count": "Aktif oyuncular",
|
||||||
|
"download_error": "Bu indirme seçeneği mevcut değil",
|
||||||
|
"download": "İndir",
|
||||||
|
"executable_path_in_use": "\"{{game}}\" tarafından kullanılan çalıştırılabilir dosya",
|
||||||
|
"warning": "Uyarı:",
|
||||||
|
"hydra_needs_to_remain_open": "Bu indirmenin tamamlanması için Hydra açık kalmalıdır. Eğer Hydra kapanırsa, ilerleme kaydedilmez.",
|
||||||
|
"achievements": "Başarılar",
|
||||||
|
"achievements_count": "Başarılar {{unlockedCount}}/{{achievementsCount}}",
|
||||||
|
"cloud_save": "Bulut kaydı",
|
||||||
|
"cloud_save_description": "İlerlemenizi buluta kaydedin ve herhangi bir cihazda oynamaya devam edin",
|
||||||
|
"backups": "Yedekler",
|
||||||
|
"install_backup": "Yükle",
|
||||||
|
"delete_backup": "Sil",
|
||||||
|
"create_backup": "Yeni yedek oluştur",
|
||||||
|
"last_backup_date": "{{date}} tarihindeki son yedek",
|
||||||
|
"no_backup_preview": "Bu oyun için kayıtlı oyun bulunamadı",
|
||||||
|
"restoring_backup": "Yedek geri yükleniyor ({{progress}} tamamlandı)…",
|
||||||
|
"uploading_backup": "Yedek yükleniyor…",
|
||||||
|
"no_backups": "Bu oyun için henüz bir yedek oluşturmadınız",
|
||||||
|
"backup_uploaded": "Yedek yüklendi",
|
||||||
|
"backup_deleted": "Yedek silindi",
|
||||||
|
"backup_restored": "Yedek geri yüklendi",
|
||||||
|
"see_all_achievements": "Tüm başarıları gör",
|
||||||
|
"sign_in_to_see_achievements": "Başarıları görmek için giriş yapın",
|
||||||
|
"mapping_method_automatic": "Otomatik",
|
||||||
|
"mapping_method_manual": "Manuel",
|
||||||
|
"mapping_method_label": "Eşleme yöntemi",
|
||||||
|
"files_automatically_mapped": "Dosyalar otomatik olarak eşlendi",
|
||||||
|
"no_backups_created": "Bu oyun için yedek oluşturulmadı",
|
||||||
|
"manage_files": "Dosyaları yönet",
|
||||||
|
"loading_save_preview": "Kayıtlı oyunlar aranıyor…",
|
||||||
|
"wine_prefix": "Wine Prefix",
|
||||||
|
"wine_prefix_description": "Bu oyunu çalıştırmak için kullanılan Wine Prefix",
|
||||||
|
"launch_options": "Başlatma Seçenekleri",
|
||||||
|
"launch_options_description": "İleri düzey kullanıcılar, başlatma seçeneklerine değişiklikler girebilir (deneysel özellik)",
|
||||||
|
"launch_options_placeholder": "Belirtilen bir parametre yok",
|
||||||
|
"no_download_option_info": "Bilgi mevcut değil",
|
||||||
|
"backup_deletion_failed": "Yedek silinemedi",
|
||||||
|
"max_number_of_artifacts_reached": "Bu oyun için maksimum yedek sayısına ulaşıldı",
|
||||||
|
"achievements_not_sync": "Başarılarınızı senkronize etmeyi öğrenin",
|
||||||
|
"manage_files_description": "Hangi dosyaların yedeklenip geri yükleneceğini yönetin",
|
||||||
|
"select_folder": "Klasör seç",
|
||||||
|
"backup_from": "{{date}} tarihinden yedek",
|
||||||
|
"custom_backup_location_set": "Özel yedekleme konumu ayarlandı",
|
||||||
|
"no_directory_selected": "Bir dizin seçilmedi",
|
||||||
|
"no_write_permission": "Bu dizine indirme yapılamaz. Daha fazla bilgi için buraya tıklayın.",
|
||||||
|
"reset_achievements": "Başarıları sıfırla",
|
||||||
|
"reset_achievements_description": "Bu işlem {{game}} için tüm başarıları sıfırlar",
|
||||||
|
"reset_achievements_title": "Emin misiniz?",
|
||||||
|
"reset_achievements_success": "Başarılar başarıyla sıfırlandı",
|
||||||
|
"reset_achievements_error": "Başarılar sıfırlanamadı"
|
||||||
},
|
},
|
||||||
"activation": {
|
"activation": {
|
||||||
"title": "Hydra'yı aktif et",
|
"title": "Hydra'yı Aktive Et",
|
||||||
"installation_id": "Kurulum ID'si:",
|
"installation_id": "Kurulum Kimliği:",
|
||||||
"enter_activation_code": "Aktifleştirme kodunuzu girin",
|
"enter_activation_code": "Aktivasyon kodunuzu girin",
|
||||||
"message": "Bunu nerede soracağınızı bilmiyorsanız, buna sahip olmamanız gerekiyor.",
|
"message": "Bunu nereden soracağınızı bilmiyorsanız, bu sizin için olmamalı.",
|
||||||
"activate": "Aktif et",
|
"activate": "Aktive Et",
|
||||||
"loading": "Yükleniyor…"
|
"loading": "Yükleniyor…"
|
||||||
},
|
},
|
||||||
"downloads": {
|
"downloads": {
|
||||||
"resume": "Devam et",
|
"resume": "Devam Et",
|
||||||
"pause": "Duraklat",
|
"pause": "Duraklat",
|
||||||
"eta": "Bitiş {{eta}}",
|
"eta": "Tamamlama {{eta}}",
|
||||||
"paused": "Duraklatıldı",
|
"paused": "Duraklatıldı",
|
||||||
"verifying": "Doğrulanıyor…",
|
"verifying": "Doğrulanıyor…",
|
||||||
"completed": "Tamamlandı",
|
"completed": "Tamamlandı",
|
||||||
"cancel": "İptal et",
|
"removed": "İndirilmedi",
|
||||||
"filter": "Yüklü oyunları filtrele",
|
"cancel": "İptal Et",
|
||||||
|
"filter": "İndirilen oyunları filtrele",
|
||||||
"remove": "Kaldır",
|
"remove": "Kaldır",
|
||||||
"downloading_metadata": "Metadata indiriliyor…",
|
"downloading_metadata": "Metadata indiriliyor…",
|
||||||
"deleting": "Installer siliniyor…",
|
"deleting": "Yükleyici siliniyor…",
|
||||||
"delete": "Installer'ı sil",
|
"delete": "Yükleyiciyi kaldır",
|
||||||
"delete_modal_title": "Emin misiniz?",
|
"delete_modal_title": "Emin misiniz?",
|
||||||
"delete_modal_description": "Bu bilgisayarınızdan tüm kurulum dosyalarını silecek",
|
"delete_modal_description": "Bu işlem, tüm kurulum dosyalarını bilgisayarınızdan kaldıracaktır",
|
||||||
"install": "Kur"
|
"install": "Kur",
|
||||||
|
"download_in_progress": "Devam ediyor",
|
||||||
|
"queued_downloads": "Sıradaki indirmeler",
|
||||||
|
"downloads_completed": "Tamamlananlar",
|
||||||
|
"queued": "Sırada",
|
||||||
|
"no_downloads_title": "Bomboş",
|
||||||
|
"no_downloads_description": "Henüz Hydra ile hiçbir şey indirmediniz, ancak başlamak için asla geç değil.",
|
||||||
|
"checking_files": "Dosyalar kontrol ediliyor…",
|
||||||
|
"seeding": "Paylaşılıyor",
|
||||||
|
"stop_seeding": "Paylaşımı durdur",
|
||||||
|
"resume_seeding": "Paylaşımı sürdür",
|
||||||
|
"options": "Yönet"
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"downloads_path": "İndirme yolu",
|
"downloads_path": "İndirme yolu",
|
||||||
"change": "Güncelle",
|
"change": "Güncelle",
|
||||||
"notifications": "Bildirimler",
|
"notifications": "Bildirimler",
|
||||||
"enable_download_notifications": "Bir indirme bittiğinde",
|
"enable_download_notifications": "Bir indirme tamamlandığında",
|
||||||
"enable_repack_list_notifications": "Yeni bir repack eklendiğinde"
|
"enable_repack_list_notifications": "Yeni bir repack eklendiğinde",
|
||||||
|
"real_debrid_api_token_label": "Real-Debrid API anahtarı",
|
||||||
|
"quit_app_instead_hiding": "Hydra'yı kapatırken gizlemeyin",
|
||||||
|
"launch_with_system": "Hydra'yı sistem başlatıldığında çalıştır",
|
||||||
|
"general": "Genel",
|
||||||
|
"behavior": "Davranış",
|
||||||
|
"download_sources": "İndirme kaynakları",
|
||||||
|
"language": "Dil",
|
||||||
|
"real_debrid_api_token": "API Anahtarı",
|
||||||
|
"enable_real_debrid": "Real-Debrid'i Etkinleştir",
|
||||||
|
"real_debrid_description": "Real-Debrid, yalnızca internet hızınızla sınırlı olarak hızlı dosya indirmenizi sağlayan sınırsız bir indirici.",
|
||||||
|
"real_debrid_invalid_token": "Geçersiz API anahtarı",
|
||||||
|
"real_debrid_api_token_hint": "API anahtarınızı <0>buradan</0> alabilirsiniz",
|
||||||
|
"real_debrid_free_account_error": "\"{{username}}\" hesabı ücretsiz bir hesaptır. Lütfen Real-Debrid abonesi olun",
|
||||||
|
"real_debrid_linked_message": "\"{{username}}\" hesabı bağlandı",
|
||||||
|
"save_changes": "Değişiklikleri Kaydet",
|
||||||
|
"changes_saved": "Değişiklikler başarıyla kaydedildi",
|
||||||
|
"download_sources_description": "Hydra, indirme bağlantılarını bu kaynaklardan alacak. Kaynak URL, indirme bağlantılarını içeren bir .json dosyasına doğrudan bir bağlantı olmalıdır.",
|
||||||
|
"validate_download_source": "Doğrula",
|
||||||
|
"remove_download_source": "Kaldır",
|
||||||
|
"add_download_source": "Kaynak ekle",
|
||||||
|
"download_count_zero": "İndirme seçeneği yok",
|
||||||
|
"download_count_one": "{{countFormatted}} indirme seçeneği",
|
||||||
|
"download_count_other": "{{countFormatted}} indirme seçeneği",
|
||||||
|
"download_source_url": "İndirme kaynağı URL'si",
|
||||||
|
"add_download_source_description": ".json dosyasının URL'sini girin",
|
||||||
|
"download_source_up_to_date": "Güncel",
|
||||||
|
"download_source_errored": "Hatalı",
|
||||||
|
"sync_download_sources": "Kaynakları senkronize et",
|
||||||
|
"removed_download_source": "İndirme kaynağı kaldırıldı",
|
||||||
|
"added_download_source": "İndirme kaynağı eklendi",
|
||||||
|
"download_sources_synced": "Tüm indirme kaynakları senkronize edildi",
|
||||||
|
"insert_valid_json_url": "Geçerli bir JSON URL'si girin",
|
||||||
|
"found_download_option_zero": "Hiçbir indirme seçeneği bulunamadı",
|
||||||
|
"found_download_option_one": "{{countFormatted}} indirme seçeneği bulundu",
|
||||||
|
"found_download_option_other": "{{countFormatted}} indirme seçeneği bulundu",
|
||||||
|
"import": "İçe aktar",
|
||||||
|
"public": "Herkese açık",
|
||||||
|
"private": "Gizli",
|
||||||
|
"friends_only": "Sadece arkadaşlar",
|
||||||
|
"privacy": "Gizlilik",
|
||||||
|
"profile_visibility": "Profil görünürlüğü",
|
||||||
|
"profile_visibility_description": "Profilinizi ve kütüphanenizi kimlerin görebileceğini seçin",
|
||||||
|
"required_field": "Bu alan gereklidir",
|
||||||
|
"source_already_exists": "Bu kaynak zaten eklenmiş",
|
||||||
|
"must_be_valid_url": "Kaynak geçerli bir URL olmalıdır",
|
||||||
|
"blocked_users": "Engellenen kullanıcılar",
|
||||||
|
"user_unblocked": "Kullanıcının engeli kaldırıldı",
|
||||||
|
"enable_achievement_notifications": "Bir başarı kilidi açıldığında",
|
||||||
|
"launch_minimized": "Hydra'yı küçültülmüş başlat",
|
||||||
|
"disable_nsfw_alert": "NSFW uyarısını devre dışı bırak",
|
||||||
|
"seed_after_download_complete": "İndirme tamamlandıktan sonra paylaş",
|
||||||
|
"show_hidden_achievement_description": "Gizli başarı açıklamalarını kilitlenmeden önce göster"
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
"download_complete": "İndirme tamamlandı",
|
"download_complete": "İndirme tamamlandı",
|
||||||
"game_ready_to_install": "{{title}} kuruluma hazır",
|
"game_ready_to_install": "{{title}} kurulmaya hazır",
|
||||||
"repack_list_updated": "Repack listesi güncellendi",
|
"repack_list_updated": "Repack listesi güncellendi",
|
||||||
"repack_count_one": "{{count}} yeni repack eklendi",
|
"repack_count_one": "{{count}} repack eklendi",
|
||||||
"repack_count_other": "{{count}} yeni repack eklendi"
|
"repack_count_other": "{{count}} repack eklendi",
|
||||||
|
"new_update_available": "Sürüm {{version}} mevcut",
|
||||||
|
"restart_to_install_update": "Güncellemeyi yüklemek için Hydra'yı yeniden başlatın",
|
||||||
|
"notification_achievement_unlocked_title": "{{game}} için başarı kilidi açıldı",
|
||||||
|
"notification_achievement_unlocked_body": "{{achievement}} ve diğer {{count}} başarılar açıldı"
|
||||||
},
|
},
|
||||||
"system_tray": {
|
"system_tray": {
|
||||||
"open": "Hydra'yı aç",
|
"open": "Hydra'yı Aç",
|
||||||
"quit": "Çık"
|
"quit": "Çık"
|
||||||
},
|
},
|
||||||
"game_card": {
|
"game_card": {
|
||||||
"no_downloads": "İndirme mevcut değil"
|
"no_downloads": "İndirilebilir içerik bulunmuyor"
|
||||||
},
|
},
|
||||||
"binary_not_found_modal": {
|
"binary_not_found_modal": {
|
||||||
"title": "Programlar yüklü değil",
|
"title": "Programlar Yüklü Değil",
|
||||||
"description": "Sisteminizde Wine veya Lutris çalıştırılabiliri bulunamadı",
|
"description": "Wine veya Lutris çalıştırılabilir dosyaları sisteminizde bulunamadı",
|
||||||
"instructions": "Oyunları düzgün şekilde çalıştırmak için Linux distronuza bunlardan birini nasıl yükleyebileceğinize bakın"
|
"instructions": "Oyunun normal çalışabilmesi için bunlardan herhangi birini Linux dağıtımınıza uygun şekilde nasıl kuracağınızı kontrol edin"
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"close": "Kapat tuşu"
|
"close": "Kapat düğmesi"
|
||||||
|
},
|
||||||
|
"forms": {
|
||||||
|
"toggle_password_visibility": "Şifre görünürlüğünü değiştir"
|
||||||
|
},
|
||||||
|
"user_profile": {
|
||||||
|
"amount_hours": "{{amount}} saat",
|
||||||
|
"amount_minutes": "{{amount}} dakika",
|
||||||
|
"last_time_played": "Son oynanma {{period}}",
|
||||||
|
"activity": "Son Etkinlik",
|
||||||
|
"library": "Kütüphane",
|
||||||
|
"total_play_time": "Toplam oynama süresi",
|
||||||
|
"no_recent_activity_title": "Hmmm… burada bir şey yok",
|
||||||
|
"no_recent_activity_description": "Son zamanlarda hiç oyun oynamamışsınız. Bunu değiştirmenin zamanı geldi!",
|
||||||
|
"display_name": "Görünen isim",
|
||||||
|
"saving": "Kaydediliyor",
|
||||||
|
"save": "Kaydet",
|
||||||
|
"edit_profile": "Profili Düzenle",
|
||||||
|
"saved_successfully": "Başarıyla kaydedildi",
|
||||||
|
"try_again": "Lütfen tekrar deneyin",
|
||||||
|
"sign_out_modal_title": "Emin misiniz?",
|
||||||
|
"cancel": "İptal",
|
||||||
|
"successfully_signed_out": "Başarıyla çıkış yapıldı",
|
||||||
|
"sign_out": "Çıkış yap",
|
||||||
|
"playing_for": "{{amount}} oynanıyor",
|
||||||
|
"sign_out_modal_text": "Kütüphaneniz mevcut hesabınıza bağlı. Çıkış yaptığınızda kütüphaneniz görünür olmayacak ve herhangi bir ilerleme kaydedilmeyecek. Çıkışa devam etmek istiyor musunuz?",
|
||||||
|
"add_friends": "Arkadaş Ekle",
|
||||||
|
"add": "Ekle",
|
||||||
|
"friend_code": "Arkadaş kodu",
|
||||||
|
"see_profile": "Profili gör",
|
||||||
|
"sending": "Gönderiliyor",
|
||||||
|
"friend_request_sent": "Arkadaşlık isteği gönderildi",
|
||||||
|
"friends": "Arkadaşlar",
|
||||||
|
"friends_list": "Arkadaş listesi",
|
||||||
|
"user_not_found": "Kullanıcı bulunamadı",
|
||||||
|
"block_user": "Kullanıcıyı engelle",
|
||||||
|
"add_friend": "Arkadaş ekle",
|
||||||
|
"request_sent": "İstek gönderildi",
|
||||||
|
"request_received": "İstek alındı",
|
||||||
|
"accept_request": "İsteği kabul et",
|
||||||
|
"ignore_request": "İsteği yok say",
|
||||||
|
"cancel_request": "İsteği iptal et",
|
||||||
|
"undo_friendship": "Arkadaşlığı sonlandır",
|
||||||
|
"request_accepted": "İstek kabul edildi",
|
||||||
|
"user_blocked_successfully": "Kullanıcı başarıyla engellendi",
|
||||||
|
"user_block_modal_text": "Bu işlem {{displayName}} adlı kullanıcıyı engelleyecek",
|
||||||
|
"blocked_users": "Engellenen kullanıcılar",
|
||||||
|
"unblock": "Engeli kaldır",
|
||||||
|
"no_friends_added": "Hiç arkadaş eklemediniz",
|
||||||
|
"pending": "Bekliyor",
|
||||||
|
"no_pending_invites": "Bekleyen davetiniz yok",
|
||||||
|
"no_blocked_users": "Engellenmiş kullanıcı yok",
|
||||||
|
"friend_code_copied": "Arkadaş kodu kopyalandı",
|
||||||
|
"undo_friendship_modal_text": "Bu işlem {{displayName}} ile arkadaşlığınızı sonlandıracak",
|
||||||
|
"privacy_hint": "Bunu kimin görebileceğini ayarlamak için <0>Ayarlar</0> bölümüne gidin",
|
||||||
|
"locked_profile": "Bu profil gizli",
|
||||||
|
"image_process_failure": "Görüntü işleme başarısız oldu",
|
||||||
|
"required_field": "Bu alan gerekli",
|
||||||
|
"displayname_min_length": "Görünen isim en az 3 karakter uzunluğunda olmalıdır",
|
||||||
|
"displayname_max_length": "Görünen isim en fazla 50 karakter uzunluğunda olabilir",
|
||||||
|
"report_profile": "Bu profili bildir",
|
||||||
|
"report_reason": "Bu profili neden bildiriyorsunuz?",
|
||||||
|
"report_description": "Ek bilgi",
|
||||||
|
"report_description_placeholder": "Ek bilgi",
|
||||||
|
"report": "Bildir",
|
||||||
|
"report_reason_hate": "Nefret söylemi",
|
||||||
|
"report_reason_sexual_content": "Cinsel içerik",
|
||||||
|
"report_reason_violence": "Şiddet",
|
||||||
|
"report_reason_spam": "Spam",
|
||||||
|
"report_reason_other": "Diğer",
|
||||||
|
"profile_reported": "Profil bildirildi",
|
||||||
|
"your_friend_code": "Arkadaş kodunuz:",
|
||||||
|
"upload_banner": "Afiş yükle",
|
||||||
|
"uploading_banner": "Afiş yükleniyor…",
|
||||||
|
"background_image_updated": "Arka plan görüntüsü güncellendi",
|
||||||
|
"stats": "İstatistikler",
|
||||||
|
"achievements": "Başarılar",
|
||||||
|
"games": "Oyunlar",
|
||||||
|
"top_percentile": "En üst {{percentile}}%",
|
||||||
|
"ranking_updated_weekly": "Sıralama haftalık olarak güncellenir",
|
||||||
|
"playing": "{{game}} oynanıyor",
|
||||||
|
"achievements_unlocked": "Başarılar açıldı",
|
||||||
|
"earned_points": "Kazanılan puanlar",
|
||||||
|
"show_achievements_on_profile": "Başarılarınızı profilinizde gösterin",
|
||||||
|
"show_points_on_profile": "Kazandığınız puanları profilinizde gösterin"
|
||||||
|
},
|
||||||
|
"achievement": {
|
||||||
|
"achievement_unlocked": "Başarı açıldı",
|
||||||
|
"user_achievements": "{{displayName}}'in Başarıları",
|
||||||
|
"your_achievements": "Başarılarınız",
|
||||||
|
"unlocked_at": "Açılma zamanı: {{date}}",
|
||||||
|
"subscription_needed": "Bu içeriği görmek için bir Hydra Cloud aboneliği gereklidir",
|
||||||
|
"new_achievements_unlocked": "{{gameCount}} oyundan {{achievementCount}} yeni başarı açıldı",
|
||||||
|
"achievement_progress": "{{unlockedCount}}/{{totalCount}} başarı",
|
||||||
|
"achievements_unlocked_for_game": "{{gameTitle}} oyunu için {{achievementCount}} yeni başarı açıldı",
|
||||||
|
"hidden_achievement_tooltip": "Bu gizli bir başarıdır",
|
||||||
|
"achievement_earn_points": "Bu başarı ile {{points}} puan kazanın",
|
||||||
|
"earned_points": "Kazanılan puanlar:",
|
||||||
|
"available_points": "Mevcut puanlar:",
|
||||||
|
"how_to_earn_achievements_points": "Başarı puanları nasıl kazanılır?"
|
||||||
|
},
|
||||||
|
"hydra_cloud": {
|
||||||
|
"subscription_tour_title": "Hydra Cloud Aboneliği",
|
||||||
|
"subscribe_now": "Şimdi abone olun",
|
||||||
|
"cloud_saving": "Bulut kaydetme",
|
||||||
|
"cloud_achievements": "Başarılarınızı buluta kaydedin",
|
||||||
|
"animated_profile_picture": "Animasyonlu profil resimleri",
|
||||||
|
"premium_support": "Premium Destek",
|
||||||
|
"show_and_compare_achievements": "Başarılarınızı diğer kullanıcılarla karşılaştırın ve gösterin",
|
||||||
|
"animated_profile_banner": "Animasyonlu profil afişi",
|
||||||
|
"hydra_cloud": "Hydra Cloud",
|
||||||
|
"hydra_cloud_feature_found": "Bir Hydra Cloud özelliği keşfettiniz!",
|
||||||
|
"learn_more": "Daha Fazla Bilgi Edinin"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import "./library/verify-executable-path";
|
|||||||
import "./library/remove-game";
|
import "./library/remove-game";
|
||||||
import "./library/remove-game-from-library";
|
import "./library/remove-game-from-library";
|
||||||
import "./library/select-game-wine-prefix";
|
import "./library/select-game-wine-prefix";
|
||||||
|
import "./library/reset-game-achievements";
|
||||||
import "./misc/open-checkout";
|
import "./misc/open-checkout";
|
||||||
import "./misc/open-external";
|
import "./misc/open-external";
|
||||||
import "./misc/show-open-dialog";
|
import "./misc/show-open-dialog";
|
||||||
|
56
src/main/events/library/reset-game-achievements.ts
Normal file
56
src/main/events/library/reset-game-achievements.ts
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import { gameAchievementRepository, gameRepository } from "@main/repository";
|
||||||
|
import { registerEvent } from "../register-event";
|
||||||
|
import { findAchievementFiles } from "@main/services/achievements/find-achivement-files";
|
||||||
|
import fs from "fs";
|
||||||
|
import { achievementsLogger, HydraApi, WindowManager } from "@main/services";
|
||||||
|
import { getUnlockedAchievements } from "../user/get-unlocked-achievements";
|
||||||
|
|
||||||
|
const resetGameAchievements = async (
|
||||||
|
_event: Electron.IpcMainInvokeEvent,
|
||||||
|
gameId: number
|
||||||
|
) => {
|
||||||
|
try {
|
||||||
|
const game = await gameRepository.findOne({ where: { id: gameId } });
|
||||||
|
|
||||||
|
if (!game) return;
|
||||||
|
|
||||||
|
const achievementFiles = findAchievementFiles(game);
|
||||||
|
|
||||||
|
if (achievementFiles.length) {
|
||||||
|
for (const achievementFile of achievementFiles) {
|
||||||
|
achievementsLogger.log(`deleting ${achievementFile.filePath}`);
|
||||||
|
await fs.promises.rm(achievementFile.filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await gameAchievementRepository.update(
|
||||||
|
{ objectId: game.objectID },
|
||||||
|
{
|
||||||
|
unlockedAchievements: null,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
await HydraApi.delete(`/profile/games/achievements/${game.remoteId}`).then(
|
||||||
|
() =>
|
||||||
|
achievementsLogger.log(
|
||||||
|
`Deleted achievements from ${game.remoteId} - ${game.objectID} - ${game.title}`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const gameAchievements = await getUnlockedAchievements(
|
||||||
|
game.objectID,
|
||||||
|
game.shop,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
WindowManager.mainWindow?.webContents.send(
|
||||||
|
`on-update-achievements-${game.objectID}-${game.shop}`,
|
||||||
|
gameAchievements
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
achievementsLogger.error(error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
registerEvent("resetGameAchievements", resetGameAchievements);
|
@ -130,6 +130,8 @@ contextBridge.exposeInMainWorld("electron", {
|
|||||||
ipcRenderer.invoke("deleteGameFolder", gameId),
|
ipcRenderer.invoke("deleteGameFolder", gameId),
|
||||||
getGameByObjectId: (objectId: string) =>
|
getGameByObjectId: (objectId: string) =>
|
||||||
ipcRenderer.invoke("getGameByObjectId", objectId),
|
ipcRenderer.invoke("getGameByObjectId", objectId),
|
||||||
|
resetGameAchievements: (gameId: number) =>
|
||||||
|
ipcRenderer.invoke("resetGameAchievements", gameId),
|
||||||
onGamesRunning: (
|
onGamesRunning: (
|
||||||
cb: (
|
cb: (
|
||||||
gamesRunning: Pick<GameRunning, "id" | "sessionDurationInMillis">[]
|
gamesRunning: Pick<GameRunning, "id" | "sessionDurationInMillis">[]
|
||||||
|
2
src/renderer/src/declaration.d.ts
vendored
2
src/renderer/src/declaration.d.ts
vendored
@ -122,7 +122,7 @@ declare global {
|
|||||||
) => void
|
) => void
|
||||||
) => () => Electron.IpcRenderer;
|
) => () => Electron.IpcRenderer;
|
||||||
onLibraryBatchComplete: (cb: () => void) => () => Electron.IpcRenderer;
|
onLibraryBatchComplete: (cb: () => void) => () => Electron.IpcRenderer;
|
||||||
|
resetGameAchievements: (gameId: number) => Promise<void>;
|
||||||
/* User preferences */
|
/* User preferences */
|
||||||
getUserPreferences: () => Promise<UserPreferences | null>;
|
getUserPreferences: () => Promise<UserPreferences | null>;
|
||||||
updateUserPreferences: (
|
updateUserPreferences: (
|
||||||
|
@ -5,8 +5,9 @@ import type { Game } from "@types";
|
|||||||
import * as styles from "./game-options-modal.css";
|
import * as styles from "./game-options-modal.css";
|
||||||
import { gameDetailsContext } from "@renderer/context";
|
import { gameDetailsContext } from "@renderer/context";
|
||||||
import { DeleteGameModal } from "@renderer/pages/downloads/delete-game-modal";
|
import { DeleteGameModal } from "@renderer/pages/downloads/delete-game-modal";
|
||||||
import { useDownload, useToast } from "@renderer/hooks";
|
import { useDownload, useToast, useUserDetails } from "@renderer/hooks";
|
||||||
import { RemoveGameFromLibraryModal } from "./remove-from-library-modal";
|
import { RemoveGameFromLibraryModal } from "./remove-from-library-modal";
|
||||||
|
import { ResetAchievementsModal } from "./reset-achievements-modal";
|
||||||
import { FileDirectoryIcon, FileIcon } from "@primer/octicons-react";
|
import { FileDirectoryIcon, FileIcon } from "@primer/octicons-react";
|
||||||
import { debounce } from "lodash-es";
|
import { debounce } from "lodash-es";
|
||||||
|
|
||||||
@ -25,12 +26,20 @@ export function GameOptionsModal({
|
|||||||
|
|
||||||
const { showSuccessToast, showErrorToast } = useToast();
|
const { showSuccessToast, showErrorToast } = useToast();
|
||||||
|
|
||||||
const { updateGame, setShowRepacksModal, repacks, selectGameExecutable } =
|
const {
|
||||||
useContext(gameDetailsContext);
|
updateGame,
|
||||||
|
setShowRepacksModal,
|
||||||
|
repacks,
|
||||||
|
selectGameExecutable,
|
||||||
|
achievements,
|
||||||
|
} = useContext(gameDetailsContext);
|
||||||
|
|
||||||
const [showDeleteModal, setShowDeleteModal] = useState(false);
|
const [showDeleteModal, setShowDeleteModal] = useState(false);
|
||||||
const [showRemoveGameModal, setShowRemoveGameModal] = useState(false);
|
const [showRemoveGameModal, setShowRemoveGameModal] = useState(false);
|
||||||
const [launchOptions, setLaunchOptions] = useState(game.launchOptions ?? "");
|
const [launchOptions, setLaunchOptions] = useState(game.launchOptions ?? "");
|
||||||
|
const [showResetAchievementsModal, setShowResetAchievementsModal] =
|
||||||
|
useState(false);
|
||||||
|
const [isDeletingAchievements, setIsDeletingAchievements] = useState(false);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
removeGameInstaller,
|
removeGameInstaller,
|
||||||
@ -39,6 +48,12 @@ export function GameOptionsModal({
|
|||||||
cancelDownload,
|
cancelDownload,
|
||||||
} = useDownload();
|
} = useDownload();
|
||||||
|
|
||||||
|
const { userDetails } = useUserDetails();
|
||||||
|
|
||||||
|
const hasAchievements =
|
||||||
|
(achievements?.filter((achievement) => achievement.unlocked).length ?? 0) >
|
||||||
|
0;
|
||||||
|
|
||||||
const deleting = isGameDeleting(game.id);
|
const deleting = isGameDeleting(game.id);
|
||||||
|
|
||||||
const { lastPacket } = useDownload();
|
const { lastPacket } = useDownload();
|
||||||
@ -141,6 +156,19 @@ export function GameOptionsModal({
|
|||||||
const shouldShowWinePrefixConfiguration =
|
const shouldShowWinePrefixConfiguration =
|
||||||
window.electron.platform === "linux";
|
window.electron.platform === "linux";
|
||||||
|
|
||||||
|
const handleResetAchievements = async () => {
|
||||||
|
setIsDeletingAchievements(true);
|
||||||
|
try {
|
||||||
|
await window.electron.resetGameAchievements(game.id);
|
||||||
|
await updateGame();
|
||||||
|
showSuccessToast(t("reset_achievements_success"));
|
||||||
|
} catch (error) {
|
||||||
|
showErrorToast(t("reset_achievements_error"));
|
||||||
|
} finally {
|
||||||
|
setIsDeletingAchievements(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const shouldShowLaunchOptionsConfiguration = false;
|
const shouldShowLaunchOptionsConfiguration = false;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -158,6 +186,13 @@ export function GameOptionsModal({
|
|||||||
game={game}
|
game={game}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<ResetAchievementsModal
|
||||||
|
visible={showResetAchievementsModal}
|
||||||
|
onClose={() => setShowResetAchievementsModal(false)}
|
||||||
|
resetAchievements={handleResetAchievements}
|
||||||
|
game={game}
|
||||||
|
/>
|
||||||
|
|
||||||
<Modal
|
<Modal
|
||||||
visible={visible}
|
visible={visible}
|
||||||
title={game.title}
|
title={game.title}
|
||||||
@ -313,6 +348,20 @@ export function GameOptionsModal({
|
|||||||
>
|
>
|
||||||
{t("remove_from_library")}
|
{t("remove_from_library")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
onClick={() => setShowResetAchievementsModal(true)}
|
||||||
|
theme="danger"
|
||||||
|
disabled={
|
||||||
|
deleting ||
|
||||||
|
isDeletingAchievements ||
|
||||||
|
!hasAchievements ||
|
||||||
|
!userDetails
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{t("reset_achievements")}
|
||||||
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setShowDeleteModal(true);
|
setShowDeleteModal(true);
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { Button, Modal } from "@renderer/components";
|
||||||
|
import * as styles from "./remove-from-library-modal.css";
|
||||||
|
import type { Game } from "@types";
|
||||||
|
type ResetAchievementsModalProps = Readonly<{
|
||||||
|
visible: boolean;
|
||||||
|
game: Game;
|
||||||
|
onClose: () => void;
|
||||||
|
resetAchievements: () => Promise<void>;
|
||||||
|
}>;
|
||||||
|
|
||||||
|
export function ResetAchievementsModal({
|
||||||
|
onClose,
|
||||||
|
game,
|
||||||
|
visible,
|
||||||
|
resetAchievements,
|
||||||
|
}: ResetAchievementsModalProps) {
|
||||||
|
const { t } = useTranslation("game_details");
|
||||||
|
|
||||||
|
const handleResetAchievements = async () => {
|
||||||
|
try {
|
||||||
|
await resetAchievements();
|
||||||
|
} finally {
|
||||||
|
onClose();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
visible={visible}
|
||||||
|
onClose={onClose}
|
||||||
|
title={t("reset_achievements_title")}
|
||||||
|
description={t("reset_achievements_description", {
|
||||||
|
game: game.title,
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
<div className={styles.deleteActionsButtonsCtn}>
|
||||||
|
<Button onClick={handleResetAchievements} theme="outline">
|
||||||
|
{t("reset_achievements")}
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<Button onClick={onClose} theme="primary">
|
||||||
|
{t("cancel")}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user