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);