forked from akai/readest
This commit is contained in:
@@ -841,7 +841,6 @@
|
||||
"Translate text after selection": "ترجمة النص بعد التحديد",
|
||||
"Read text aloud after selection": "قراءة النص بصوت عالٍ بعد التحديد",
|
||||
"Proofread text after selection": "تدقيق النص بعد التحديد",
|
||||
"File Transfers": "نقل الملفات",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} نشط، {{pendingCount}} قيد الانتظار",
|
||||
"{{failedCount}} failed": "{{failedCount}} فشل",
|
||||
"Waiting...": "جارٍ الانتظار...",
|
||||
@@ -864,5 +863,6 @@
|
||||
"Download queued: {{title}}": "التنزيل في قائمة الانتظار: {{title}}",
|
||||
"Book not found in library": "الكتاب غير موجود في المكتبة",
|
||||
"Unknown error": "خطأ غير معروف",
|
||||
"Please log in to continue": "يرجى تسجيل الدخول للمتابعة"
|
||||
"Please log in to continue": "يرجى تسجيل الدخول للمتابعة",
|
||||
"Cloud File Transfers": "نقل الملفات السحابية"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "নির্বাচনের পরে টেক্সট অনুবাদ করুন",
|
||||
"Read text aloud after selection": "নির্বাচনের পরে টেক্সট উচ্চারণ করুন",
|
||||
"Proofread text after selection": "নির্বাচনের পরে টেক্সট প্রুফরিড করুন",
|
||||
"File Transfers": "ফাইল স্থানান্তর",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} সক্রিয়, {{pendingCount}} অপেক্ষমাণ",
|
||||
"{{failedCount}} failed": "{{failedCount}} ব্যর্থ",
|
||||
"Waiting...": "অপেক্ষা করছে...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "ডাউনলোড সারিতে: {{title}}",
|
||||
"Book not found in library": "লাইব্রেরিতে বই পাওয়া যায়নি",
|
||||
"Unknown error": "অজানা ত্রুটি",
|
||||
"Please log in to continue": "চালিয়ে যেতে লগইন করুন"
|
||||
"Please log in to continue": "চালিয়ে যেতে লগইন করুন",
|
||||
"Cloud File Transfers": "ক্লাউড ফাইল স্থানান্তরসমূহ"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "ཡིག་ཆ་འདེམས་པའི་ཐབས་ཀྱིས་སྐད་བསྒྱུར་བྱེད་",
|
||||
"Read text aloud after selection": "ཡིག་ཆ་འདེམས་པའི་ཐབས་ཀྱིས་སྐད་ཀྱིས་ཀློག་",
|
||||
"Proofread text after selection": "ཡིག་ཆ་འདེམས་པའི་ཐབས་ཀྱིས་ཞིབ་བཤེར་བྱེད་",
|
||||
"File Transfers": "ཡིག་ཆ་སྐྱེལ་འདྲེན་",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} བྱེད་བཞིན་པ་, {{pendingCount}} སྒུག་བཞིན་པ་",
|
||||
"{{failedCount}} failed": "{{failedCount}} ཕམ་པ་",
|
||||
"Waiting...": "སྒུག་བཞིན་པ་...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "ལེན་པའི་སྒྲིག་གཅོད་ནང་བཅུག་: {{title}}",
|
||||
"Book not found in library": "དཔེ་མཛོད་ནང་དཔེ་ཆ་རྙེད་མ་སོང་",
|
||||
"Unknown error": "མ་ཤེས་པའི་ནོར་འཁྲུལ་",
|
||||
"Please log in to continue": "མུ་མཐུད་པར་ནང་འཛུལ་བྱོས་"
|
||||
"Please log in to continue": "མུ་མཐུད་པར་ནང་འཛུལ་བྱོས་",
|
||||
"Cloud File Transfers": "སྤྲིན་གནས་ཡིག་ཆ་སྐྱེལ་འདྲེན།"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "Text nach Auswahl übersetzen",
|
||||
"Read text aloud after selection": "Text nach Auswahl vorlesen",
|
||||
"Proofread text after selection": "Text nach Auswahl Korrektur lesen",
|
||||
"File Transfers": "Dateiübertragungen",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} aktiv, {{pendingCount}} ausstehend",
|
||||
"{{failedCount}} failed": "{{failedCount}} fehlgeschlagen",
|
||||
"Waiting...": "Warten...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "Download in Warteschlange: {{title}}",
|
||||
"Book not found in library": "Buch nicht in der Bibliothek gefunden",
|
||||
"Unknown error": "Unbekannter Fehler",
|
||||
"Please log in to continue": "Bitte melden Sie sich an, um fortzufahren"
|
||||
"Please log in to continue": "Bitte melden Sie sich an, um fortzufahren",
|
||||
"Cloud File Transfers": "Cloud-Dateiübertragungen"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "Μετάφραση κειμένου μετά την επιλογή",
|
||||
"Read text aloud after selection": "Ανάγνωση κειμένου μετά την επιλογή",
|
||||
"Proofread text after selection": "Διόρθωση κειμένου μετά την επιλογή",
|
||||
"File Transfers": "Μεταφορές αρχείων",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} ενεργές, {{pendingCount}} σε αναμονή",
|
||||
"{{failedCount}} failed": "{{failedCount}} απέτυχαν",
|
||||
"Waiting...": "Αναμονή...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "Λήψη στην ουρά: {{title}}",
|
||||
"Book not found in library": "Το βιβλίο δεν βρέθηκε στη βιβλιοθήκη",
|
||||
"Unknown error": "Άγνωστο σφάλμα",
|
||||
"Please log in to continue": "Παρακαλώ συνδεθείτε για να συνεχίσετε"
|
||||
"Please log in to continue": "Παρακαλώ συνδεθείτε για να συνεχίσετε",
|
||||
"Cloud File Transfers": "Μεταφορές αρχείων στο cloud"
|
||||
}
|
||||
|
||||
@@ -811,7 +811,6 @@
|
||||
"Translate text after selection": "Traducir texto después de la selección",
|
||||
"Read text aloud after selection": "Leer texto en voz alta después de la selección",
|
||||
"Proofread text after selection": "Corregir texto después de la selección",
|
||||
"File Transfers": "Transferencias de archivos",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} activas, {{pendingCount}} pendientes",
|
||||
"{{failedCount}} failed": "{{failedCount}} fallidas",
|
||||
"Waiting...": "Esperando...",
|
||||
@@ -834,5 +833,6 @@
|
||||
"Download queued: {{title}}": "Descarga en cola: {{title}}",
|
||||
"Book not found in library": "Libro no encontrado en la biblioteca",
|
||||
"Unknown error": "Error desconocido",
|
||||
"Please log in to continue": "Inicia sesión para continuar"
|
||||
"Please log in to continue": "Inicia sesión para continuar",
|
||||
"Cloud File Transfers": "Transferencias en la nube"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "ترجمه متن پس از انتخاب",
|
||||
"Read text aloud after selection": "خواندن متن با صدای بلند پس از انتخاب",
|
||||
"Proofread text after selection": "بازبینی متن پس از انتخاب",
|
||||
"File Transfers": "انتقال فایلها",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} فعال، {{pendingCount}} در انتظار",
|
||||
"{{failedCount}} failed": "{{failedCount}} ناموفق",
|
||||
"Waiting...": "در انتظار...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "دانلود در صف: {{title}}",
|
||||
"Book not found in library": "کتاب در کتابخانه یافت نشد",
|
||||
"Unknown error": "خطای ناشناخته",
|
||||
"Please log in to continue": "لطفاً برای ادامه وارد شوید"
|
||||
"Please log in to continue": "لطفاً برای ادامه وارد شوید",
|
||||
"Cloud File Transfers": "انتقال فایلهای ابری"
|
||||
}
|
||||
|
||||
@@ -811,7 +811,6 @@
|
||||
"Translate text after selection": "Traduire le texte après la sélection",
|
||||
"Read text aloud after selection": "Lire le texte à haute voix après la sélection",
|
||||
"Proofread text after selection": "Relire le texte après la sélection",
|
||||
"File Transfers": "Transferts de fichiers",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} actifs, {{pendingCount}} en attente",
|
||||
"{{failedCount}} failed": "{{failedCount}} échoués",
|
||||
"Waiting...": "En attente...",
|
||||
@@ -834,5 +833,6 @@
|
||||
"Download queued: {{title}}": "Téléchargement en file: {{title}}",
|
||||
"Book not found in library": "Livre non trouvé dans la bibliothèque",
|
||||
"Unknown error": "Erreur inconnue",
|
||||
"Please log in to continue": "Veuillez vous connecter pour continuer"
|
||||
"Please log in to continue": "Veuillez vous connecter pour continuer",
|
||||
"Cloud File Transfers": "Transferts de fichiers cloud"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "चयन के बाद पाठ का अनुवाद करें",
|
||||
"Read text aloud after selection": "चयन के बाद पाठ को जोर से पढ़ें",
|
||||
"Proofread text after selection": "चयन के बाद पाठ को प्रूफरीड करें",
|
||||
"File Transfers": "फ़ाइल स्थानांतरण",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} सक्रिय, {{pendingCount}} लंबित",
|
||||
"{{failedCount}} failed": "{{failedCount}} विफल",
|
||||
"Waiting...": "प्रतीक्षा कर रहे हैं...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "डाउनलोड कतार में: {{title}}",
|
||||
"Book not found in library": "पुस्तकालय में पुस्तक नहीं मिली",
|
||||
"Unknown error": "अज्ञात त्रुटि",
|
||||
"Please log in to continue": "जारी रखने के लिए लॉगिन करें"
|
||||
"Please log in to continue": "जारी रखने के लिए लॉगिन करें",
|
||||
"Cloud File Transfers": "क्लाउड फ़ाइल स्थानांतरण"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "Terjemahkan teks setelah pemilihan",
|
||||
"Read text aloud after selection": "Bacakan teks setelah pemilihan",
|
||||
"Proofread text after selection": "Periksa teks setelah pemilihan",
|
||||
"File Transfers": "Transfer File",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} aktif, {{pendingCount}} menunggu",
|
||||
"{{failedCount}} failed": "{{failedCount}} gagal",
|
||||
"Waiting...": "Menunggu...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "Unduhan dalam antrian: {{title}}",
|
||||
"Book not found in library": "Buku tidak ditemukan di perpustakaan",
|
||||
"Unknown error": "Kesalahan tidak diketahui",
|
||||
"Please log in to continue": "Silakan masuk untuk melanjutkan"
|
||||
"Please log in to continue": "Silakan masuk untuk melanjutkan",
|
||||
"Cloud File Transfers": "Transfer File Cloud"
|
||||
}
|
||||
|
||||
@@ -811,7 +811,6 @@
|
||||
"Translate text after selection": "Traduci testo dopo la selezione",
|
||||
"Read text aloud after selection": "Leggi ad alta voce il testo dopo la selezione",
|
||||
"Proofread text after selection": "Correggi il testo dopo la selezione",
|
||||
"File Transfers": "Trasferimenti file",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} attivi, {{pendingCount}} in attesa",
|
||||
"{{failedCount}} failed": "{{failedCount}} falliti",
|
||||
"Waiting...": "In attesa...",
|
||||
@@ -834,5 +833,6 @@
|
||||
"Download queued: {{title}}": "Download in coda: {{title}}",
|
||||
"Book not found in library": "Libro non trovato nella libreria",
|
||||
"Unknown error": "Errore sconosciuto",
|
||||
"Please log in to continue": "Accedi per continuare"
|
||||
"Please log in to continue": "Accedi per continuare",
|
||||
"Cloud File Transfers": "Trasferimenti file cloud"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "選択後のテキストを翻訳する",
|
||||
"Read text aloud after selection": "選択後のテキストを音読する",
|
||||
"Proofread text after selection": "選択後のテキストを校正する",
|
||||
"File Transfers": "ファイル転送",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} 進行中、{{pendingCount}} 待機中",
|
||||
"{{failedCount}} failed": "{{failedCount}} 失敗",
|
||||
"Waiting...": "待機中...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "ダウンロードをキューに追加: {{title}}",
|
||||
"Book not found in library": "ライブラリに本が見つかりません",
|
||||
"Unknown error": "不明なエラー",
|
||||
"Please log in to continue": "続行するにはログインしてください"
|
||||
"Please log in to continue": "続行するにはログインしてください",
|
||||
"Cloud File Transfers": "クラウドファイル転送"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "선택 후 텍스트 번역",
|
||||
"Read text aloud after selection": "선택 후 텍스트 음성 읽기",
|
||||
"Proofread text after selection": "선택 후 텍스트 교정",
|
||||
"File Transfers": "파일 전송",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} 진행 중, {{pendingCount}} 대기 중",
|
||||
"{{failedCount}} failed": "{{failedCount}} 실패",
|
||||
"Waiting...": "대기 중...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "다운로드 대기열에 추가됨: {{title}}",
|
||||
"Book not found in library": "라이브러리에서 책을 찾을 수 없음",
|
||||
"Unknown error": "알 수 없는 오류",
|
||||
"Please log in to continue": "계속하려면 로그인하세요"
|
||||
"Please log in to continue": "계속하려면 로그인하세요",
|
||||
"Cloud File Transfers": "클라우드 파일 전송"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "Terjemah teks selepas pilihan",
|
||||
"Read text aloud after selection": "Baca teks dengan kuat selepas pilihan",
|
||||
"Proofread text after selection": "Semak teks selepas pilihan",
|
||||
"File Transfers": "Pemindahan Fail",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} aktif, {{pendingCount}} menunggu",
|
||||
"{{failedCount}} failed": "{{failedCount}} gagal",
|
||||
"Waiting...": "Menunggu...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "Muat turun dalam baris gilir: {{title}}",
|
||||
"Book not found in library": "Buku tidak dijumpai dalam perpustakaan",
|
||||
"Unknown error": "Ralat tidak diketahui",
|
||||
"Please log in to continue": "Sila log masuk untuk meneruskan"
|
||||
"Please log in to continue": "Sila log masuk untuk meneruskan",
|
||||
"Cloud File Transfers": "Pemindahan Fail Awan"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "Vertaal tekst na selectie",
|
||||
"Read text aloud after selection": "Lees tekst hardop na selectie",
|
||||
"Proofread text after selection": "Corrigeer tekst na selectie",
|
||||
"File Transfers": "Bestandsoverdrachten",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} actief, {{pendingCount}} wachtend",
|
||||
"{{failedCount}} failed": "{{failedCount}} mislukt",
|
||||
"Waiting...": "Wachten...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "Download in wachtrij: {{title}}",
|
||||
"Book not found in library": "Boek niet gevonden in bibliotheek",
|
||||
"Unknown error": "Onbekende fout",
|
||||
"Please log in to continue": "Log in om door te gaan"
|
||||
"Please log in to continue": "Log in om door te gaan",
|
||||
"Cloud File Transfers": "Cloud Bestandoverdrachten"
|
||||
}
|
||||
|
||||
@@ -821,7 +821,6 @@
|
||||
"Translate text after selection": "Przetłumacz zaznaczony tekst",
|
||||
"Read text aloud after selection": "Odczytaj zaznaczony tekst na głos",
|
||||
"Proofread text after selection": "Sprawdź zaznaczony tekst",
|
||||
"File Transfers": "Transfery plików",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} aktywnych, {{pendingCount}} oczekujących",
|
||||
"{{failedCount}} failed": "{{failedCount}} nieudanych",
|
||||
"Waiting...": "Oczekiwanie...",
|
||||
@@ -844,5 +843,6 @@
|
||||
"Download queued: {{title}}": "Pobieranie w kolejce: {{title}}",
|
||||
"Book not found in library": "Książka nie została znaleziona w bibliotece",
|
||||
"Unknown error": "Nieznany błąd",
|
||||
"Please log in to continue": "Zaloguj się, aby kontynuować"
|
||||
"Please log in to continue": "Zaloguj się, aby kontynuować",
|
||||
"Cloud File Transfers": "Transfery plików w chmurze"
|
||||
}
|
||||
|
||||
@@ -811,7 +811,6 @@
|
||||
"Translate text after selection": "Traduzir texto após a seleção",
|
||||
"Read text aloud after selection": "Ler texto em voz alta após a seleção",
|
||||
"Proofread text after selection": "Revisar texto após a seleção",
|
||||
"File Transfers": "Transferências de Arquivos",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} ativos, {{pendingCount}} pendentes",
|
||||
"{{failedCount}} failed": "{{failedCount}} falharam",
|
||||
"Waiting...": "Aguardando...",
|
||||
@@ -834,5 +833,6 @@
|
||||
"Download queued: {{title}}": "Download na fila: {{title}}",
|
||||
"Book not found in library": "Livro não encontrado na biblioteca",
|
||||
"Unknown error": "Erro desconhecido",
|
||||
"Please log in to continue": "Faça login para continuar"
|
||||
"Please log in to continue": "Faça login para continuar",
|
||||
"Cloud File Transfers": "Transferências de Arquivos"
|
||||
}
|
||||
|
||||
@@ -821,7 +821,6 @@
|
||||
"Translate text after selection": "Перевести текст после выделения",
|
||||
"Read text aloud after selection": "Прочитать текст вслух после выделения",
|
||||
"Proofread text after selection": "Корректировать текст после выделения",
|
||||
"File Transfers": "Передача файлов",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} активных, {{pendingCount}} ожидающих",
|
||||
"{{failedCount}} failed": "{{failedCount}} неудачных",
|
||||
"Waiting...": "Ожидание...",
|
||||
@@ -844,5 +843,6 @@
|
||||
"Download queued: {{title}}": "Скачивание в очереди: {{title}}",
|
||||
"Book not found in library": "Книга не найдена в библиотеке",
|
||||
"Unknown error": "Неизвестная ошибка",
|
||||
"Please log in to continue": "Войдите, чтобы продолжить"
|
||||
"Please log in to continue": "Войдите, чтобы продолжить",
|
||||
"Cloud File Transfers": "Передача файлов в облако"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "තේරීමෙන් පසු පෙළ පරිවර්තනය කරන්න",
|
||||
"Read text aloud after selection": "තේරීමෙන් පසු පෙළ උච්චාරණය කරන්න",
|
||||
"Proofread text after selection": "තේරීමෙන් පසු පෙළ සංශෝධනය කරන්න",
|
||||
"File Transfers": "ගොනු හුවමාරු",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} සක්රීය, {{pendingCount}} බලාපොරොත්තුවේ",
|
||||
"{{failedCount}} failed": "{{failedCount}} අසාර්ථක",
|
||||
"Waiting...": "බලාපොරොත්තුවේ...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "බාගත කිරීම පෝලිමේ: {{title}}",
|
||||
"Book not found in library": "පුස්තකාලයේ පොත හමු නොවීය",
|
||||
"Unknown error": "නොදන්නා දෝෂයක්",
|
||||
"Please log in to continue": "ඉදිරියට යාමට පිවිසෙන්න"
|
||||
"Please log in to continue": "ඉදිරියට යාමට පිවිසෙන්න",
|
||||
"Cloud File Transfers": "කලාප ගොනු හුවමාරු"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "Översätt text efter markering",
|
||||
"Read text aloud after selection": "Läs upp text efter markering",
|
||||
"Proofread text after selection": "Korrekturläs text efter markering",
|
||||
"File Transfers": "Filöverföringar",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} aktiva, {{pendingCount}} väntande",
|
||||
"{{failedCount}} failed": "{{failedCount}} misslyckades",
|
||||
"Waiting...": "Väntar...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "Nedladdning köad: {{title}}",
|
||||
"Book not found in library": "Boken hittades inte i biblioteket",
|
||||
"Unknown error": "Okänt fel",
|
||||
"Please log in to continue": "Logga in för att fortsätta"
|
||||
"Please log in to continue": "Logga in för att fortsätta",
|
||||
"Cloud File Transfers": "Molnfilöverföringar"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "தேர்வுக்குப் பிறகு உரையை மொழிபெயர்",
|
||||
"Read text aloud after selection": "தேர்வுக்குப் பிறகு உரையை ஓதுக",
|
||||
"Proofread text after selection": "தேர்வுக்குப் பிறகு உரையை திருத்துக",
|
||||
"File Transfers": "கோப்பு பரிமாற்றங்கள்",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} செயலில், {{pendingCount}} காத்திருப்பு",
|
||||
"{{failedCount}} failed": "{{failedCount}} தோல்வி",
|
||||
"Waiting...": "காத்திருக்கிறது...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "பதிவிறக்கம் வரிசையில்: {{title}}",
|
||||
"Book not found in library": "நூலகத்தில் புத்தகம் கிடைக்கவில்லை",
|
||||
"Unknown error": "தெரியாத பிழை",
|
||||
"Please log in to continue": "தொடர உள்நுழையவும்"
|
||||
"Please log in to continue": "தொடர உள்நுழையவும்",
|
||||
"Cloud File Transfers": "மேகக் கோப்பு பரிமாற்றங்கள்"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "แปลข้อความหลังการเลือก",
|
||||
"Read text aloud after selection": "อ่านข้อความออกเสียงหลังการเลือก",
|
||||
"Proofread text after selection": "ตรวจทานข้อความหลังการเลือก",
|
||||
"File Transfers": "การถ่ายโอนไฟล์",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} กำลังดำเนินการ, {{pendingCount}} รอดำเนินการ",
|
||||
"{{failedCount}} failed": "{{failedCount}} ล้มเหลว",
|
||||
"Waiting...": "กำลังรอ...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "ดาวน์โหลดอยู่ในคิว: {{title}}",
|
||||
"Book not found in library": "ไม่พบหนังสือในห้องสมุด",
|
||||
"Unknown error": "ข้อผิดพลาดที่ไม่รู้จัก",
|
||||
"Please log in to continue": "กรุณาเข้าสู่ระบบเพื่อดำเนินการต่อ"
|
||||
"Please log in to continue": "กรุณาเข้าสู่ระบบเพื่อดำเนินการต่อ",
|
||||
"Cloud File Transfers": "การถ่ายโอนไฟล์คลาวด์"
|
||||
}
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
"Translate text after selection": "Seçimden sonra metni çevir",
|
||||
"Read text aloud after selection": "Seçimden sonra metni sesli oku",
|
||||
"Proofread text after selection": "Seçimden sonra metni düzelt",
|
||||
"File Transfers": "Dosya Transferleri",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} aktif, {{pendingCount}} beklemede",
|
||||
"{{failedCount}} failed": "{{failedCount}} başarısız",
|
||||
"Waiting...": "Bekleniyor...",
|
||||
@@ -824,5 +823,6 @@
|
||||
"Download queued: {{title}}": "İndirme sıraya alındı: {{title}}",
|
||||
"Book not found in library": "Kitap kütüphanede bulunamadı",
|
||||
"Unknown error": "Bilinmeyen hata",
|
||||
"Please log in to continue": "Devam etmek için giriş yapın"
|
||||
"Please log in to continue": "Devam etmek için giriş yapın",
|
||||
"Cloud File Transfers": "Bulut Dosya Transferleri"
|
||||
}
|
||||
|
||||
@@ -821,7 +821,6 @@
|
||||
"Translate text after selection": "Перекласти текст після виділення",
|
||||
"Read text aloud after selection": "Прочитати текст вголос після виділення",
|
||||
"Proofread text after selection": "Вичитати текст після виділення",
|
||||
"File Transfers": "Передача файлів",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} активних, {{pendingCount}} очікують",
|
||||
"{{failedCount}} failed": "{{failedCount}} невдалих",
|
||||
"Waiting...": "Очікування...",
|
||||
@@ -844,5 +843,6 @@
|
||||
"Download queued: {{title}}": "Завантаження в черзі: {{title}}",
|
||||
"Book not found in library": "Книгу не знайдено в бібліотеці",
|
||||
"Unknown error": "Невідома помилка",
|
||||
"Please log in to continue": "Увійдіть, щоб продовжити"
|
||||
"Please log in to continue": "Увійдіть, щоб продовжити",
|
||||
"Cloud File Transfers": "Передача файлів у хмару"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "Dịch văn bản sau khi chọn",
|
||||
"Read text aloud after selection": "Đọc to văn bản sau khi chọn",
|
||||
"Proofread text after selection": "Hiệu đính văn bản sau khi chọn",
|
||||
"File Transfers": "Truyền tập tin",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} đang hoạt động, {{pendingCount}} đang chờ",
|
||||
"{{failedCount}} failed": "{{failedCount}} thất bại",
|
||||
"Waiting...": "Đang chờ...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "Tải xuống trong hàng đợi: {{title}}",
|
||||
"Book not found in library": "Không tìm thấy sách trong thư viện",
|
||||
"Unknown error": "Lỗi không xác định",
|
||||
"Please log in to continue": "Vui lòng đăng nhập để tiếp tục"
|
||||
"Please log in to continue": "Vui lòng đăng nhập để tiếp tục",
|
||||
"Cloud File Transfers": "Truyền tệp đám mây"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "翻译选中文本",
|
||||
"Read text aloud after selection": "朗读选中文本",
|
||||
"Proofread text after selection": "校对选中文本",
|
||||
"File Transfers": "文件传输",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} 进行中,{{pendingCount}} 等待中",
|
||||
"{{failedCount}} failed": "{{failedCount}} 失败",
|
||||
"Waiting...": "等待中...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "下载已排队:{{title}}",
|
||||
"Book not found in library": "在书库中找不到书籍",
|
||||
"Unknown error": "未知错误",
|
||||
"Please log in to continue": "请登录以继续"
|
||||
"Please log in to continue": "请登录以继续",
|
||||
"Cloud File Transfers": "云文件传输"
|
||||
}
|
||||
|
||||
@@ -791,7 +791,6 @@
|
||||
"Translate text after selection": "翻譯選取後的文字",
|
||||
"Read text aloud after selection": "朗讀選取後的文字",
|
||||
"Proofread text after selection": "校對選取後的文字",
|
||||
"File Transfers": "檔案傳輸",
|
||||
"{{activeCount}} active, {{pendingCount}} pending": "{{activeCount}} 進行中,{{pendingCount}} 等待中",
|
||||
"{{failedCount}} failed": "{{failedCount}} 失敗",
|
||||
"Waiting...": "等待中...",
|
||||
@@ -814,5 +813,6 @@
|
||||
"Download queued: {{title}}": "下載已排隊:{{title}}",
|
||||
"Book not found in library": "在書庫中找不到書籍",
|
||||
"Unknown error": "未知錯誤",
|
||||
"Please log in to continue": "請登入以繼續"
|
||||
"Please log in to continue": "請登入以繼續",
|
||||
"Cloud File Transfers": "雲端檔案傳輸"
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ interface BookItemProps {
|
||||
bookSelected: boolean;
|
||||
transferProgress: number | null;
|
||||
handleBookUpload: (book: Book) => void;
|
||||
handleBookDownload: (book: Book) => void;
|
||||
handleBookDownload: (book: Book, options?: { redownload?: boolean; queued?: boolean }) => void;
|
||||
showBookDetailsModal: (book: Book) => void;
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ const BookItem: React.FC<BookItemProps> = ({
|
||||
if (!book.uploadedAt) {
|
||||
handleBookUpload(book);
|
||||
} else if (!book.downloadedAt) {
|
||||
handleBookDownload(book);
|
||||
handleBookDownload(book, { queued: true });
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -32,7 +32,10 @@ interface BookshelfProps {
|
||||
isSelectAll: boolean;
|
||||
isSelectNone: boolean;
|
||||
handleImportBooks: () => void;
|
||||
handleBookDownload: (book: Book) => Promise<boolean>;
|
||||
handleBookDownload: (
|
||||
book: Book,
|
||||
options?: { redownload?: boolean; queued?: boolean },
|
||||
) => Promise<boolean>;
|
||||
handleBookUpload: (book: Book, syncBooks?: boolean) => Promise<boolean>;
|
||||
handleBookDelete: (book: Book, syncBooks?: boolean) => Promise<boolean>;
|
||||
handleSetSelectMode: (selectMode: boolean) => void;
|
||||
|
||||
@@ -82,7 +82,10 @@ interface BookshelfItemProps {
|
||||
setLoading: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
toggleSelection: (hash: string) => void;
|
||||
handleGroupBooks: () => void;
|
||||
handleBookDownload: (book: Book) => Promise<boolean>;
|
||||
handleBookDownload: (
|
||||
book: Book,
|
||||
options?: { redownload?: boolean; queued?: boolean },
|
||||
) => Promise<boolean>;
|
||||
handleBookUpload: (book: Book, syncBooks?: boolean) => Promise<boolean>;
|
||||
handleBookDelete: (book: Book, syncBooks?: boolean) => Promise<boolean>;
|
||||
handleSetSelectMode: (selectMode: boolean) => void;
|
||||
@@ -131,7 +134,7 @@ const BookshelfItem: React.FC<BookshelfItemProps> = ({
|
||||
let available = false;
|
||||
const loadingTimeout = setTimeout(() => setLoading(true), 200);
|
||||
try {
|
||||
available = await handleBookDownload(book);
|
||||
available = await handleBookDownload(book, { queued: false });
|
||||
await updateBook(envConfig, book);
|
||||
} finally {
|
||||
if (loadingTimeout) clearTimeout(loadingTimeout);
|
||||
@@ -216,7 +219,7 @@ const BookshelfItem: React.FC<BookshelfItemProps> = ({
|
||||
const downloadBookMenuItem = await MenuItem.new({
|
||||
text: _('Download Book'),
|
||||
action: async () => {
|
||||
handleBookDownload(book);
|
||||
handleBookDownload(book, { queued: true });
|
||||
},
|
||||
});
|
||||
const uploadBookMenuItem = await MenuItem.new({
|
||||
|
||||
@@ -269,21 +269,23 @@ const SettingsMenu: React.FC<SettingsMenuProps> = ({ setIsDropdownOpen }) => {
|
||||
toggled={isAutoUpload}
|
||||
onClick={toggleAutoUploadBooks}
|
||||
/>
|
||||
<MenuItem
|
||||
label={_('File Transfers')}
|
||||
Icon={MdCloudSync}
|
||||
description={
|
||||
hasActiveTransfers
|
||||
? _('{{activeCount}} active, {{pendingCount}} pending', {
|
||||
activeCount: stats.active,
|
||||
pendingCount: stats.pending,
|
||||
})
|
||||
: stats.failed > 0
|
||||
? _('{{failedCount}} failed', { failedCount: stats.failed })
|
||||
: ''
|
||||
}
|
||||
onClick={openTransferQueue}
|
||||
/>
|
||||
{user && (
|
||||
<MenuItem
|
||||
label={_('Cloud File Transfers')}
|
||||
Icon={MdCloudSync}
|
||||
description={
|
||||
hasActiveTransfers
|
||||
? _('{{activeCount}} active, {{pendingCount}} pending', {
|
||||
activeCount: stats.active,
|
||||
pendingCount: stats.pending,
|
||||
})
|
||||
: stats.failed > 0
|
||||
? _('{{failedCount}} failed', { failedCount: stats.failed })
|
||||
: ''
|
||||
}
|
||||
onClick={openTransferQueue}
|
||||
/>
|
||||
)}
|
||||
{isTauriAppPlatform() && !appService?.isMobile && (
|
||||
<MenuItem
|
||||
label={_('Auto Import on File Open')}
|
||||
|
||||
@@ -236,6 +236,13 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
|
||||
if (book) {
|
||||
bookIds.push(book.hash);
|
||||
}
|
||||
if (user && book && !temp && !book.uploadedAt && settings.autoUpload) {
|
||||
setTimeout(() => {
|
||||
console.log('Queueing upload for book:', book.title);
|
||||
transferManager.queueUpload(book);
|
||||
// wait for the initialization of the transfer manager and opening of the book
|
||||
}, 3000);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('Failed to import book:', file, error);
|
||||
}
|
||||
@@ -494,7 +501,8 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
|
||||
);
|
||||
|
||||
const handleBookDownload = useCallback(
|
||||
async (book: Book, redownload = false, queued = false) => {
|
||||
async (book: Book, downloadOptions: { redownload?: boolean; queued?: boolean } = {}) => {
|
||||
const { redownload = false, queued = false } = downloadOptions;
|
||||
if (redownload || !queued) {
|
||||
try {
|
||||
await appService?.downloadBook(book, false, redownload, (progress) => {
|
||||
|
||||
@@ -25,13 +25,19 @@ export function NavigationCard({ item, baseURL, onClick, resolveURL }: Navigatio
|
||||
<div className='card-body flex justify-center p-4'>
|
||||
<div className='flex items-start gap-3'>
|
||||
<div className='min-w-0 flex-1'>
|
||||
<h3 className='line-clamp-1 text-sm font-semibold'>{item.title || _('Untitled')}</h3>
|
||||
<h3 title={item.title || _('Untitled')} className='line-clamp-1 text-sm font-semibold'>
|
||||
{item.title || _('Untitled')}
|
||||
</h3>
|
||||
{item.properties?.numberOfItems && (
|
||||
<p className='text-base-content/60 text-xs'>
|
||||
{_('{{count}} items', { count: item.properties.numberOfItems })}
|
||||
</p>
|
||||
)}
|
||||
{summary && <p className='text-base-content/70 mt-1 line-clamp-1 text-xs'>{summary}</p>}
|
||||
{summary && (
|
||||
<p title={summary} className='text-base-content/70 mt-1 line-clamp-1 text-xs'>
|
||||
{summary}
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
<div className='flex h-full items-center justify-center'>
|
||||
<IoChevronForward className='text-base-content/40 h-5 w-5 flex-shrink-0' />
|
||||
|
||||
@@ -7,6 +7,7 @@ import { useRouter, useSearchParams } from 'next/navigation';
|
||||
import { isOPDSCatalog, getPublication, getFeed, getOpenSearch } from 'foliate-js/opds.js';
|
||||
import { openUrl } from '@tauri-apps/plugin-opener';
|
||||
import { useEnv } from '@/context/EnvContext';
|
||||
import { useAuth } from '@/context/AuthContext';
|
||||
import { isWebAppPlatform } from '@/services/environment';
|
||||
import { downloadFile } from '@/libs/storage';
|
||||
import { Toast } from '@/components/Toast';
|
||||
@@ -14,6 +15,8 @@ import { useThemeStore } from '@/store/themeStore';
|
||||
import { useTranslation } from '@/hooks/useTranslation';
|
||||
import { useLibraryStore } from '@/store/libraryStore';
|
||||
import { useSettingsStore } from '@/store/settingsStore';
|
||||
import { transferManager } from '@/services/transferManager';
|
||||
import { useTransferQueue } from '@/hooks/useTransferQueue';
|
||||
import { useTheme } from '@/hooks/useTheme';
|
||||
import { useLibrary } from '@/hooks/useLibrary';
|
||||
import { eventDispatcher } from '@/utils/event';
|
||||
@@ -55,6 +58,7 @@ export default function BrowserPage() {
|
||||
const _ = useTranslation();
|
||||
const router = useRouter();
|
||||
const { appService } = useEnv();
|
||||
const { user } = useAuth();
|
||||
const { libraryLoaded } = useLibrary();
|
||||
const { safeAreaInsets, isRoundedWindow } = useThemeStore();
|
||||
const { settings } = useSettingsStore();
|
||||
@@ -84,6 +88,7 @@ export default function BrowserPage() {
|
||||
const searchTermRef = useRef('');
|
||||
|
||||
useTheme({ systemUIVisible: false });
|
||||
useTransferQueue(libraryLoaded);
|
||||
|
||||
useEffect(() => {
|
||||
startURLRef.current = state.startURL;
|
||||
@@ -441,6 +446,11 @@ export default function BrowserPage() {
|
||||
});
|
||||
const { library, setLibrary } = useLibraryStore.getState();
|
||||
const book = await appService.importBook(dstFilePath, library);
|
||||
if (user && book && !book.uploadedAt && settings.autoUpload) {
|
||||
setTimeout(() => {
|
||||
transferManager.queueUpload(book);
|
||||
}, 3000);
|
||||
}
|
||||
setLibrary(library);
|
||||
appService.saveLibraryBooks(library);
|
||||
return book;
|
||||
@@ -452,7 +462,8 @@ export default function BrowserPage() {
|
||||
}
|
||||
return;
|
||||
},
|
||||
[state.baseURL, appService, libraryLoaded],
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[user, state.baseURL, appService, libraryLoaded],
|
||||
);
|
||||
|
||||
const handleGenerateCachedImageUrl = useCallback(
|
||||
|
||||
@@ -19,7 +19,7 @@ interface BookDetailModalProps {
|
||||
book: Book;
|
||||
isOpen: boolean;
|
||||
onClose: () => void;
|
||||
handleBookDownload?: (book: Book, redownload?: boolean) => void;
|
||||
handleBookDownload?: (book: Book, options?: { redownload?: boolean; queued?: boolean }) => void;
|
||||
handleBookUpload?: (book: Book) => void;
|
||||
handleBookDelete?: (book: Book) => void;
|
||||
handleBookDeleteCloudBackup?: (book: Book) => void;
|
||||
@@ -158,7 +158,7 @@ const BookDetailModal: React.FC<BookDetailModalProps> = ({
|
||||
const handleRedownload = async () => {
|
||||
handleClose();
|
||||
if (handleBookDownload) {
|
||||
handleBookDownload(book, true);
|
||||
handleBookDownload(book, { redownload: true, queued: false });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user