diff --git a/apps/readest-app/i18next-scanner.config.js b/apps/readest-app/i18next-scanner.config.js index d6089f83..ba2b2e3c 100644 --- a/apps/readest-app/i18next-scanner.config.js +++ b/apps/readest-app/i18next-scanner.config.js @@ -16,9 +16,12 @@ module.exports = { 'it', 'el', 'ko', + 'uk', + 'pl', 'pt', 'ru', 'tr', + 'hi', 'id', 'vi', 'zh-CN', diff --git a/apps/readest-app/public/locales/de/translation.json b/apps/readest-app/public/locales/de/translation.json index b1e14245..1409ecae 100644 --- a/apps/readest-app/public/locales/de/translation.json +++ b/apps/readest-app/public/locales/de/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Horizontale Ränder (%)", "Apply to all books": "Auf alle Bücher anwenden", "Apply to this book": "Auf dieses Buch anwenden", - "Unable to fetch the translation. Try again later.": "Übersetzung konnte nicht abgerufen werden. Versuchen Sie es später erneut." + "Unable to fetch the translation. Try again later.": "Übersetzung konnte nicht abgerufen werden. Versuchen Sie es später erneut.", + "Update Now!": "Jetzt aktualisieren!", + "Update": "Aktualisieren" } diff --git a/apps/readest-app/public/locales/el/translation.json b/apps/readest-app/public/locales/el/translation.json index d521f218..366f0c3d 100644 --- a/apps/readest-app/public/locales/el/translation.json +++ b/apps/readest-app/public/locales/el/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Οριζόντια περιθώρια (%)", "Apply to all books": "Εφαρμογή σε όλα τα βιβλία", "Apply to this book": "Εφαρμογή σε αυτό το βιβλίο", - "Unable to fetch the translation. Try again later.": "Αδυναμία λήψης της μετάφρασης. Δοκιμάστε ξανά αργότερα." + "Unable to fetch the translation. Try again later.": "Αδυναμία λήψης της μετάφρασης. Δοκιμάστε ξανά αργότερα.", + "Update Now!": "Ενημέρωση τώρα!", + "Update": "Ενημέρωση" } diff --git a/apps/readest-app/public/locales/es/translation.json b/apps/readest-app/public/locales/es/translation.json index c240ad6a..0fb72532 100644 --- a/apps/readest-app/public/locales/es/translation.json +++ b/apps/readest-app/public/locales/es/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Márgenes horizontales (%)", "Apply to all books": "Aplicar a todos los libros", "Apply to this book": "Aplicar a este libro", - "Unable to fetch the translation. Try again later.": "No se puede obtener la traducción. Inténtalo de nuevo más tarde." + "Unable to fetch the translation. Try again later.": "No se puede obtener la traducción. Inténtalo de nuevo más tarde.", + "Update Now!": "¡Actualizar ahora!", + "Update": "Actualizar" } diff --git a/apps/readest-app/public/locales/fr/translation.json b/apps/readest-app/public/locales/fr/translation.json index cf1f67b4..282aba16 100644 --- a/apps/readest-app/public/locales/fr/translation.json +++ b/apps/readest-app/public/locales/fr/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Marges horizontales (%)", "Apply to all books": "Appliquer à tous les livres", "Apply to this book": "Appliquer à ce livre", - "Unable to fetch the translation. Try again later.": "Impossible de récupérer la traduction. Réessayez plus tard." + "Unable to fetch the translation. Try again later.": "Impossible de récupérer la traduction. Réessayez plus tard.", + "Update Now!": "Mettre à jour maintenant !", + "Update": "Mettre à jour" } diff --git a/apps/readest-app/public/locales/hi/translation.json b/apps/readest-app/public/locales/hi/translation.json new file mode 100644 index 00000000..6fb2839e --- /dev/null +++ b/apps/readest-app/public/locales/hi/translation.json @@ -0,0 +1,139 @@ +{ + "(detected)": "(पता लगाया)", + "About Readest": "Readest के बारे में", + "Add your notes here...": "अपनी टिप्पणियां यहां जोड़ें...", + "Animation": "एनीमेशन", + "Annotate": "टिप्पणी", + "Apply": "लागू करें", + "Are you sure to delete the selected books?": "क्या आप चयनित पुस्तकों को हटाना चाहते हैं?", + "Auto Mode": "स्वचालित मोड", + "Behavior": "व्यवहार", + "Book": "पुस्तक", + "Book Cover": "पुस्तक का कवर", + "Bookmark": "बुकमार्क", + "Cancel": "रद्द करें", + "Chapter": "अध्याय", + "Cherry": "चेरी", + "Color": "रंग", + "Confirm": "पुष्टि करें", + "Confirm Deletion": "हटाने की पुष्टि करें", + "Copied to notebook": "नोटबुक में कॉपी किया गया", + "Copy": "कॉपी", + "Custom CSS": "कस्टम CSS", + "Dark Mode": "डार्क मोड", + "Default": "डिफ़ॉल्ट", + "Default Font": "डिफ़ॉल्ट फ़ॉन्ट", + "Default Font Size": "डिफ़ॉल्ट फ़ॉन्ट साइज़", + "Delete": "हटाएं", + "Delete Highlight": "हाइलाइट हटाएं", + "Dictionary": "शब्दकोश", + "Disable Click-to-Flip": "क्लिक-टू-फ्लिप अक्षम करें", + "Download Readest": "Readest डाउनलोड करें", + "Edit": "संपादित करें", + "Enter your custom CSS here...": "अपना कस्टम CSS यहां दर्ज करें...", + "Excerpts": "अंश", + "Failed to import book(s): {{filenames}}": "पुस्तक(ें) आयात करने में विफल: {{filenames}}", + "Fast": "तेज़", + "Font": "फ़ॉन्ट", + "Font & Layout": "फ़ॉन्ट और लेआउट", + "Font Face": "फ़ॉन्ट फेस", + "Font Family": "फ़ॉन्ट परिवार", + "Font Size": "फ़ॉन्ट साइज़", + "From Local File": "स्थानीय फ़ाइल से", + "Full Justification": "पूर्ण जस्टिफिकेशन", + "Global Settings": "वैश्विक सेटिंग्स", + "Go Back": "वापस जाएं", + "Go Forward": "आगे जाएं", + "Go Left": "बाएं जाएं", + "Go Right": "दाएं जाएं", + "Grass": "घास", + "Gray": "ग्रे", + "Gruvbox": "ग्रूवबॉक्स", + "Highlight": "हाइलाइट", + "Horizontal Direction": "क्षैतिज दिशा", + "Hyphenation": "हाइफ़नेशन", + "Identifier:": "पहचानकर्ता:", + "Import Books": "पुस्तकें आयात करें", + "Invert Colors in Dark Mode": "डार्क मोड में रंग उलटें", + "Language:": "भाषा:", + "Layout": "लेआउट", + "Light Mode": "लाइट मोड", + "Line Height": "लाइन हाइट", + "Loading...": "लोड हो रहा है...", + "Loc. {{currentPage}} / {{totalPage}}": "स्थान {{currentPage}} / {{totalPage}}", + "Logged in": "लॉग इन किया", + "Logged in as {{userDisplayName}}": "{{userDisplayName}} के रूप में लॉग इन किया", + "Match Case": "केस मैच करें", + "Match Diacritics": "डायाक्रिटिक्स मैच करें", + "Match Whole Words": "पूरे शब्द मैच करें", + "Maximum Block Size": "अधिकतम ब्लॉक साइज़", + "Maximum Inline Size": "अधिकतम इनलाइन साइज़", + "Maximum Number of Columns": "कॉलम की अधिकतम संख्या", + "Minimum Font Size": "न्यूनतम फ़ॉन्ट साइज़", + "Misc": "विविध", + "Monospace Font": "मोनोस्पेस फ़ॉन्ट", + "More Info": "अधिक जानकारी", + "Nord": "नॉर्ड", + "Notebook": "नोटबुक", + "Notes": "नोट्स", + "Open": "खोलें", + "Open Book": "पुस्तक खोलें", + "Original Text": "मूल पाठ", + "Page": "पृष्ठ", + "Paging Animation": "पेजिंग एनीमेशन", + "Paragraph": "पैराग्राफ", + "Parallel Read": "समानांतर पढ़ें", + "Published:": "प्रकाशित:", + "Publisher:": "प्रकाशक:", + "Reading progress synced": "पढ़ने की प्रगति सिंक की गई", + "Reload Page": "पृष्ठ रीलोड करें", + "Reveal in File Explorer": "फ़ाइल एक्सप्लोरर में दिखाएं", + "Reveal in Finder": "फाइंडर में दिखाएं", + "Reveal in Folder": "फ़ोल्डर में दिखाएं", + "Sans-Serif Font": "सैन्स-सेरिफ फ़ॉन्ट", + "Save": "सहेजें", + "Scrolled Mode": "स्क्रॉल मोड", + "Search": "खोजें", + "Search books...": "पुस्तकें खोजें...", + "Search...": "खोजें...", + "Select Book": "पुस्तक चुनें", + "Select books": "पुस्तकें चुनें", + "Select multiple books": "कई पुस्तकें चुनें", + "Sepia": "सेपिया", + "Serif Font": "सेरिफ फ़ॉन्ट", + "Show Book Details": "पुस्तक विवरण दिखाएं", + "Sidebar": "साइडबार", + "Sign In": "साइन इन करें", + "Sign Out": "साइन आउट करें", + "Sky": "आकाश", + "Slow": "धीमा", + "Solarized": "सोलराइज्ड", + "Speak": "बोलें", + "Subjects:": "विषय:", + "System Fonts": "सिस्टम फ़ॉन्ट्स", + "Table of Contents": "विषय-सूची", + "TTS not supported in this device": "यह डिवाइस TTS का समर्थन नहीं करता", + "Theme Color": "थीम रंग", + "Theme Mode": "थीम मोड", + "Translate": "अनुवाद करें", + "Translated Text": "अनुवादित पाठ", + "Unknown": "अज्ञात", + "Untitled": "शीर्षकहीन", + "Updated:": "अपडेट किया गया:", + "User avatar": "उपयोगकर्ता अवतार", + "Version {{version}}": "संस्करण {{version}}", + "Vertical Direction": "ऊर्ध्वाधर दिशा", + "Welcome to your library. You can import your books here and read them anytime.": "आपकी लाइब्रेरी में आपका स्वागत है। आप यहां अपनी पुस्तकें आयात कर सकते हैं और कभी भी पढ़ सकते हैं।", + "Wikipedia": "विकिपीडिया", + "Writing Mode": "लेखन मोड", + "Your Library": "आपकी लाइब्रेरी", + "TTS not supported for PDF": "PDF के लिए TTS समर्थित नहीं है", + "Override Book Font": "पुस्तक फ़ॉन्ट ओवरराइड करें", + "Vertical Margins (px)": "ऊर्ध्वाधर मार्जिन (px)", + "Horizontal Margins (%)": "क्षैतिज मार्जिन (%)", + "Apply to all books": "सभी पुस्तकों पर लागू करें", + "Apply to this book": "इस पुस्तक पर लागू करें", + "Unable to fetch the translation. Try again later.": "अनुवाद प्राप्त करने में असमर्थ। बाद में पुनः प्रयास करें।", + "Update Now!": "अभी अपडेट करें!", + "Update": "अपडेट करें" +} diff --git a/apps/readest-app/public/locales/id/translation.json b/apps/readest-app/public/locales/id/translation.json index da1208e4..e70da410 100644 --- a/apps/readest-app/public/locales/id/translation.json +++ b/apps/readest-app/public/locales/id/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Margin Horizontal (%)", "Apply to all books": "Terapkan ke semua buku", "Apply to this book": "Terapkan ke buku ini", - "Unable to fetch the translation. Try again later.": "Tidak dapat mengambil terjemahan. Coba lagi nanti." + "Unable to fetch the translation. Try again later.": "Tidak dapat mengambil terjemahan. Coba lagi nanti.", + "Update Now!": "Perbarui Sekarang!", + "Update": "Perbarui" } diff --git a/apps/readest-app/public/locales/it/translation.json b/apps/readest-app/public/locales/it/translation.json index 95ce0bc2..b4461c89 100644 --- a/apps/readest-app/public/locales/it/translation.json +++ b/apps/readest-app/public/locales/it/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Margini orizzontali (%)", "Apply to all books": "Applica a tutti i libri", "Apply to this book": "Applica a questo libro", - "Unable to fetch the translation. Try again later.": "Impossibile recuperare la traduzione. Riprova più tardi." + "Unable to fetch the translation. Try again later.": "Impossibile recuperare la traduzione. Riprova più tardi.", + "Update Now!": "Aggiorna ora!", + "Update": "Aggiorna" } diff --git a/apps/readest-app/public/locales/ja/translation.json b/apps/readest-app/public/locales/ja/translation.json index f5976402..99425850 100644 --- a/apps/readest-app/public/locales/ja/translation.json +++ b/apps/readest-app/public/locales/ja/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "横マージン(%)", "Apply to all books": "すべての書籍に適用", "Apply to this book": "この書籍に適用", - "Unable to fetch the translation. Try again later.": "翻訳を取得できません。後で再試行してください。" + "Unable to fetch the translation. Try again later.": "翻訳を取得できません。後で再試行してください。", + "Update Now!": "今すぐ更新!", + "Update": "更新" } diff --git a/apps/readest-app/public/locales/ko/translation.json b/apps/readest-app/public/locales/ko/translation.json index cc90a38b..f686edf2 100644 --- a/apps/readest-app/public/locales/ko/translation.json +++ b/apps/readest-app/public/locales/ko/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "수평 여백 (%)", "Apply to all books": "모든 책에 적용", "Apply to this book": "이 책에 적용", - "Unable to fetch the translation. Try again later.": "번역을 가져올 수 없습니다. 나중에 다시 시도하세요." + "Unable to fetch the translation. Try again later.": "번역을 가져올 수 없습니다. 나중에 다시 시도하세요.", + "Update Now!": "지금 업데이트!", + "Update": "업데이트" } diff --git a/apps/readest-app/public/locales/pl/translation.json b/apps/readest-app/public/locales/pl/translation.json new file mode 100644 index 00000000..59caa096 --- /dev/null +++ b/apps/readest-app/public/locales/pl/translation.json @@ -0,0 +1,139 @@ +{ + "(detected)": "(wykryto)", + "About Readest": "O Readest", + "Add your notes here...": "Dodaj swoje notatki tutaj...", + "Animation": "Animacja", + "Annotate": "Adnotacja", + "Apply": "Zastosuj", + "Are you sure to delete the selected books?": "Czy na pewno chcesz usunąć wybrane książki?", + "Auto Mode": "Tryb automatyczny", + "Behavior": "Zachowanie", + "Book": "Książka", + "Book Cover": "Okładka książki", + "Bookmark": "Zakładka", + "Cancel": "Anuluj", + "Chapter": "Rozdział", + "Cherry": "Wiśniowy", + "Color": "Kolor", + "Confirm": "Potwierdź", + "Confirm Deletion": "Potwierdź usunięcie", + "Copied to notebook": "Skopiowano do notatnika", + "Copy": "Kopiuj", + "Custom CSS": "Własny CSS", + "Dark Mode": "Tryb ciemny", + "Default": "Domyślne", + "Default Font": "Domyślna czcionka", + "Default Font Size": "Domyślny rozmiar czcionki", + "Delete": "Usuń", + "Delete Highlight": "Usuń zaznaczenie", + "Dictionary": "Słownik", + "Disable Click-to-Flip": "Wyłącz przewracanie kliknięciem", + "Download Readest": "Pobierz Readest", + "Edit": "Edytuj", + "Enter your custom CSS here...": "Wprowadź własny CSS tutaj...", + "Excerpts": "Fragmenty", + "Failed to import book(s): {{filenames}}": "Nie udało się zaimportować książek: {{filenames}}", + "Fast": "Szybko", + "Font": "Czcionka", + "Font & Layout": "Czcionka i układ", + "Font Face": "Krój czcionki", + "Font Family": "Rodzina czcionek", + "Font Size": "Rozmiar czcionki", + "From Local File": "Z pliku lokalnego", + "Full Justification": "Pełne justowanie", + "Global Settings": "Ustawienia globalne", + "Go Back": "Wstecz", + "Go Forward": "Dalej", + "Go Left": "W lewo", + "Go Right": "W prawo", + "Grass": "Trawiasty", + "Gray": "Szary", + "Gruvbox": "Ciepły pomarańczowy", + "Highlight": "Zaznacz", + "Horizontal Direction": "Kierunek poziomy", + "Hyphenation": "Dzielenie wyrazów", + "Identifier:": "Identyfikator:", + "Import Books": "Importuj książki", + "Invert Colors in Dark Mode": "Odwróć kolory w trybie ciemnym", + "Language:": "Język:", + "Layout": "Układ", + "Light Mode": "Tryb jasny", + "Line Height": "Wysokość linii", + "Loading...": "Ładowanie...", + "Loc. {{currentPage}} / {{totalPage}}": "Poz. {{currentPage}} / {{totalPage}}", + "Logged in": "Zalogowano", + "Logged in as {{userDisplayName}}": "Zalogowano jako {{userDisplayName}}", + "Match Case": "Uwzględnij wielkość liter", + "Match Diacritics": "Uwzględnij znaki diakrytyczne", + "Match Whole Words": "Uwzględnij całe słowa", + "Maximum Block Size": "Maksymalny rozmiar bloku", + "Maximum Inline Size": "Maksymalny rozmiar linii", + "Maximum Number of Columns": "Maksymalna liczba kolumn", + "Minimum Font Size": "Minimalny rozmiar czcionki", + "Misc": "Różne", + "Monospace Font": "Czcionka o stałej szerokości", + "More Info": "Więcej informacji", + "Nord": "Północny", + "Notebook": "Notatnik", + "Notes": "Notatki", + "Open": "Otwórz", + "Open Book": "Otwórz książkę", + "Original Text": "Tekst oryginalny", + "Page": "Strona", + "Paging Animation": "Animacja przewracania stron", + "Paragraph": "Akapit", + "Parallel Read": "Czytanie równoległe", + "Published:": "Opublikowano:", + "Publisher:": "Wydawca:", + "Reading progress synced": "Zsynchronizowano postęp czytania", + "Reload Page": "Odśwież stronę", + "Reveal in File Explorer": "Pokaż w Eksploratorze plików", + "Reveal in Finder": "Pokaż w Finderze", + "Reveal in Folder": "Pokaż w folderze", + "Sans-Serif Font": "Czcionka bezszeryfowa", + "Save": "Zapisz", + "Scrolled Mode": "Tryb przewijania", + "Search": "Szukaj", + "Search books...": "Szukaj książek...", + "Search...": "Szukaj...", + "Select Book": "Wybierz książkę", + "Select books": "Wybierz książki", + "Select multiple books": "Wybierz wiele książek", + "Sepia": "Sepia", + "Serif Font": "Czcionka szeryfowa", + "Show Book Details": "Pokaż szczegóły książki", + "Sidebar": "Panel boczny", + "Sign In": "Zaloguj się", + "Sign Out": "Wyloguj się", + "Sky": "Niebieski", + "Slow": "Wolno", + "Solarized": "Słoneczny", + "Speak": "Czytaj", + "Subjects:": "Tematy:", + "System Fonts": "Czcionki systemowe", + "Table of Contents": "Spis treści", + "TTS not supported in this device": "TTS nie jest obsługiwane na tym urządzeniu", + "Theme Color": "Kolor motywu", + "Theme Mode": "Tryb motywu", + "Translate": "Tłumacz", + "Translated Text": "Przetłumaczony tekst", + "Unknown": "Nieznane", + "Untitled": "Bez tytułu", + "Updated:": "Zaktualizowano:", + "User avatar": "Awatar użytkownika", + "Version {{version}}": "Wersja {{version}}", + "Vertical Direction": "Kierunek pionowy", + "Welcome to your library. You can import your books here and read them anytime.": "Witaj w swojej bibliotece. Możesz tutaj zaimportować swoje książki i czytać je w dowolnym momencie.", + "Wikipedia": "Wikipedia", + "Writing Mode": "Tryb pisania", + "Your Library": "Twoja biblioteka", + "TTS not supported for PDF": "TTS nie jest obsługiwane dla plików PDF", + "Override Book Font": "Nadpisz czcionkę książki", + "Vertical Margins (px)": "Marginesy pionowe (px)", + "Horizontal Margins (%)": "Marginesy poziome (%)", + "Apply to all books": "Zastosuj do wszystkich książek", + "Apply to this book": "Zastosuj do tej książki", + "Unable to fetch the translation. Try again later.": "Nie udało się pobrać tłumaczenia. Spróbuj ponownie później.", + "Update Now!": "Zaktualizuj teraz!", + "Update": "Zaktualizuj" +} diff --git a/apps/readest-app/public/locales/pt/translation.json b/apps/readest-app/public/locales/pt/translation.json index a7285d86..28a68158 100644 --- a/apps/readest-app/public/locales/pt/translation.json +++ b/apps/readest-app/public/locales/pt/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Margens Horizontais (%)", "Apply to all books": "Aplicar a todos os livros", "Apply to this book": "Aplicar a este livro", - "Unable to fetch the translation. Try again later.": "Não foi possível buscar a tradução. Tente novamente mais tarde." + "Unable to fetch the translation. Try again later.": "Não foi possível buscar a tradução. Tente novamente mais tarde.", + "Update Now!": "Atualizar Agora!", + "Update": "Atualizar" } diff --git a/apps/readest-app/public/locales/ru/translation.json b/apps/readest-app/public/locales/ru/translation.json index c8f0438d..41352024 100644 --- a/apps/readest-app/public/locales/ru/translation.json +++ b/apps/readest-app/public/locales/ru/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Горизонтальные поля (%)", "Apply to all books": "Применить ко всем книгам", "Apply to this book": "Применить к этой книге", - "Unable to fetch the translation. Try again later.": "Не удалось получить перевод. Попробуйте позже." + "Unable to fetch the translation. Try again later.": "Не удалось получить перевод. Попробуйте позже.", + "Update Now!": "Обновить сейчас!", + "Update": "Обновить" } diff --git a/apps/readest-app/public/locales/tr/translation.json b/apps/readest-app/public/locales/tr/translation.json index bdef43bc..6dba469f 100644 --- a/apps/readest-app/public/locales/tr/translation.json +++ b/apps/readest-app/public/locales/tr/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Yatay Kenar Boşlukları (%)", "Apply to all books": "Tüm kitaplara uygula", "Apply to this book": "Bu kitaba uygula", - "Unable to fetch the translation. Try again later.": "Çeviri alınamıyor. Daha sonra tekrar deneyin." + "Unable to fetch the translation. Try again later.": "Çeviri alınamıyor. Daha sonra tekrar deneyin.", + "Update Now!": "Şimdi Güncelle!", + "Update": "Güncelle" } diff --git a/apps/readest-app/public/locales/uk/translation.json b/apps/readest-app/public/locales/uk/translation.json new file mode 100644 index 00000000..36217d4d --- /dev/null +++ b/apps/readest-app/public/locales/uk/translation.json @@ -0,0 +1,139 @@ +{ + "(detected)": "(виявлено)", + "About Readest": "Про Readest", + "Add your notes here...": "Додайте свої нотатки тут...", + "Animation": "Анімація", + "Annotate": "Анотація", + "Apply": "Застосувати", + "Are you sure to delete the selected books?": "Ви впевнені, що хочете видалити вибрані книги?", + "Auto Mode": "Автоматичний режим", + "Behavior": "Поведінка", + "Book": "Книга", + "Book Cover": "Обкладинка книги", + "Bookmark": "Закладка", + "Cancel": "Скасувати", + "Chapter": "Розділ", + "Cherry": "Вишневий", + "Color": "Колір", + "Confirm": "Підтвердити", + "Confirm Deletion": "Підтвердити видалення", + "Copied to notebook": "Скопійовано до нотатника", + "Copy": "Копіювати", + "Custom CSS": "Користувацький CSS", + "Dark Mode": "Темний режим", + "Default": "За замовчуванням", + "Default Font": "Шрифт за замовчуванням", + "Default Font Size": "Розмір шрифту за замовчуванням", + "Delete": "Видалити", + "Delete Highlight": "Видалити виділення", + "Dictionary": "Словник", + "Disable Click-to-Flip": "Вимкнути гортання кліком", + "Download Readest": "Завантажити Readest", + "Edit": "Редагувати", + "Enter your custom CSS here...": "Введіть ваш користувацький CSS тут...", + "Excerpts": "Уривки", + "Failed to import book(s): {{filenames}}": "Не вдалося імпортувати книгу(и): {{filenames}}", + "Fast": "Швидко", + "Font": "Шрифт", + "Font & Layout": "Шрифт та макет", + "Font Face": "Накреслення шрифту", + "Font Family": "Сімейство шрифтів", + "Font Size": "Розмір шрифту", + "From Local File": "З локального файлу", + "Full Justification": "Повне вирівнювання", + "Global Settings": "Глобальні налаштування", + "Go Back": "Назад", + "Go Forward": "Вперед", + "Go Left": "Вліво", + "Go Right": "Вправо", + "Grass": "Трав'яний", + "Gray": "Сірий", + "Gruvbox": "Теплий помаранчевий", + "Highlight": "Виділення", + "Horizontal Direction": "Горизонтальний напрямок", + "Hyphenation": "Перенесення слів", + "Identifier:": "Ідентифікатор:", + "Import Books": "Імпортувати книги", + "Invert Colors in Dark Mode": "Інвертувати кольори в темному режимі", + "Language:": "Мова:", + "Layout": "Макет", + "Light Mode": "Світлий режим", + "Line Height": "Висота рядка", + "Loading...": "Завантаження...", + "Loc. {{currentPage}} / {{totalPage}}": "Поз. {{currentPage}} / {{totalPage}}", + "Logged in": "Увійшли", + "Logged in as {{userDisplayName}}": "Увійшли як {{userDisplayName}}", + "Match Case": "Враховувати регістр", + "Match Diacritics": "Враховувати діакритичні знаки", + "Match Whole Words": "Шукати цілі слова", + "Maximum Block Size": "Максимальний розмір блоку", + "Maximum Inline Size": "Максимальний розмір рядка", + "Maximum Number of Columns": "Максимальна кількість колонок", + "Minimum Font Size": "Мінімальний розмір шрифту", + "Misc": "Різне", + "Monospace Font": "Моноширинний шрифт", + "More Info": "Більше інформації", + "Nord": "Північний", + "Notebook": "Нотатник", + "Notes": "Нотатки", + "Open": "Відкрити", + "Open Book": "Відкрити книгу", + "Original Text": "Оригінальний текст", + "Page": "Сторінка", + "Paging Animation": "Анімація гортання", + "Paragraph": "Абзац", + "Parallel Read": "Паралельне читання", + "Published:": "Опубліковано:", + "Publisher:": "Видавець:", + "Reading progress synced": "Прогрес читання синхронізовано", + "Reload Page": "Перезавантажити сторінку", + "Reveal in File Explorer": "Показати у провіднику", + "Reveal in Finder": "Показати у Finder", + "Reveal in Folder": "Показати в папці", + "Sans-Serif Font": "Шрифт без засічок", + "Save": "Зберегти", + "Scrolled Mode": "Режим прокрутки", + "Search": "Пошук", + "Search books...": "Шукати книги...", + "Search...": "Пошук...", + "Select Book": "Вибрати книгу", + "Select books": "Вибрати книги", + "Select multiple books": "Вибрати кілька книг", + "Sepia": "Сепія", + "Serif Font": "Шрифт із засічками", + "Show Book Details": "Показати деталі книги", + "Sidebar": "Бічна панель", + "Sign In": "Увійти", + "Sign Out": "Вийти", + "Sky": "Небесний", + "Slow": "Повільно", + "Solarized": "Сонячний", + "Speak": "Озвучити", + "Subjects:": "Теми:", + "System Fonts": "Системні шрифти", + "Table of Contents": "Зміст", + "TTS not supported in this device": "TTS не підтримується на цьому пристрої", + "Theme Color": "Колір теми", + "Theme Mode": "Режим теми", + "Translate": "Перекласти", + "Translated Text": "Перекладений текст", + "Unknown": "Невідомо", + "Untitled": "Без назви", + "Updated:": "Оновлено:", + "User avatar": "Аватар користувача", + "Version {{version}}": "Версія {{version}}", + "Vertical Direction": "Вертикальний напрямок", + "Welcome to your library. You can import your books here and read them anytime.": "Ласкаво просимо до вашої бібліотеки. Ви можете імпортувати сюди свої книги та читати їх будь-коли.", + "Wikipedia": "Вікіпедія", + "Writing Mode": "Режим письма", + "Your Library": "Ваша бібліотека", + "TTS not supported for PDF": "TTS не підтримується для PDF", + "Override Book Font": "Перевизначити шрифт книги", + "Vertical Margins (px)": "Вертикальні відступи (px)", + "Horizontal Margins (%)": "Горизонтальні відступи (%)", + "Apply to all books": "Застосувати до всіх книг", + "Apply to this book": "Застосувати до цієї книги", + "Unable to fetch the translation. Try again later.": "Не вдалося отримати переклад. Спробуйте пізніше.", + "Update Now!": "Оновити зараз!", + "Update": "Оновити" +} diff --git a/apps/readest-app/public/locales/vi/translation.json b/apps/readest-app/public/locales/vi/translation.json index 6e21fe26..3a630eff 100644 --- a/apps/readest-app/public/locales/vi/translation.json +++ b/apps/readest-app/public/locales/vi/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "Lề ngang (%)", "Apply to all books": "Áp dụng cho tất cả sách", "Apply to this book": "Áp dụng cho sách này", - "Unable to fetch the translation. Try again later.": "Không thể tải dịch vụ. Vui lòng thử lại sau." + "Unable to fetch the translation. Try again later.": "Không thể tải dịch vụ. Vui lòng thử lại sau.", + "Update Now!": "Cập nhật ngay!", + "Update": "Cập nhật" } diff --git a/apps/readest-app/public/locales/zh-CN/translation.json b/apps/readest-app/public/locales/zh-CN/translation.json index 20377b86..b6cfb3ec 100644 --- a/apps/readest-app/public/locales/zh-CN/translation.json +++ b/apps/readest-app/public/locales/zh-CN/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "水平边距(%)", "Apply to all books": "应用于所有书籍", "Apply to this book": "应用于此书籍", - "Unable to fetch the translation. Try again later.": "无法获取翻译,请稍后重试。" + "Unable to fetch the translation. Try again later.": "无法获取翻译,请稍后重试。", + "Update Now!": "立即更新!", + "Update": "更新" } diff --git a/apps/readest-app/public/locales/zh-TW/translation.json b/apps/readest-app/public/locales/zh-TW/translation.json index 0d943f78..8cf0c0c3 100644 --- a/apps/readest-app/public/locales/zh-TW/translation.json +++ b/apps/readest-app/public/locales/zh-TW/translation.json @@ -133,5 +133,7 @@ "Horizontal Margins (%)": "水平邊距(%)", "Apply to all books": "應用於所有書籍", "Apply to this book": "應用於此書籍", - "Unable to fetch the translation. Try again later.": "無法獲取翻譯,請稍後再試。" + "Unable to fetch the translation. Try again later.": "無法獲取翻譯,請稍後再試。", + "Update Now!": "立即更新!", + "Update": "更新" } diff --git a/apps/readest-app/src/app/library/page.tsx b/apps/readest-app/src/app/library/page.tsx index f4af003e..d8270b76 100644 --- a/apps/readest-app/src/app/library/page.tsx +++ b/apps/readest-app/src/app/library/page.tsx @@ -51,10 +51,11 @@ const LibraryPage = () => { useEffect(() => { const doAppUpdates = async () => { if (hasUpdater()) { - await checkForAppUpdates(); + await checkForAppUpdates(_); } }; doAppUpdates(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const processOpenWithFiles = React.useCallback( diff --git a/apps/readest-app/src/app/reader/page.tsx b/apps/readest-app/src/app/reader/page.tsx index 176eea72..89e4fb79 100644 --- a/apps/readest-app/src/app/reader/page.tsx +++ b/apps/readest-app/src/app/reader/page.tsx @@ -4,17 +4,20 @@ import { useEffect } from 'react'; import { useTheme } from '@/hooks/useTheme'; import { hasUpdater } from '@/services/environment'; import { checkForAppUpdates } from '@/helpers/updater'; +import { useTranslation } from '@/hooks/useTranslation'; import Reader from './components/Reader'; export default function Page() { + const _ = useTranslation(); useTheme(); useEffect(() => { const doAppUpdates = async () => { if (hasUpdater()) { - await checkForAppUpdates(); + await checkForAppUpdates(_); } }; doAppUpdates(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return ; diff --git a/apps/readest-app/src/helpers/updater.ts b/apps/readest-app/src/helpers/updater.ts index e0f4fa6a..1497cabb 100644 --- a/apps/readest-app/src/helpers/updater.ts +++ b/apps/readest-app/src/helpers/updater.ts @@ -2,10 +2,13 @@ import { check } from '@tauri-apps/plugin-updater'; import { ask } from '@tauri-apps/plugin-dialog'; import { relaunch } from '@tauri-apps/plugin-process'; import { CHECK_UPDATE_INTERVAL_SEC } from '@/services/constants'; +import { TranslationFunc } from '@/hooks/useTranslation'; const LAST_CHECK_KEY = 'lastAppUpdateCheck'; -export const checkForAppUpdates = async () => { +export const checkForAppUpdates = async (_: TranslationFunc) => { + if (process.env['NEXT_PUBLIC_DISABLE_UPDATER']) return; + const lastCheck = localStorage.getItem(LAST_CHECK_KEY); const now = Date.now(); if (lastCheck && now - parseInt(lastCheck, 10) < CHECK_UPDATE_INTERVAL_SEC * 1000) return; @@ -20,10 +23,10 @@ export const checkForAppUpdates = async () => { Release notes: ${update.body} `, { - title: 'Update Now!', + title: _('Update Now!'), kind: 'info', - okLabel: 'Update', - cancelLabel: 'Cancel', + okLabel: _('Update'), + cancelLabel: _('Cancel'), }, ); @@ -31,6 +34,7 @@ export const checkForAppUpdates = async () => { console.log(`found update ${update.version} from ${update.date} with notes ${update.body}`); let downloaded = 0; let contentLength = 0; + let lastLogged = 0; await update.downloadAndInstall((event) => { switch (event.event) { case 'Started': @@ -39,7 +43,10 @@ export const checkForAppUpdates = async () => { break; case 'Progress': downloaded += event.data.chunkLength; - console.log(`downloaded ${downloaded} from ${contentLength}`); + if (downloaded - lastLogged >= 1 * 1024 * 1024) { + console.log(`downloaded ${downloaded} bytes from ${contentLength}`); + lastLogged = downloaded; + } break; case 'Finished': console.log('download finished'); diff --git a/apps/readest-app/src/hooks/useTranslation.ts b/apps/readest-app/src/hooks/useTranslation.ts index 4441ba3e..55fae10c 100644 --- a/apps/readest-app/src/hooks/useTranslation.ts +++ b/apps/readest-app/src/hooks/useTranslation.ts @@ -1,6 +1,8 @@ import '@/i18n/i18n'; import { useTranslation as _useTranslation } from 'react-i18next'; +export type TranslationFunc = (key: string, options?: Record) => string; + export const useTranslation = (namespace: string = 'translation') => { const { t } = _useTranslation(namespace);