feat: add keyboard shortcuts help dialog (#3653)
Add a keyboard shortcuts help dialog toggled with '?' that displays all shortcuts grouped by section with platform-appropriate key rendering. Restructure DEFAULT_SHORTCUTS to include i18n descriptions and section metadata. Translate 37 new keys across 29 locales. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -183,7 +183,6 @@
|
||||
"RTL Direction": "الاتجاه من اليمين إلى اليسار",
|
||||
"Maximum Column Height": "الارتفاع الأقصى للعمود",
|
||||
"Maximum Column Width": "العرض الأقصى للعمود",
|
||||
"Continuous Scroll": "التمرير المستمر",
|
||||
"Fullscreen": "ملء الشاشة",
|
||||
"No supported files found. Supported formats: {{formats}}": "لم يتم العثور على ملفات مدعومة. الصيغ المدعومة: {{formats}}",
|
||||
"Drop to Import Books": "قم بالسحب والإسقاط لاستيراد الكتب",
|
||||
@@ -1154,5 +1153,42 @@
|
||||
"{{count}} books refreshed_many": "تم تحديث {{count}} كتابًا",
|
||||
"{{count}} books refreshed_other": "تم تحديث {{count}} كتاب",
|
||||
"Failed to refresh metadata": "فشل تحديث البيانات الوصفية",
|
||||
"Refresh Metadata": "تحديث البيانات الوصفية"
|
||||
"Refresh Metadata": "تحديث البيانات الوصفية",
|
||||
"Keyboard Shortcuts": "اختصارات لوحة المفاتيح",
|
||||
"View all keyboard shortcuts": "عرض جميع اختصارات لوحة المفاتيح",
|
||||
"Switch Sidebar Tab": "تبديل علامة تبويب الشريط الجانبي",
|
||||
"Toggle Notebook": "إظهار/إخفاء دفتر الملاحظات",
|
||||
"Search in Book": "البحث في الكتاب",
|
||||
"Toggle Scroll Mode": "تبديل وضع التمرير",
|
||||
"Toggle Select Mode": "تبديل وضع التحديد",
|
||||
"Toggle Bookmark": "تبديل الإشارة المرجعية",
|
||||
"Toggle Text to Speech": "تبديل تحويل النص إلى كلام",
|
||||
"Play / Pause TTS": "تشغيل / إيقاف القراءة الصوتية",
|
||||
"Toggle Paragraph Mode": "تبديل وضع الفقرة",
|
||||
"Highlight Selection": "تمييز التحديد",
|
||||
"Underline Selection": "وضع خط تحت التحديد",
|
||||
"Annotate Selection": "إضافة تعليق على التحديد",
|
||||
"Search Selection": "البحث عن التحديد",
|
||||
"Copy Selection": "نسخ التحديد",
|
||||
"Translate Selection": "ترجمة التحديد",
|
||||
"Dictionary Lookup": "البحث في القاموس",
|
||||
"Wikipedia Lookup": "البحث في ويكيبيديا",
|
||||
"Read Aloud Selection": "قراءة التحديد بصوت عالٍ",
|
||||
"Proofread Selection": "تدقيق التحديد",
|
||||
"Open Settings": "فتح الإعدادات",
|
||||
"Open Command Palette": "فتح لوحة الأوامر",
|
||||
"Show Keyboard Shortcuts": "عرض اختصارات لوحة المفاتيح",
|
||||
"Open Books": "فتح الكتب",
|
||||
"Toggle Fullscreen": "تبديل ملء الشاشة",
|
||||
"Close Window": "إغلاق النافذة",
|
||||
"Quit App": "إنهاء التطبيق",
|
||||
"Go Left / Previous Page": "الانتقال لليسار / الصفحة السابقة",
|
||||
"Go Right / Next Page": "الانتقال لليمين / الصفحة التالية",
|
||||
"Go Up": "الانتقال لأعلى",
|
||||
"Go Down": "الانتقال لأسفل",
|
||||
"Previous Chapter": "الفصل السابق",
|
||||
"Next Chapter": "الفصل التالي",
|
||||
"Scroll Half Page Down": "تمرير نصف صفحة لأسفل",
|
||||
"Scroll Half Page Up": "تمرير نصف صفحة لأعلى",
|
||||
"Save Note": "حفظ الملاحظة"
|
||||
}
|
||||
|
||||
@@ -199,7 +199,6 @@
|
||||
"Auto": "অটো",
|
||||
"Scroll": "স্ক্রল",
|
||||
"Scrolled Mode": "স্ক্রল মোড",
|
||||
"Continuous Scroll": "ক্রমাগত স্ক্রল",
|
||||
"Overlap Pixels": "ওভারল্যাপ পিক্সেল",
|
||||
"Disable Double Click": "ডাবল ক্লিক নিষ্ক্রিয়",
|
||||
"Volume Keys for Page Flip": "পৃষ্ঠা উল্টানোর জন্য ভলিউম কী",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}}টি বইয়ের মেটাডেটা রিফ্রেশ হয়েছে",
|
||||
"{{count}} books refreshed_other": "{{count}}টি বইয়ের মেটাডেটা রিফ্রেশ হয়েছে",
|
||||
"Failed to refresh metadata": "মেটাডেটা রিফ্রেশ ব্যর্থ",
|
||||
"Refresh Metadata": "মেটাডেটা রিফ্রেশ"
|
||||
"Refresh Metadata": "মেটাডেটা রিফ্রেশ",
|
||||
"Keyboard Shortcuts": "কীবোর্ড শর্টকাট",
|
||||
"View all keyboard shortcuts": "সমস্ত কীবোর্ড শর্টকাট দেখুন",
|
||||
"Switch Sidebar Tab": "সাইডবার ট্যাব পরিবর্তন করুন",
|
||||
"Toggle Notebook": "নোটবুক দেখান/লুকান",
|
||||
"Search in Book": "বইয়ে অনুসন্ধান করুন",
|
||||
"Toggle Scroll Mode": "স্ক্রল মোড টগল করুন",
|
||||
"Toggle Select Mode": "নির্বাচন মোড টগল করুন",
|
||||
"Toggle Bookmark": "বুকমার্ক টগল করুন",
|
||||
"Toggle Text to Speech": "টেক্সট টু স্পিচ টগল করুন",
|
||||
"Play / Pause TTS": "TTS চালান / বিরতি দিন",
|
||||
"Toggle Paragraph Mode": "অনুচ্ছেদ মোড টগল করুন",
|
||||
"Highlight Selection": "নির্বাচিত অংশ হাইলাইট করুন",
|
||||
"Underline Selection": "নির্বাচিত অংশে আন্ডারলাইন করুন",
|
||||
"Annotate Selection": "নির্বাচিত অংশে টীকা যোগ করুন",
|
||||
"Search Selection": "নির্বাচিত অংশ অনুসন্ধান করুন",
|
||||
"Copy Selection": "নির্বাচিত অংশ কপি করুন",
|
||||
"Translate Selection": "নির্বাচিত অংশ অনুবাদ করুন",
|
||||
"Dictionary Lookup": "অভিধানে খুঁজুন",
|
||||
"Wikipedia Lookup": "উইকিপিডিয়ায় খুঁজুন",
|
||||
"Read Aloud Selection": "নির্বাচিত অংশ জোরে পড়ুন",
|
||||
"Proofread Selection": "নির্বাচিত অংশ প্রুফরিড করুন",
|
||||
"Open Settings": "সেটিংস খুলুন",
|
||||
"Open Command Palette": "কমান্ড প্যালেট খুলুন",
|
||||
"Show Keyboard Shortcuts": "কীবোর্ড শর্টকাট দেখান",
|
||||
"Open Books": "বই খুলুন",
|
||||
"Toggle Fullscreen": "পূর্ণ পর্দা টগল করুন",
|
||||
"Close Window": "উইন্ডো বন্ধ করুন",
|
||||
"Quit App": "অ্যাপ থেকে প্রস্থান করুন",
|
||||
"Go Left / Previous Page": "বামে যান / আগের পৃষ্ঠা",
|
||||
"Go Right / Next Page": "ডানে যান / পরের পৃষ্ঠা",
|
||||
"Go Up": "উপরে যান",
|
||||
"Go Down": "নিচে যান",
|
||||
"Previous Chapter": "আগের অধ্যায়",
|
||||
"Next Chapter": "পরের অধ্যায়",
|
||||
"Scroll Half Page Down": "অর্ধেক পৃষ্ঠা নিচে স্ক্রল করুন",
|
||||
"Scroll Half Page Up": "অর্ধেক পৃষ্ঠা উপরে স্ক্রল করুন",
|
||||
"Save Note": "নোট সংরক্ষণ করুন"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "གཡས་ནས་གཡོན་དུ།",
|
||||
"Maximum Column Height": "གྲལ་ཐིག་མཐོ་ཤོས།",
|
||||
"Maximum Column Width": "གྲལ་ཐིག་རྒྱ་ཆེ་ཤོས།",
|
||||
"Continuous Scroll": "རྒྱུན་མཐུད་འཁོར་རྒྱུག",
|
||||
"Fullscreen": "བརྡ་ཁྱབ་ངོས་ཆ་ཚང་།",
|
||||
"No supported files found. Supported formats: {{formats}}": "རྒྱབ་སྐྱོར་བྱེད་པའི་ཡིག་ཆ་མ་རྙེད། རྒྱབ་སྐྱོར་བྱེད་པའི་རྣམ་པ། {{formats}}",
|
||||
"Drop to Import Books": "འདྲུད་འཇོག་བྱས་ནས་དཔེ་དེབ་ནང་འདྲེན།",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "དཔེ་མཛོད་འཇུག་བཞིན་པ...",
|
||||
"{{count}} books refreshed_other": "تم تحديث {{count}} كتب",
|
||||
"Failed to refresh metadata": "མེ་ཊ་ཌེ་ཊ་གསར་བསྒྱུར་བྱེད་མ་ཐུབ",
|
||||
"Refresh Metadata": "མེ་ཊ་ཌེ་ཊ་གསར་བསྒྱུར"
|
||||
"Refresh Metadata": "མེ་ཊ་ཌེ་ཊ་གསར་བསྒྱུར",
|
||||
"Keyboard Shortcuts": "མཐེབ་གཞོང་མྱུར་ལམ།",
|
||||
"View all keyboard shortcuts": "མཐེབ་གཞོང་མྱུར་ལམ་ཚང་མ་ལྟ་བ།",
|
||||
"Switch Sidebar Tab": "ཟུར་འབར་གྱི་ཤོག་བྱང་བརྗེ་བ།",
|
||||
"Toggle Notebook": "ཟིན་དེབ་སྟོན་པ།/སྦས་པ།",
|
||||
"Search in Book": "དཔེ་དེབ་ནང་འཚོལ་བ།",
|
||||
"Toggle Scroll Mode": "འཁྱོག་སྒུལ་རྣམ་པ་བརྗེ་བ།",
|
||||
"Toggle Select Mode": "འདེམས་རྣམ་པ་བརྗེ་བ།",
|
||||
"Toggle Bookmark": "ཤོག་རྟགས་བརྗེ་བ།",
|
||||
"Toggle Text to Speech": "ཡི་གེ་སྒྲ་ལ་བརྗེ་བ།",
|
||||
"Play / Pause TTS": "སྒྲ་ཀློག་འགོ་འཛུགས / མཚམས་འཇོག",
|
||||
"Toggle Paragraph Mode": "དུམ་བུ་རྣམ་པ་བརྗེ་བ།",
|
||||
"Highlight Selection": "བདམས་པ་གསལ་བཀོད།",
|
||||
"Underline Selection": "བདམས་པའི་འོག་ཐིག",
|
||||
"Annotate Selection": "བདམས་པར་མཆན་འགོད།",
|
||||
"Search Selection": "བདམས་པ་འཚོལ་བ།",
|
||||
"Copy Selection": "བདམས་པ་བཤུ་བ།",
|
||||
"Translate Selection": "བདམས་པ་ཡིག་སྒྱུར།",
|
||||
"Dictionary Lookup": "ཚིག་མཛོད་ནང་འཚོལ་བ།",
|
||||
"Wikipedia Lookup": "ཝེ་ཁེ་པི་ཌི་ཡར་འཚོལ་བ།",
|
||||
"Read Aloud Selection": "བདམས་པ་སྒྲ་ཆེན་པོས་ཀློག",
|
||||
"Proofread Selection": "བདམས་པ་ཞུ་དག",
|
||||
"Open Settings": "སྒྲིག་འགོད་ཁ་ཕྱེ་བ།",
|
||||
"Open Command Palette": "བཀའ་བརྡའི་པང་ཁ་ཕྱེ་བ།",
|
||||
"Show Keyboard Shortcuts": "མཐེབ་གཞོང་མྱུར་ལམ་སྟོན་པ།",
|
||||
"Open Books": "དཔེ་དེབ་ཁ་ཕྱེ་བ།",
|
||||
"Toggle Fullscreen": "ཡོངས་ཁྱབ་བརྗེ་བ།",
|
||||
"Close Window": "སྒེའུ་ཁུང་ཁ་རྒྱག",
|
||||
"Quit App": "ཉེར་སྤྱོད་ཁ་རྒྱག",
|
||||
"Go Left / Previous Page": "གཡོན་དུ / སྔོན་མའི་ཤོག་ངོས།",
|
||||
"Go Right / Next Page": "གཡས་སུ / རྗེས་མའི་ཤོག་ངོས།",
|
||||
"Go Up": "གོང་དུ།",
|
||||
"Go Down": "འོག་ཏུ།",
|
||||
"Previous Chapter": "སྔོན་མའི་ལེའུ།",
|
||||
"Next Chapter": "རྗེས་མའི་ལེའུ།",
|
||||
"Scroll Half Page Down": "ཤོག་ངོས་ཕྱེད་ཀ་འོག་ཏུ།",
|
||||
"Scroll Half Page Up": "ཤོག་ངོས་ཕྱེད་ཀ་གོང་དུ།",
|
||||
"Save Note": "ཟིན་བྲིས་ཉར་བ།"
|
||||
}
|
||||
|
||||
@@ -183,7 +183,6 @@
|
||||
"RTL Direction": "RTL-Richtung",
|
||||
"Maximum Column Height": "Maximale Spaltenhöhe",
|
||||
"Maximum Column Width": "Maximale Spaltenbreite",
|
||||
"Continuous Scroll": "Kontinuierliches Scrollen",
|
||||
"Fullscreen": "Vollbild",
|
||||
"No supported files found. Supported formats: {{formats}}": "Keine unterstützten Dateien gefunden. Unterstützte Formate: {{formats}}",
|
||||
"Drop to Import Books": "Zum Importieren von Büchern ablegen",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}} Buch aktualisiert",
|
||||
"{{count}} books refreshed_other": "{{count}} Bücher aktualisiert",
|
||||
"Failed to refresh metadata": "Metadaten-Aktualisierung fehlgeschlagen",
|
||||
"Refresh Metadata": "Metadaten aktualisieren"
|
||||
"Refresh Metadata": "Metadaten aktualisieren",
|
||||
"Keyboard Shortcuts": "Tastaturkürzel",
|
||||
"View all keyboard shortcuts": "Alle Tastaturkürzel anzeigen",
|
||||
"Switch Sidebar Tab": "Seitenleisten-Tab wechseln",
|
||||
"Toggle Notebook": "Notizbuch ein-/ausblenden",
|
||||
"Search in Book": "Im Buch suchen",
|
||||
"Toggle Scroll Mode": "Scrollmodus umschalten",
|
||||
"Toggle Select Mode": "Auswahlmodus umschalten",
|
||||
"Toggle Bookmark": "Lesezeichen umschalten",
|
||||
"Toggle Text to Speech": "Sprachausgabe umschalten",
|
||||
"Play / Pause TTS": "Sprachausgabe abspielen / pausieren",
|
||||
"Toggle Paragraph Mode": "Absatzmodus umschalten",
|
||||
"Highlight Selection": "Auswahl hervorheben",
|
||||
"Underline Selection": "Auswahl unterstreichen",
|
||||
"Annotate Selection": "Auswahl kommentieren",
|
||||
"Search Selection": "Auswahl suchen",
|
||||
"Copy Selection": "Auswahl kopieren",
|
||||
"Translate Selection": "Auswahl übersetzen",
|
||||
"Dictionary Lookup": "Im Wörterbuch nachschlagen",
|
||||
"Wikipedia Lookup": "In Wikipedia nachschlagen",
|
||||
"Read Aloud Selection": "Auswahl vorlesen",
|
||||
"Proofread Selection": "Auswahl korrekturlesen",
|
||||
"Open Settings": "Einstellungen öffnen",
|
||||
"Open Command Palette": "Befehlspalette öffnen",
|
||||
"Show Keyboard Shortcuts": "Tastaturkürzel anzeigen",
|
||||
"Open Books": "Bücher öffnen",
|
||||
"Toggle Fullscreen": "Vollbild umschalten",
|
||||
"Close Window": "Fenster schließen",
|
||||
"Quit App": "App beenden",
|
||||
"Go Left / Previous Page": "Nach links / Vorherige Seite",
|
||||
"Go Right / Next Page": "Nach rechts / Nächste Seite",
|
||||
"Go Up": "Nach oben",
|
||||
"Go Down": "Nach unten",
|
||||
"Previous Chapter": "Vorheriges Kapitel",
|
||||
"Next Chapter": "Nächstes Kapitel",
|
||||
"Scroll Half Page Down": "Halbe Seite nach unten scrollen",
|
||||
"Scroll Half Page Up": "Halbe Seite nach oben scrollen",
|
||||
"Save Note": "Notiz speichern"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "Κατεύθυνση RTL",
|
||||
"Maximum Column Height": "Μέγιστο ύψος στήλης",
|
||||
"Maximum Column Width": "Μέγιστο πλάτος στήλης",
|
||||
"Continuous Scroll": "Συνεχής κύλιση",
|
||||
"Fullscreen": "Πλήρης οθόνη",
|
||||
"No supported files found. Supported formats: {{formats}}": "Δεν βρέθηκαν υποστηριζόμενα αρχεία. Υποστηριζόμενες μορφές: {{formats}}",
|
||||
"Drop to Import Books": "Ρίξτε για εισαγωγή βιβλίων",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}} βιβλίο ανανεώθηκε",
|
||||
"{{count}} books refreshed_other": "{{count}} βιβλία ανανεώθηκαν",
|
||||
"Failed to refresh metadata": "Αποτυχία ανανέωσης μεταδεδομένων",
|
||||
"Refresh Metadata": "Ανανέωση μεταδεδομένων"
|
||||
"Refresh Metadata": "Ανανέωση μεταδεδομένων",
|
||||
"Keyboard Shortcuts": "Συντομεύσεις πληκτρολογίου",
|
||||
"View all keyboard shortcuts": "Προβολή όλων των συντομεύσεων",
|
||||
"Switch Sidebar Tab": "Εναλλαγή καρτέλας πλαϊνής γραμμής",
|
||||
"Toggle Notebook": "Εμφάνιση/Απόκρυψη σημειωματάριου",
|
||||
"Search in Book": "Αναζήτηση στο βιβλίο",
|
||||
"Toggle Scroll Mode": "Εναλλαγή λειτουργίας κύλισης",
|
||||
"Toggle Select Mode": "Εναλλαγή λειτουργίας επιλογής",
|
||||
"Toggle Bookmark": "Εναλλαγή σελιδοδείκτη",
|
||||
"Toggle Text to Speech": "Εναλλαγή κειμένου σε ομιλία",
|
||||
"Play / Pause TTS": "Αναπαραγωγή / Παύση TTS",
|
||||
"Toggle Paragraph Mode": "Εναλλαγή λειτουργίας παραγράφου",
|
||||
"Highlight Selection": "Επισήμανση επιλογής",
|
||||
"Underline Selection": "Υπογράμμιση επιλογής",
|
||||
"Annotate Selection": "Σχολιασμός επιλογής",
|
||||
"Search Selection": "Αναζήτηση επιλογής",
|
||||
"Copy Selection": "Αντιγραφή επιλογής",
|
||||
"Translate Selection": "Μετάφραση επιλογής",
|
||||
"Dictionary Lookup": "Αναζήτηση στο λεξικό",
|
||||
"Wikipedia Lookup": "Αναζήτηση στη Wikipedia",
|
||||
"Read Aloud Selection": "Ανάγνωση επιλογής",
|
||||
"Proofread Selection": "Διόρθωση επιλογής",
|
||||
"Open Settings": "Άνοιγμα ρυθμίσεων",
|
||||
"Open Command Palette": "Άνοιγμα παλέτας εντολών",
|
||||
"Show Keyboard Shortcuts": "Εμφάνιση συντομεύσεων",
|
||||
"Open Books": "Άνοιγμα βιβλίων",
|
||||
"Toggle Fullscreen": "Εναλλαγή πλήρους οθόνης",
|
||||
"Close Window": "Κλείσιμο παραθύρου",
|
||||
"Quit App": "Έξοδος εφαρμογής",
|
||||
"Go Left / Previous Page": "Αριστερά / Προηγούμενη σελίδα",
|
||||
"Go Right / Next Page": "Δεξιά / Επόμενη σελίδα",
|
||||
"Go Up": "Πάνω",
|
||||
"Go Down": "Κάτω",
|
||||
"Previous Chapter": "Προηγούμενο κεφάλαιο",
|
||||
"Next Chapter": "Επόμενο κεφάλαιο",
|
||||
"Scroll Half Page Down": "Κύλιση μισής σελίδας κάτω",
|
||||
"Scroll Half Page Up": "Κύλιση μισής σελίδας πάνω",
|
||||
"Save Note": "Αποθήκευση σημείωσης"
|
||||
}
|
||||
|
||||
@@ -211,7 +211,6 @@
|
||||
"RTL Direction": "Dirección RTL",
|
||||
"Maximum Column Height": "Altura máxima de columna",
|
||||
"Maximum Column Width": "Ancho máximo de columna",
|
||||
"Continuous Scroll": "Desplazamiento continuo",
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"No supported files found. Supported formats: {{formats}}": "No se encontraron archivos compatibles. Formatos compatibles: {{formats}}",
|
||||
"Drop to Import Books": "Soltar para importar libros",
|
||||
@@ -1115,5 +1114,42 @@
|
||||
"{{count}} books refreshed_many": "{{count}} libros actualizados",
|
||||
"{{count}} books refreshed_other": "{{count}} libros actualizados",
|
||||
"Failed to refresh metadata": "Error al actualizar metadatos",
|
||||
"Refresh Metadata": "Actualizar metadatos"
|
||||
"Refresh Metadata": "Actualizar metadatos",
|
||||
"Keyboard Shortcuts": "Atajos de teclado",
|
||||
"View all keyboard shortcuts": "Ver todos los atajos de teclado",
|
||||
"Switch Sidebar Tab": "Cambiar pestaña de la barra lateral",
|
||||
"Toggle Notebook": "Mostrar/ocultar cuaderno",
|
||||
"Search in Book": "Buscar en el libro",
|
||||
"Toggle Scroll Mode": "Alternar modo desplazamiento",
|
||||
"Toggle Select Mode": "Alternar modo selección",
|
||||
"Toggle Bookmark": "Alternar marcador",
|
||||
"Toggle Text to Speech": "Alternar texto a voz",
|
||||
"Play / Pause TTS": "Reproducir / Pausar TTS",
|
||||
"Toggle Paragraph Mode": "Alternar modo párrafo",
|
||||
"Highlight Selection": "Resaltar selección",
|
||||
"Underline Selection": "Subrayar selección",
|
||||
"Annotate Selection": "Anotar selección",
|
||||
"Search Selection": "Buscar selección",
|
||||
"Copy Selection": "Copiar selección",
|
||||
"Translate Selection": "Traducir selección",
|
||||
"Dictionary Lookup": "Buscar en diccionario",
|
||||
"Wikipedia Lookup": "Buscar en Wikipedia",
|
||||
"Read Aloud Selection": "Leer selección en voz alta",
|
||||
"Proofread Selection": "Corregir selección",
|
||||
"Open Settings": "Abrir ajustes",
|
||||
"Open Command Palette": "Abrir paleta de comandos",
|
||||
"Show Keyboard Shortcuts": "Mostrar atajos de teclado",
|
||||
"Open Books": "Abrir libros",
|
||||
"Toggle Fullscreen": "Alternar pantalla completa",
|
||||
"Close Window": "Cerrar ventana",
|
||||
"Quit App": "Salir de la aplicación",
|
||||
"Go Left / Previous Page": "Ir a la izquierda / Página anterior",
|
||||
"Go Right / Next Page": "Ir a la derecha / Página siguiente",
|
||||
"Go Up": "Ir arriba",
|
||||
"Go Down": "Ir abajo",
|
||||
"Previous Chapter": "Capítulo anterior",
|
||||
"Next Chapter": "Capítulo siguiente",
|
||||
"Scroll Half Page Down": "Desplazar media página abajo",
|
||||
"Scroll Half Page Up": "Desplazar media página arriba",
|
||||
"Save Note": "Guardar nota"
|
||||
}
|
||||
|
||||
@@ -183,7 +183,6 @@
|
||||
"RTL Direction": "جهت راستبهچپ",
|
||||
"Maximum Column Height": "حداکثر ارتفاع ستون",
|
||||
"Maximum Column Width": "حداکثر عرض ستون",
|
||||
"Continuous Scroll": "پیمایش مداوم",
|
||||
"Fullscreen": "تمامصفحه",
|
||||
"No supported files found. Supported formats: {{formats}}": "فایل پشتیبانیشدهای یافت نشد. فرمتهای قابل پشتیبانی: {{formats}}",
|
||||
"Drop to Import Books": "برای وارد کردن کتابها، فایل را رها کنید",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}} کتاب بهروزرسانی شد",
|
||||
"{{count}} books refreshed_other": "{{count}} کتاب بهروزرسانی شد",
|
||||
"Failed to refresh metadata": "بهروزرسانی فراداده ناموفق",
|
||||
"Refresh Metadata": "بهروزرسانی فراداده"
|
||||
"Refresh Metadata": "بهروزرسانی فراداده",
|
||||
"Keyboard Shortcuts": "میانبرهای صفحهکلید",
|
||||
"View all keyboard shortcuts": "مشاهده همه میانبرهای صفحهکلید",
|
||||
"Switch Sidebar Tab": "تغییر زبانه نوار کناری",
|
||||
"Toggle Notebook": "نمایش/پنهان کردن دفترچه یادداشت",
|
||||
"Search in Book": "جستجو در کتاب",
|
||||
"Toggle Scroll Mode": "تغییر حالت پیمایش",
|
||||
"Toggle Select Mode": "تغییر حالت انتخاب",
|
||||
"Toggle Bookmark": "تغییر نشانک",
|
||||
"Toggle Text to Speech": "تغییر متن به گفتار",
|
||||
"Play / Pause TTS": "پخش / توقف TTS",
|
||||
"Toggle Paragraph Mode": "تغییر حالت پاراگراف",
|
||||
"Highlight Selection": "برجستهسازی انتخاب",
|
||||
"Underline Selection": "زیرخط انتخاب",
|
||||
"Annotate Selection": "افزودن یادداشت به انتخاب",
|
||||
"Search Selection": "جستجوی انتخاب",
|
||||
"Copy Selection": "کپی انتخاب",
|
||||
"Translate Selection": "ترجمه انتخاب",
|
||||
"Dictionary Lookup": "جستجو در فرهنگ لغت",
|
||||
"Wikipedia Lookup": "جستجو در ویکیپدیا",
|
||||
"Read Aloud Selection": "خواندن بلند انتخاب",
|
||||
"Proofread Selection": "بازبینی انتخاب",
|
||||
"Open Settings": "باز کردن تنظیمات",
|
||||
"Open Command Palette": "باز کردن پالت فرمان",
|
||||
"Show Keyboard Shortcuts": "نمایش میانبرهای صفحهکلید",
|
||||
"Open Books": "باز کردن کتابها",
|
||||
"Toggle Fullscreen": "تغییر تمامصفحه",
|
||||
"Close Window": "بستن پنجره",
|
||||
"Quit App": "خروج از برنامه",
|
||||
"Go Left / Previous Page": "رفتن به چپ / صفحه قبلی",
|
||||
"Go Right / Next Page": "رفتن به راست / صفحه بعدی",
|
||||
"Go Up": "رفتن به بالا",
|
||||
"Go Down": "رفتن به پایین",
|
||||
"Previous Chapter": "فصل قبلی",
|
||||
"Next Chapter": "فصل بعدی",
|
||||
"Scroll Half Page Down": "پیمایش نیم صفحه پایین",
|
||||
"Scroll Half Page Up": "پیمایش نیم صفحه بالا",
|
||||
"Save Note": "ذخیره یادداشت"
|
||||
}
|
||||
|
||||
@@ -183,7 +183,6 @@
|
||||
"RTL Direction": "Direction RTL",
|
||||
"Maximum Column Height": "Hauteur maximale de colonne",
|
||||
"Maximum Column Width": "Largeur maximale de colonne",
|
||||
"Continuous Scroll": "Défilement continu",
|
||||
"Fullscreen": "Plein écran",
|
||||
"No supported files found. Supported formats: {{formats}}": "Aucun fichier pris en charge trouvé. Formats pris en charge : {{formats}}",
|
||||
"Drop to Import Books": "Déposez pour importer des livres",
|
||||
@@ -1115,5 +1114,42 @@
|
||||
"{{count}} books refreshed_many": "{{count}} livres rafraîchis",
|
||||
"{{count}} books refreshed_other": "{{count}} livres rafraîchis",
|
||||
"Failed to refresh metadata": "Échec du rafraîchissement des métadonnées",
|
||||
"Refresh Metadata": "Rafraîchir les métadonnées"
|
||||
"Refresh Metadata": "Rafraîchir les métadonnées",
|
||||
"Keyboard Shortcuts": "Raccourcis clavier",
|
||||
"View all keyboard shortcuts": "Voir tous les raccourcis clavier",
|
||||
"Switch Sidebar Tab": "Changer l'onglet de la barre latérale",
|
||||
"Toggle Notebook": "Afficher/masquer le carnet",
|
||||
"Search in Book": "Rechercher dans le livre",
|
||||
"Toggle Scroll Mode": "Basculer le mode défilement",
|
||||
"Toggle Select Mode": "Basculer le mode sélection",
|
||||
"Toggle Bookmark": "Basculer le signet",
|
||||
"Toggle Text to Speech": "Basculer la synthèse vocale",
|
||||
"Play / Pause TTS": "Lecture / Pause TTS",
|
||||
"Toggle Paragraph Mode": "Basculer le mode paragraphe",
|
||||
"Highlight Selection": "Surligner la sélection",
|
||||
"Underline Selection": "Souligner la sélection",
|
||||
"Annotate Selection": "Annoter la sélection",
|
||||
"Search Selection": "Rechercher la sélection",
|
||||
"Copy Selection": "Copier la sélection",
|
||||
"Translate Selection": "Traduire la sélection",
|
||||
"Dictionary Lookup": "Recherche dans le dictionnaire",
|
||||
"Wikipedia Lookup": "Recherche sur Wikipédia",
|
||||
"Read Aloud Selection": "Lire la sélection à voix haute",
|
||||
"Proofread Selection": "Relire la sélection",
|
||||
"Open Settings": "Ouvrir les paramètres",
|
||||
"Open Command Palette": "Ouvrir la palette de commandes",
|
||||
"Show Keyboard Shortcuts": "Afficher les raccourcis clavier",
|
||||
"Open Books": "Ouvrir les livres",
|
||||
"Toggle Fullscreen": "Basculer en plein écran",
|
||||
"Close Window": "Fermer la fenêtre",
|
||||
"Quit App": "Quitter l'application",
|
||||
"Go Left / Previous Page": "Aller à gauche / Page précédente",
|
||||
"Go Right / Next Page": "Aller à droite / Page suivante",
|
||||
"Go Up": "Aller en haut",
|
||||
"Go Down": "Aller en bas",
|
||||
"Previous Chapter": "Chapitre précédent",
|
||||
"Next Chapter": "Chapitre suivant",
|
||||
"Scroll Half Page Down": "Défiler d'une demi-page vers le bas",
|
||||
"Scroll Half Page Up": "Défiler d'une demi-page vers le haut",
|
||||
"Save Note": "Enregistrer la note"
|
||||
}
|
||||
|
||||
@@ -853,7 +853,6 @@
|
||||
"Override Book Color": "דרוס צבע ספר",
|
||||
"None": "ללא",
|
||||
"Scroll": "גלילה",
|
||||
"Continuous Scroll": "גלילה רציפה",
|
||||
"Overlap Pixels": "פיקסלים לחפיפה",
|
||||
"Pagination": "עימוד (Pagination)",
|
||||
"Tap to Paginate": "הקש לעימוד",
|
||||
@@ -1115,5 +1114,42 @@
|
||||
"{{count}} books refreshed_two": "{{count}} ספרים רועננו",
|
||||
"{{count}} books refreshed_other": "{{count}} ספרים רועננו",
|
||||
"Failed to refresh metadata": "רענון המטא-נתונים נכשל",
|
||||
"Refresh Metadata": "רענון מטא-נתונים"
|
||||
"Refresh Metadata": "רענון מטא-נתונים",
|
||||
"Keyboard Shortcuts": "קיצורי מקלדת",
|
||||
"View all keyboard shortcuts": "הצג את כל קיצורי המקלדת",
|
||||
"Switch Sidebar Tab": "החלף לשונית סרגל צד",
|
||||
"Toggle Notebook": "הצג/הסתר מחברת",
|
||||
"Search in Book": "חפש בספר",
|
||||
"Toggle Scroll Mode": "החלף מצב גלילה",
|
||||
"Toggle Select Mode": "החלף מצב בחירה",
|
||||
"Toggle Bookmark": "החלף סימנייה",
|
||||
"Toggle Text to Speech": "החלף טקסט לדיבור",
|
||||
"Play / Pause TTS": "נגן / השהה TTS",
|
||||
"Toggle Paragraph Mode": "החלף מצב פסקה",
|
||||
"Highlight Selection": "הדגש בחירה",
|
||||
"Underline Selection": "קו תחתון לבחירה",
|
||||
"Annotate Selection": "הוסף הערה לבחירה",
|
||||
"Search Selection": "חפש בחירה",
|
||||
"Copy Selection": "העתק בחירה",
|
||||
"Translate Selection": "תרגם בחירה",
|
||||
"Dictionary Lookup": "חיפוש במילון",
|
||||
"Wikipedia Lookup": "חיפוש בוויקיפדיה",
|
||||
"Read Aloud Selection": "קרא בקול את הבחירה",
|
||||
"Proofread Selection": "הגה בחירה",
|
||||
"Open Settings": "פתח הגדרות",
|
||||
"Open Command Palette": "פתח לוח פקודות",
|
||||
"Show Keyboard Shortcuts": "הצג קיצורי מקלדת",
|
||||
"Open Books": "פתח ספרים",
|
||||
"Toggle Fullscreen": "החלף מסך מלא",
|
||||
"Close Window": "סגור חלון",
|
||||
"Quit App": "צא מהאפליקציה",
|
||||
"Go Left / Previous Page": "שמאלה / עמוד קודם",
|
||||
"Go Right / Next Page": "ימינה / עמוד הבא",
|
||||
"Go Up": "למעלה",
|
||||
"Go Down": "למטה",
|
||||
"Previous Chapter": "פרק קודם",
|
||||
"Next Chapter": "פרק הבא",
|
||||
"Scroll Half Page Down": "גלול חצי עמוד למטה",
|
||||
"Scroll Half Page Up": "גלול חצי עמוד למעלה",
|
||||
"Save Note": "שמור הערה"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "RTL दिशा",
|
||||
"Maximum Column Height": "कॉलम की अधिकतम ऊँचाई",
|
||||
"Maximum Column Width": "कॉलम की अधिकतम चौड़ाई",
|
||||
"Continuous Scroll": "निरंतर स्क्रॉल",
|
||||
"Fullscreen": "पूर्णस्क्रीन",
|
||||
"No supported files found. Supported formats: {{formats}}": "कोई समर्थित फ़ाइलें नहीं मिलीं। समर्थित प्रारूप: {{formats}}",
|
||||
"Drop to Import Books": "पुस्तकें आयात करने के लिए छोड़ें",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}} पुस्तक रिफ्रेश हुई",
|
||||
"{{count}} books refreshed_other": "{{count}} पुस्तकें रिफ्रेश हुईं",
|
||||
"Failed to refresh metadata": "मेटाडेटा रिफ्रेश विफल",
|
||||
"Refresh Metadata": "मेटाडेटा रिफ्रेश करें"
|
||||
"Refresh Metadata": "मेटाडेटा रिफ्रेश करें",
|
||||
"Keyboard Shortcuts": "कीबोर्ड शॉर्टकट",
|
||||
"View all keyboard shortcuts": "सभी कीबोर्ड शॉर्टकट देखें",
|
||||
"Switch Sidebar Tab": "साइडबार टैब बदलें",
|
||||
"Toggle Notebook": "नोटबुक दिखाएँ/छुपाएँ",
|
||||
"Search in Book": "पुस्तक में खोजें",
|
||||
"Toggle Scroll Mode": "स्क्रॉल मोड टॉगल करें",
|
||||
"Toggle Select Mode": "चयन मोड टॉगल करें",
|
||||
"Toggle Bookmark": "बुकमार्क टॉगल करें",
|
||||
"Toggle Text to Speech": "टेक्स्ट टू स्पीच टॉगल करें",
|
||||
"Play / Pause TTS": "TTS चलाएँ / रोकें",
|
||||
"Toggle Paragraph Mode": "अनुच्छेद मोड टॉगल करें",
|
||||
"Highlight Selection": "चयन हाइलाइट करें",
|
||||
"Underline Selection": "चयन अंडरलाइन करें",
|
||||
"Annotate Selection": "चयन पर टिप्पणी करें",
|
||||
"Search Selection": "चयन खोजें",
|
||||
"Copy Selection": "चयन कॉपी करें",
|
||||
"Translate Selection": "चयन का अनुवाद करें",
|
||||
"Dictionary Lookup": "शब्दकोश में खोजें",
|
||||
"Wikipedia Lookup": "विकिपीडिया पर खोजें",
|
||||
"Read Aloud Selection": "चयन को ज़ोर से पढ़ें",
|
||||
"Proofread Selection": "चयन की प्रूफरीडिंग करें",
|
||||
"Open Settings": "सेटिंग्स खोलें",
|
||||
"Open Command Palette": "कमांड पैलेट खोलें",
|
||||
"Show Keyboard Shortcuts": "कीबोर्ड शॉर्टकट दिखाएँ",
|
||||
"Open Books": "पुस्तकें खोलें",
|
||||
"Toggle Fullscreen": "पूर्ण स्क्रीन टॉगल करें",
|
||||
"Close Window": "विंडो बंद करें",
|
||||
"Quit App": "ऐप से बाहर निकलें",
|
||||
"Go Left / Previous Page": "बाएँ जाएँ / पिछला पृष्ठ",
|
||||
"Go Right / Next Page": "दाएँ जाएँ / अगला पृष्ठ",
|
||||
"Go Up": "ऊपर जाएँ",
|
||||
"Go Down": "नीचे जाएँ",
|
||||
"Previous Chapter": "पिछला अध्याय",
|
||||
"Next Chapter": "अगला अध्याय",
|
||||
"Scroll Half Page Down": "आधा पृष्ठ नीचे स्क्रॉल करें",
|
||||
"Scroll Half Page Up": "आधा पृष्ठ ऊपर स्क्रॉल करें",
|
||||
"Save Note": "नोट सहेजें"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "Arah RTL",
|
||||
"Maximum Column Height": "Tinggi Kolom Maksimum",
|
||||
"Maximum Column Width": "Lebar Kolom Maksimum",
|
||||
"Continuous Scroll": "Gulir Terus",
|
||||
"Fullscreen": "Layar Penuh",
|
||||
"No supported files found. Supported formats: {{formats}}": "Tidak ada file yang didukung ditemukan. Format yang didukung: {{formats}}",
|
||||
"Drop to Import Books": "Jatuhkan untuk Mengimpor Buku",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "Memuat perpustakaan...",
|
||||
"{{count}} books refreshed_other": "{{count}} buku diperbarui",
|
||||
"Failed to refresh metadata": "Gagal memperbarui metadata",
|
||||
"Refresh Metadata": "Perbarui Metadata"
|
||||
"Refresh Metadata": "Perbarui Metadata",
|
||||
"Keyboard Shortcuts": "Pintasan Keyboard",
|
||||
"View all keyboard shortcuts": "Lihat semua pintasan keyboard",
|
||||
"Switch Sidebar Tab": "Ganti tab bilah sisi",
|
||||
"Toggle Notebook": "Tampilkan/sembunyikan buku catatan",
|
||||
"Search in Book": "Cari di buku",
|
||||
"Toggle Scroll Mode": "Alihkan mode gulir",
|
||||
"Toggle Select Mode": "Alihkan mode pilih",
|
||||
"Toggle Bookmark": "Alihkan penanda",
|
||||
"Toggle Text to Speech": "Alihkan teks ke suara",
|
||||
"Play / Pause TTS": "Putar / Jeda TTS",
|
||||
"Toggle Paragraph Mode": "Alihkan mode paragraf",
|
||||
"Highlight Selection": "Sorot pilihan",
|
||||
"Underline Selection": "Garis bawahi pilihan",
|
||||
"Annotate Selection": "Beri anotasi pilihan",
|
||||
"Search Selection": "Cari pilihan",
|
||||
"Copy Selection": "Salin pilihan",
|
||||
"Translate Selection": "Terjemahkan pilihan",
|
||||
"Dictionary Lookup": "Cari di kamus",
|
||||
"Wikipedia Lookup": "Cari di Wikipedia",
|
||||
"Read Aloud Selection": "Bacakan pilihan",
|
||||
"Proofread Selection": "Periksa ejaan pilihan",
|
||||
"Open Settings": "Buka pengaturan",
|
||||
"Open Command Palette": "Buka palet perintah",
|
||||
"Show Keyboard Shortcuts": "Tampilkan pintasan keyboard",
|
||||
"Open Books": "Buka buku",
|
||||
"Toggle Fullscreen": "Alihkan layar penuh",
|
||||
"Close Window": "Tutup jendela",
|
||||
"Quit App": "Keluar dari aplikasi",
|
||||
"Go Left / Previous Page": "Ke kiri / Halaman sebelumnya",
|
||||
"Go Right / Next Page": "Ke kanan / Halaman berikutnya",
|
||||
"Go Up": "Ke atas",
|
||||
"Go Down": "Ke bawah",
|
||||
"Previous Chapter": "Bab sebelumnya",
|
||||
"Next Chapter": "Bab berikutnya",
|
||||
"Scroll Half Page Down": "Gulir setengah halaman ke bawah",
|
||||
"Scroll Half Page Up": "Gulir setengah halaman ke atas",
|
||||
"Save Note": "Simpan catatan"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "Direzione RTL",
|
||||
"Maximum Column Height": "Altezza massima colonna",
|
||||
"Maximum Column Width": "Larghezza massima colonna",
|
||||
"Continuous Scroll": "Scorrimento continuo",
|
||||
"Fullscreen": "Schermo intero",
|
||||
"No supported files found. Supported formats: {{formats}}": "Nessun file supportato trovato. Formati supportati: {{formats}}",
|
||||
"Drop to Import Books": "Rilascia per importare libri",
|
||||
@@ -1115,5 +1114,42 @@
|
||||
"{{count}} books refreshed_many": "{{count}} libri aggiornati",
|
||||
"{{count}} books refreshed_other": "{{count}} libri aggiornati",
|
||||
"Failed to refresh metadata": "Aggiornamento metadati fallito",
|
||||
"Refresh Metadata": "Aggiorna metadati"
|
||||
"Refresh Metadata": "Aggiorna metadati",
|
||||
"Keyboard Shortcuts": "Scorciatoie da tastiera",
|
||||
"View all keyboard shortcuts": "Visualizza tutte le scorciatoie",
|
||||
"Switch Sidebar Tab": "Cambia scheda barra laterale",
|
||||
"Toggle Notebook": "Mostra/nascondi blocco note",
|
||||
"Search in Book": "Cerca nel libro",
|
||||
"Toggle Scroll Mode": "Attiva/disattiva scorrimento",
|
||||
"Toggle Select Mode": "Attiva/disattiva selezione",
|
||||
"Toggle Bookmark": "Attiva/disattiva segnalibro",
|
||||
"Toggle Text to Speech": "Attiva/disattiva sintesi vocale",
|
||||
"Play / Pause TTS": "Riproduci / Pausa TTS",
|
||||
"Toggle Paragraph Mode": "Attiva/disattiva modo paragrafo",
|
||||
"Highlight Selection": "Evidenzia selezione",
|
||||
"Underline Selection": "Sottolinea selezione",
|
||||
"Annotate Selection": "Annota selezione",
|
||||
"Search Selection": "Cerca selezione",
|
||||
"Copy Selection": "Copia selezione",
|
||||
"Translate Selection": "Traduci selezione",
|
||||
"Dictionary Lookup": "Cerca nel dizionario",
|
||||
"Wikipedia Lookup": "Cerca su Wikipedia",
|
||||
"Read Aloud Selection": "Leggi la selezione ad alta voce",
|
||||
"Proofread Selection": "Correggi selezione",
|
||||
"Open Settings": "Apri impostazioni",
|
||||
"Open Command Palette": "Apri tavolozza comandi",
|
||||
"Show Keyboard Shortcuts": "Mostra scorciatoie da tastiera",
|
||||
"Open Books": "Apri libri",
|
||||
"Toggle Fullscreen": "Attiva/disattiva schermo intero",
|
||||
"Close Window": "Chiudi finestra",
|
||||
"Quit App": "Esci dall'app",
|
||||
"Go Left / Previous Page": "Vai a sinistra / Pagina precedente",
|
||||
"Go Right / Next Page": "Vai a destra / Pagina successiva",
|
||||
"Go Up": "Vai su",
|
||||
"Go Down": "Vai giù",
|
||||
"Previous Chapter": "Capitolo precedente",
|
||||
"Next Chapter": "Capitolo successivo",
|
||||
"Scroll Half Page Down": "Scorri mezza pagina in basso",
|
||||
"Scroll Half Page Up": "Scorri mezza pagina in alto",
|
||||
"Save Note": "Salva nota"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "RTL方向",
|
||||
"Maximum Column Height": "最大列高",
|
||||
"Maximum Column Width": "最大列幅",
|
||||
"Continuous Scroll": "連続スクロール",
|
||||
"Fullscreen": "全画面",
|
||||
"No supported files found. Supported formats: {{formats}}": "サポートされているファイルが見つかりません。サポートされている形式:{{formats}}",
|
||||
"Drop to Import Books": "書籍をインポートするにはドロップ",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "ライブラリを読み込み中...",
|
||||
"{{count}} books refreshed_other": "{{count}}冊のメタデータを更新しました",
|
||||
"Failed to refresh metadata": "メタデータの更新に失敗しました",
|
||||
"Refresh Metadata": "メタデータを更新"
|
||||
"Refresh Metadata": "メタデータを更新",
|
||||
"Keyboard Shortcuts": "キーボードショートカット",
|
||||
"View all keyboard shortcuts": "すべてのキーボードショートカットを表示",
|
||||
"Switch Sidebar Tab": "サイドバータブを切り替え",
|
||||
"Toggle Notebook": "ノートブックの表示/非表示",
|
||||
"Search in Book": "本の中を検索",
|
||||
"Toggle Scroll Mode": "スクロールモードの切り替え",
|
||||
"Toggle Select Mode": "選択モードの切り替え",
|
||||
"Toggle Bookmark": "ブックマークの切り替え",
|
||||
"Toggle Text to Speech": "音声読み上げの切り替え",
|
||||
"Play / Pause TTS": "読み上げ再生 / 一時停止",
|
||||
"Toggle Paragraph Mode": "段落モードの切り替え",
|
||||
"Highlight Selection": "選択範囲をハイライト",
|
||||
"Underline Selection": "選択範囲に下線",
|
||||
"Annotate Selection": "選択範囲に注釈",
|
||||
"Search Selection": "選択範囲を検索",
|
||||
"Copy Selection": "選択範囲をコピー",
|
||||
"Translate Selection": "選択範囲を翻訳",
|
||||
"Dictionary Lookup": "辞書で調べる",
|
||||
"Wikipedia Lookup": "Wikipediaで調べる",
|
||||
"Read Aloud Selection": "選択範囲を読み上げ",
|
||||
"Proofread Selection": "選択範囲を校正",
|
||||
"Open Settings": "設定を開く",
|
||||
"Open Command Palette": "コマンドパレットを開く",
|
||||
"Show Keyboard Shortcuts": "キーボードショートカットを表示",
|
||||
"Open Books": "本を開く",
|
||||
"Toggle Fullscreen": "フルスクリーンの切り替え",
|
||||
"Close Window": "ウィンドウを閉じる",
|
||||
"Quit App": "アプリを終了",
|
||||
"Go Left / Previous Page": "左へ / 前のページ",
|
||||
"Go Right / Next Page": "右へ / 次のページ",
|
||||
"Go Up": "上へ",
|
||||
"Go Down": "下へ",
|
||||
"Previous Chapter": "前の章",
|
||||
"Next Chapter": "次の章",
|
||||
"Scroll Half Page Down": "半ページ下にスクロール",
|
||||
"Scroll Half Page Up": "半ページ上にスクロール",
|
||||
"Save Note": "メモを保存"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "RTL 방향",
|
||||
"Maximum Column Height": "최대 열 높이",
|
||||
"Maximum Column Width": "최대 열 너비",
|
||||
"Continuous Scroll": "연속 스크롤",
|
||||
"Fullscreen": "전체 화면",
|
||||
"No supported files found. Supported formats: {{formats}}": "지원되는 파일이 없습니다. 지원되는 형식: {{formats}}",
|
||||
"Drop to Import Books": "책 가져오기 위해 드롭",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "라이브러리 로딩 중...",
|
||||
"{{count}} books refreshed_other": "{{count}}권 새로고침됨",
|
||||
"Failed to refresh metadata": "메타데이터 새로고침 실패",
|
||||
"Refresh Metadata": "메타데이터 새로고침"
|
||||
"Refresh Metadata": "메타데이터 새로고침",
|
||||
"Keyboard Shortcuts": "키보드 단축키",
|
||||
"View all keyboard shortcuts": "모든 키보드 단축키 보기",
|
||||
"Switch Sidebar Tab": "사이드바 탭 전환",
|
||||
"Toggle Notebook": "노트북 표시/숨기기",
|
||||
"Search in Book": "책에서 검색",
|
||||
"Toggle Scroll Mode": "스크롤 모드 전환",
|
||||
"Toggle Select Mode": "선택 모드 전환",
|
||||
"Toggle Bookmark": "북마크 전환",
|
||||
"Toggle Text to Speech": "텍스트 음성 변환 전환",
|
||||
"Play / Pause TTS": "TTS 재생 / 일시정지",
|
||||
"Toggle Paragraph Mode": "문단 모드 전환",
|
||||
"Highlight Selection": "선택 영역 강조",
|
||||
"Underline Selection": "선택 영역 밑줄",
|
||||
"Annotate Selection": "선택 영역 주석",
|
||||
"Search Selection": "선택 영역 검색",
|
||||
"Copy Selection": "선택 영역 복사",
|
||||
"Translate Selection": "선택 영역 번역",
|
||||
"Dictionary Lookup": "사전 검색",
|
||||
"Wikipedia Lookup": "위키백과 검색",
|
||||
"Read Aloud Selection": "선택 영역 소리 내어 읽기",
|
||||
"Proofread Selection": "선택 영역 교정",
|
||||
"Open Settings": "설정 열기",
|
||||
"Open Command Palette": "명령 팔레트 열기",
|
||||
"Show Keyboard Shortcuts": "키보드 단축키 표시",
|
||||
"Open Books": "책 열기",
|
||||
"Toggle Fullscreen": "전체 화면 전환",
|
||||
"Close Window": "창 닫기",
|
||||
"Quit App": "앱 종료",
|
||||
"Go Left / Previous Page": "왼쪽으로 / 이전 페이지",
|
||||
"Go Right / Next Page": "오른쪽으로 / 다음 페이지",
|
||||
"Go Up": "위로",
|
||||
"Go Down": "아래로",
|
||||
"Previous Chapter": "이전 장",
|
||||
"Next Chapter": "다음 장",
|
||||
"Scroll Half Page Down": "반 페이지 아래로 스크롤",
|
||||
"Scroll Half Page Up": "반 페이지 위로 스크롤",
|
||||
"Save Note": "메모 저장"
|
||||
}
|
||||
|
||||
@@ -500,7 +500,6 @@
|
||||
"Quick Colors": "Warna Pantas",
|
||||
"Override Book Color": "Ganti Warna Buku",
|
||||
"Scroll": "Tatal",
|
||||
"Continuous Scroll": "Tatal Berterusan",
|
||||
"Overlap Pixels": "Piksel Bertindih",
|
||||
"Pagination": "Penomboran Halaman",
|
||||
"Tap to Paginate": "Ketik untuk Nomborkan Halaman",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "Memuatkan perpustakaan...",
|
||||
"{{count}} books refreshed_other": "{{count}} buku dimuat semula",
|
||||
"Failed to refresh metadata": "Gagal memuat semula metadata",
|
||||
"Refresh Metadata": "Muat Semula Metadata"
|
||||
"Refresh Metadata": "Muat Semula Metadata",
|
||||
"Keyboard Shortcuts": "Pintasan Papan Kekunci",
|
||||
"View all keyboard shortcuts": "Lihat semua pintasan papan kekunci",
|
||||
"Switch Sidebar Tab": "Tukar tab bar sisi",
|
||||
"Toggle Notebook": "Tunjuk/sembunyikan buku nota",
|
||||
"Search in Book": "Cari dalam buku",
|
||||
"Toggle Scroll Mode": "Togol mod tatal",
|
||||
"Toggle Select Mode": "Togol mod pilih",
|
||||
"Toggle Bookmark": "Togol penanda buku",
|
||||
"Toggle Text to Speech": "Togol teks ke pertuturan",
|
||||
"Play / Pause TTS": "Main / Jeda TTS",
|
||||
"Toggle Paragraph Mode": "Togol mod perenggan",
|
||||
"Highlight Selection": "Serlahkan pilihan",
|
||||
"Underline Selection": "Garis bawah pilihan",
|
||||
"Annotate Selection": "Anotasi pilihan",
|
||||
"Search Selection": "Cari pilihan",
|
||||
"Copy Selection": "Salin pilihan",
|
||||
"Translate Selection": "Terjemah pilihan",
|
||||
"Dictionary Lookup": "Cari dalam kamus",
|
||||
"Wikipedia Lookup": "Cari di Wikipedia",
|
||||
"Read Aloud Selection": "Baca kuat pilihan",
|
||||
"Proofread Selection": "Semak pilihan",
|
||||
"Open Settings": "Buka tetapan",
|
||||
"Open Command Palette": "Buka palet arahan",
|
||||
"Show Keyboard Shortcuts": "Tunjukkan pintasan papan kekunci",
|
||||
"Open Books": "Buka buku",
|
||||
"Toggle Fullscreen": "Togol skrin penuh",
|
||||
"Close Window": "Tutup tetingkap",
|
||||
"Quit App": "Keluar dari aplikasi",
|
||||
"Go Left / Previous Page": "Ke kiri / Halaman sebelumnya",
|
||||
"Go Right / Next Page": "Ke kanan / Halaman seterusnya",
|
||||
"Go Up": "Ke atas",
|
||||
"Go Down": "Ke bawah",
|
||||
"Previous Chapter": "Bab sebelumnya",
|
||||
"Next Chapter": "Bab seterusnya",
|
||||
"Scroll Half Page Down": "Tatal separuh halaman ke bawah",
|
||||
"Scroll Half Page Up": "Tatal separuh halaman ke atas",
|
||||
"Save Note": "Simpan nota"
|
||||
}
|
||||
|
||||
@@ -179,7 +179,6 @@
|
||||
"Portrait": "Portret",
|
||||
"Landscape": "Landschap",
|
||||
"Behavior": "Gedrag",
|
||||
"Continuous Scroll": "Doorlopend scrollen",
|
||||
"Volume Keys for Page Flip": "Volumetoetsen voor pagina omslaan",
|
||||
"Apply": "Toepassen",
|
||||
"Font": "Lettertype",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}} boek vernieuwd",
|
||||
"{{count}} books refreshed_other": "{{count}} boeken vernieuwd",
|
||||
"Failed to refresh metadata": "Metadata vernieuwen mislukt",
|
||||
"Refresh Metadata": "Metadata vernieuwen"
|
||||
"Refresh Metadata": "Metadata vernieuwen",
|
||||
"Keyboard Shortcuts": "Sneltoetsen",
|
||||
"View all keyboard shortcuts": "Alle sneltoetsen bekijken",
|
||||
"Switch Sidebar Tab": "Zijbalktabblad wisselen",
|
||||
"Toggle Notebook": "Notitieboek tonen/verbergen",
|
||||
"Search in Book": "Zoeken in boek",
|
||||
"Toggle Scroll Mode": "Scrollmodus wisselen",
|
||||
"Toggle Select Mode": "Selectiemodus wisselen",
|
||||
"Toggle Bookmark": "Bladwijzer wisselen",
|
||||
"Toggle Text to Speech": "Tekst-naar-spraak wisselen",
|
||||
"Play / Pause TTS": "TTS afspelen / pauzeren",
|
||||
"Toggle Paragraph Mode": "Alineamodus wisselen",
|
||||
"Highlight Selection": "Selectie markeren",
|
||||
"Underline Selection": "Selectie onderstrepen",
|
||||
"Annotate Selection": "Selectie annoteren",
|
||||
"Search Selection": "Selectie zoeken",
|
||||
"Copy Selection": "Selectie kopiëren",
|
||||
"Translate Selection": "Selectie vertalen",
|
||||
"Dictionary Lookup": "Opzoeken in woordenboek",
|
||||
"Wikipedia Lookup": "Opzoeken op Wikipedia",
|
||||
"Read Aloud Selection": "Selectie voorlezen",
|
||||
"Proofread Selection": "Selectie proeflezen",
|
||||
"Open Settings": "Instellingen openen",
|
||||
"Open Command Palette": "Opdrachtenpalet openen",
|
||||
"Show Keyboard Shortcuts": "Sneltoetsen tonen",
|
||||
"Open Books": "Boeken openen",
|
||||
"Toggle Fullscreen": "Volledig scherm wisselen",
|
||||
"Close Window": "Venster sluiten",
|
||||
"Quit App": "App afsluiten",
|
||||
"Go Left / Previous Page": "Naar links / Vorige pagina",
|
||||
"Go Right / Next Page": "Naar rechts / Volgende pagina",
|
||||
"Go Up": "Omhoog",
|
||||
"Go Down": "Omlaag",
|
||||
"Previous Chapter": "Vorig hoofdstuk",
|
||||
"Next Chapter": "Volgend hoofdstuk",
|
||||
"Scroll Half Page Down": "Halve pagina naar beneden scrollen",
|
||||
"Scroll Half Page Up": "Halve pagina naar boven scrollen",
|
||||
"Save Note": "Notitie opslaan"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "Kierunek RTL",
|
||||
"Maximum Column Height": "Maksymalna wysokość kolumny",
|
||||
"Maximum Column Width": "Maksymalna szerokość kolumny",
|
||||
"Continuous Scroll": "Przewijanie ciągłe",
|
||||
"Fullscreen": "Pełny ekran",
|
||||
"No supported files found. Supported formats: {{formats}}": "Nie znaleziono obsługiwanych plików. Obsługiwane formaty: {{formats}}",
|
||||
"Drop to Import Books": "Upuść, aby zaimportować książki",
|
||||
@@ -1128,5 +1127,42 @@
|
||||
"{{count}} books refreshed_many": "Odświeżono {{count}} książek",
|
||||
"{{count}} books refreshed_other": "Odświeżono {{count}} książek",
|
||||
"Failed to refresh metadata": "Nie udało się odświeżyć metadanych",
|
||||
"Refresh Metadata": "Odśwież metadane"
|
||||
"Refresh Metadata": "Odśwież metadane",
|
||||
"Keyboard Shortcuts": "Skróty klawiszowe",
|
||||
"View all keyboard shortcuts": "Zobacz wszystkie skróty klawiszowe",
|
||||
"Switch Sidebar Tab": "Przełącz kartę paska bocznego",
|
||||
"Toggle Notebook": "Pokaż/ukryj notatnik",
|
||||
"Search in Book": "Szukaj w książce",
|
||||
"Toggle Scroll Mode": "Przełącz tryb przewijania",
|
||||
"Toggle Select Mode": "Przełącz tryb zaznaczania",
|
||||
"Toggle Bookmark": "Przełącz zakładkę",
|
||||
"Toggle Text to Speech": "Przełącz tekst na mowę",
|
||||
"Play / Pause TTS": "Odtwórz / Wstrzymaj TTS",
|
||||
"Toggle Paragraph Mode": "Przełącz tryb akapitu",
|
||||
"Highlight Selection": "Podświetl zaznaczenie",
|
||||
"Underline Selection": "Podkreśl zaznaczenie",
|
||||
"Annotate Selection": "Dodaj adnotację do zaznaczenia",
|
||||
"Search Selection": "Wyszukaj zaznaczenie",
|
||||
"Copy Selection": "Kopiuj zaznaczenie",
|
||||
"Translate Selection": "Przetłumacz zaznaczenie",
|
||||
"Dictionary Lookup": "Wyszukaj w słowniku",
|
||||
"Wikipedia Lookup": "Wyszukaj w Wikipedii",
|
||||
"Read Aloud Selection": "Odczytaj zaznaczenie na głos",
|
||||
"Proofread Selection": "Sprawdź zaznaczenie",
|
||||
"Open Settings": "Otwórz ustawienia",
|
||||
"Open Command Palette": "Otwórz paletę poleceń",
|
||||
"Show Keyboard Shortcuts": "Pokaż skróty klawiszowe",
|
||||
"Open Books": "Otwórz książki",
|
||||
"Toggle Fullscreen": "Przełącz pełny ekran",
|
||||
"Close Window": "Zamknij okno",
|
||||
"Quit App": "Zamknij aplikację",
|
||||
"Go Left / Previous Page": "W lewo / Poprzednia strona",
|
||||
"Go Right / Next Page": "W prawo / Następna strona",
|
||||
"Go Up": "W górę",
|
||||
"Go Down": "W dół",
|
||||
"Previous Chapter": "Poprzedni rozdział",
|
||||
"Next Chapter": "Następny rozdział",
|
||||
"Scroll Half Page Down": "Przewiń o pół strony w dół",
|
||||
"Scroll Half Page Up": "Przewiń o pół strony w górę",
|
||||
"Save Note": "Zapisz notatkę"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "Direção RTL",
|
||||
"Maximum Column Height": "Altura Máxima da Coluna",
|
||||
"Maximum Column Width": "Largura Máxima da Coluna",
|
||||
"Continuous Scroll": "Rolagem Contínua",
|
||||
"Fullscreen": "Tela Cheia",
|
||||
"No supported files found. Supported formats: {{formats}}": "Nenhum arquivo suportado encontrado. Formatos suportados: {{formats}}",
|
||||
"Drop to Import Books": "Arraste para Importar Livros",
|
||||
@@ -1115,5 +1114,42 @@
|
||||
"{{count}} books refreshed_many": "{{count}} livros atualizados",
|
||||
"{{count}} books refreshed_other": "{{count}} livros atualizados",
|
||||
"Failed to refresh metadata": "Falha ao atualizar metadados",
|
||||
"Refresh Metadata": "Atualizar metadados"
|
||||
"Refresh Metadata": "Atualizar metadados",
|
||||
"Keyboard Shortcuts": "Atalhos de teclado",
|
||||
"View all keyboard shortcuts": "Ver todos os atalhos de teclado",
|
||||
"Switch Sidebar Tab": "Alternar aba da barra lateral",
|
||||
"Toggle Notebook": "Mostrar/ocultar caderno",
|
||||
"Search in Book": "Pesquisar no livro",
|
||||
"Toggle Scroll Mode": "Alternar modo rolagem",
|
||||
"Toggle Select Mode": "Alternar modo seleção",
|
||||
"Toggle Bookmark": "Alternar marcador",
|
||||
"Toggle Text to Speech": "Alternar texto para fala",
|
||||
"Play / Pause TTS": "Reproduzir / Pausar TTS",
|
||||
"Toggle Paragraph Mode": "Alternar modo parágrafo",
|
||||
"Highlight Selection": "Destacar seleção",
|
||||
"Underline Selection": "Sublinhar seleção",
|
||||
"Annotate Selection": "Anotar seleção",
|
||||
"Search Selection": "Pesquisar seleção",
|
||||
"Copy Selection": "Copiar seleção",
|
||||
"Translate Selection": "Traduzir seleção",
|
||||
"Dictionary Lookup": "Pesquisar no dicionário",
|
||||
"Wikipedia Lookup": "Pesquisar na Wikipédia",
|
||||
"Read Aloud Selection": "Ler seleção em voz alta",
|
||||
"Proofread Selection": "Revisar seleção",
|
||||
"Open Settings": "Abrir configurações",
|
||||
"Open Command Palette": "Abrir paleta de comandos",
|
||||
"Show Keyboard Shortcuts": "Mostrar atalhos de teclado",
|
||||
"Open Books": "Abrir livros",
|
||||
"Toggle Fullscreen": "Alternar tela cheia",
|
||||
"Close Window": "Fechar janela",
|
||||
"Quit App": "Sair do aplicativo",
|
||||
"Go Left / Previous Page": "Ir para a esquerda / Página anterior",
|
||||
"Go Right / Next Page": "Ir para a direita / Próxima página",
|
||||
"Go Up": "Ir para cima",
|
||||
"Go Down": "Ir para baixo",
|
||||
"Previous Chapter": "Capítulo anterior",
|
||||
"Next Chapter": "Próximo capítulo",
|
||||
"Scroll Half Page Down": "Rolar meia página para baixo",
|
||||
"Scroll Half Page Up": "Rolar meia página para cima",
|
||||
"Save Note": "Salvar nota"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "Направление RTL",
|
||||
"Maximum Column Height": "Максимальная высота колонки",
|
||||
"Maximum Column Width": "Максимальная ширина колонки",
|
||||
"Continuous Scroll": "Непрерывная прокрутка",
|
||||
"Fullscreen": "Полноэкранный режим",
|
||||
"No supported files found. Supported formats: {{formats}}": "Поддерживаемые файлы не найдены. Поддерживаемые форматы: {{formats}}",
|
||||
"Drop to Import Books": "Перетащите сюда книги для импорта",
|
||||
@@ -1128,5 +1127,42 @@
|
||||
"{{count}} books refreshed_many": "Обновлено {{count}} книг",
|
||||
"{{count}} books refreshed_other": "Обновлено {{count}} книг",
|
||||
"Failed to refresh metadata": "Не удалось обновить метаданные",
|
||||
"Refresh Metadata": "Обновить метаданные"
|
||||
"Refresh Metadata": "Обновить метаданные",
|
||||
"Keyboard Shortcuts": "Сочетания клавиш",
|
||||
"View all keyboard shortcuts": "Показать все сочетания клавиш",
|
||||
"Switch Sidebar Tab": "Переключить вкладку боковой панели",
|
||||
"Toggle Notebook": "Показать/скрыть записную книжку",
|
||||
"Search in Book": "Поиск в книге",
|
||||
"Toggle Scroll Mode": "Переключить режим прокрутки",
|
||||
"Toggle Select Mode": "Переключить режим выделения",
|
||||
"Toggle Bookmark": "Переключить закладку",
|
||||
"Toggle Text to Speech": "Переключить озвучивание текста",
|
||||
"Play / Pause TTS": "Воспроизвести / Пауза TTS",
|
||||
"Toggle Paragraph Mode": "Переключить режим абзаца",
|
||||
"Highlight Selection": "Выделить выбранное",
|
||||
"Underline Selection": "Подчеркнуть выбранное",
|
||||
"Annotate Selection": "Добавить примечание к выбранному",
|
||||
"Search Selection": "Искать выбранное",
|
||||
"Copy Selection": "Копировать выбранное",
|
||||
"Translate Selection": "Перевести выбранное",
|
||||
"Dictionary Lookup": "Поиск в словаре",
|
||||
"Wikipedia Lookup": "Поиск в Википедии",
|
||||
"Read Aloud Selection": "Прочитать выбранное вслух",
|
||||
"Proofread Selection": "Проверить выбранное",
|
||||
"Open Settings": "Открыть настройки",
|
||||
"Open Command Palette": "Открыть палитру команд",
|
||||
"Show Keyboard Shortcuts": "Показать сочетания клавиш",
|
||||
"Open Books": "Открыть книги",
|
||||
"Toggle Fullscreen": "Переключить полноэкранный режим",
|
||||
"Close Window": "Закрыть окно",
|
||||
"Quit App": "Выйти из приложения",
|
||||
"Go Left / Previous Page": "Влево / Предыдущая страница",
|
||||
"Go Right / Next Page": "Вправо / Следующая страница",
|
||||
"Go Up": "Вверх",
|
||||
"Go Down": "Вниз",
|
||||
"Previous Chapter": "Предыдущая глава",
|
||||
"Next Chapter": "Следующая глава",
|
||||
"Scroll Half Page Down": "Прокрутить на полстраницы вниз",
|
||||
"Scroll Half Page Up": "Прокрутить на полстраницы вверх",
|
||||
"Save Note": "Сохранить заметку"
|
||||
}
|
||||
|
||||
@@ -199,7 +199,6 @@
|
||||
"Auto": "ස්වයංක්රීය",
|
||||
"Scroll": "අනුචලනය",
|
||||
"Scrolled Mode": "අනුචලන ආකාරය",
|
||||
"Continuous Scroll": "අඛණ්ඩ අනුචලනය",
|
||||
"Overlap Pixels": "අතිච්ඡාදන පික්සල්",
|
||||
"Disable Double Click": "ද්විත්ව ක්ලික් අබල කරන්න",
|
||||
"Volume Keys for Page Flip": "පිටු පෙරැළීම සඳහා ශබ්ද යතුර",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "පොත් {{count}}ක් යාවත්කාලීන විය",
|
||||
"{{count}} books refreshed_other": "පොත් {{count}}ක් යාවත්කාලීන විය",
|
||||
"Failed to refresh metadata": "පාරදත්ත යාවත්කාලීන කිරීම අසාර්ථකයි",
|
||||
"Refresh Metadata": "පාරදත්ත යාවත්කාලීන කරන්න"
|
||||
"Refresh Metadata": "පාරදත්ත යාවත්කාලීන කරන්න",
|
||||
"Keyboard Shortcuts": "යතුරුපුවරු කෙටිමං",
|
||||
"View all keyboard shortcuts": "සියලුම යතුරුපුවරු කෙටිමං බලන්න",
|
||||
"Switch Sidebar Tab": "පැති තීරු ටැබය මාරු කරන්න",
|
||||
"Toggle Notebook": "සටහන් පොත පෙන්වන්න/සඟවන්න",
|
||||
"Search in Book": "පොතේ සොයන්න",
|
||||
"Toggle Scroll Mode": "අනුචලන ප්රකාරය මාරු කරන්න",
|
||||
"Toggle Select Mode": "තේරීම් ප්රකාරය මාරු කරන්න",
|
||||
"Toggle Bookmark": "පිටු සලකුණ මාරු කරන්න",
|
||||
"Toggle Text to Speech": "පෙළ-කථනය මාරු කරන්න",
|
||||
"Play / Pause TTS": "TTS ධාවනය / විරාමය",
|
||||
"Toggle Paragraph Mode": "ඡේද ප්රකාරය මාරු කරන්න",
|
||||
"Highlight Selection": "තේරීම උද්දීපනය කරන්න",
|
||||
"Underline Selection": "තේරීමට යටින් ඉරක් අදින්න",
|
||||
"Annotate Selection": "තේරීමට සටහනක් එක් කරන්න",
|
||||
"Search Selection": "තේරීම සොයන්න",
|
||||
"Copy Selection": "තේරීම පිටපත් කරන්න",
|
||||
"Translate Selection": "තේරීම පරිවර්තනය කරන්න",
|
||||
"Dictionary Lookup": "ශබ්දකෝෂයේ සොයන්න",
|
||||
"Wikipedia Lookup": "විකිපීඩියාවේ සොයන්න",
|
||||
"Read Aloud Selection": "තේරීම ශබ්ද නගා කියවන්න",
|
||||
"Proofread Selection": "තේරීම සෝදුපත් කරන්න",
|
||||
"Open Settings": "සැකසුම් විවෘත කරන්න",
|
||||
"Open Command Palette": "විධාන පැලට් එක විවෘත කරන්න",
|
||||
"Show Keyboard Shortcuts": "යතුරුපුවරු කෙටිමං පෙන්වන්න",
|
||||
"Open Books": "පොත් විවෘත කරන්න",
|
||||
"Toggle Fullscreen": "පූර්ණ තිරය මාරු කරන්න",
|
||||
"Close Window": "කවුළුව වසන්න",
|
||||
"Quit App": "යෙදුමෙන් පිටවන්න",
|
||||
"Go Left / Previous Page": "වමට / පෙර පිටුව",
|
||||
"Go Right / Next Page": "දකුණට / ඊළඟ පිටුව",
|
||||
"Go Up": "ඉහළට",
|
||||
"Go Down": "පහළට",
|
||||
"Previous Chapter": "පෙර පරිච්ඡේදය",
|
||||
"Next Chapter": "ඊළඟ පරිච්ඡේදය",
|
||||
"Scroll Half Page Down": "අඩ පිටුවක් පහළට අනුචලනය",
|
||||
"Scroll Half Page Up": "අඩ පිටුවක් ඉහළට අනුචලනය",
|
||||
"Save Note": "සටහන සුරකින්න"
|
||||
}
|
||||
|
||||
@@ -896,7 +896,6 @@
|
||||
"Override Book Color": "Prezri barvo knjige",
|
||||
"None": "Brez",
|
||||
"Scroll": "Pomikanje",
|
||||
"Continuous Scroll": "Neprekinjeno pomikanje",
|
||||
"Overlap Pixels": "Prekrivanje pikslov",
|
||||
"Pagination": "Paginacija",
|
||||
"Tap to Paginate": "Tapnite za paginacijo",
|
||||
@@ -1128,5 +1127,42 @@
|
||||
"{{count}} books refreshed_few": "Osvežene {{count}} knjige",
|
||||
"{{count}} books refreshed_other": "Osveženih {{count}} knjig",
|
||||
"Failed to refresh metadata": "Osveževanje metapodatkov ni uspelo",
|
||||
"Refresh Metadata": "Osveži metapodatke"
|
||||
"Refresh Metadata": "Osveži metapodatke",
|
||||
"Keyboard Shortcuts": "Bližnjice na tipkovnici",
|
||||
"View all keyboard shortcuts": "Prikaži vse bližnjice na tipkovnici",
|
||||
"Switch Sidebar Tab": "Preklopi zavihek stranske vrstice",
|
||||
"Toggle Notebook": "Prikaži/skrij beležnico",
|
||||
"Search in Book": "Išči v knjigi",
|
||||
"Toggle Scroll Mode": "Preklopi način drsenja",
|
||||
"Toggle Select Mode": "Preklopi način izbire",
|
||||
"Toggle Bookmark": "Preklopi zaznamek",
|
||||
"Toggle Text to Speech": "Preklopi besedilo v govor",
|
||||
"Play / Pause TTS": "Predvajaj / Zaustavi TTS",
|
||||
"Toggle Paragraph Mode": "Preklopi način odstavka",
|
||||
"Highlight Selection": "Označi izbiro",
|
||||
"Underline Selection": "Podčrtaj izbiro",
|
||||
"Annotate Selection": "Dodaj opombo k izbiri",
|
||||
"Search Selection": "Išči izbiro",
|
||||
"Copy Selection": "Kopiraj izbiro",
|
||||
"Translate Selection": "Prevedi izbiro",
|
||||
"Dictionary Lookup": "Iskanje v slovarju",
|
||||
"Wikipedia Lookup": "Iskanje na Wikipediji",
|
||||
"Read Aloud Selection": "Preberi izbiro na glas",
|
||||
"Proofread Selection": "Lektoriraj izbiro",
|
||||
"Open Settings": "Odpri nastavitve",
|
||||
"Open Command Palette": "Odpri ukazno paleto",
|
||||
"Show Keyboard Shortcuts": "Prikaži bližnjice na tipkovnici",
|
||||
"Open Books": "Odpri knjige",
|
||||
"Toggle Fullscreen": "Preklopi celoten zaslon",
|
||||
"Close Window": "Zapri okno",
|
||||
"Quit App": "Zapri aplikacijo",
|
||||
"Go Left / Previous Page": "Levo / Prejšnja stran",
|
||||
"Go Right / Next Page": "Desno / Naslednja stran",
|
||||
"Go Up": "Navzgor",
|
||||
"Go Down": "Navzdol",
|
||||
"Previous Chapter": "Prejšnje poglavje",
|
||||
"Next Chapter": "Naslednje poglavje",
|
||||
"Scroll Half Page Down": "Drsi pol strani navzdol",
|
||||
"Scroll Half Page Up": "Drsi pol strani navzgor",
|
||||
"Save Note": "Shrani opombo"
|
||||
}
|
||||
|
||||
@@ -446,7 +446,6 @@
|
||||
"Enable Highlighting": "Aktivera markering",
|
||||
"Code Language": "Kodspråk",
|
||||
"Scroll": "Rullning",
|
||||
"Continuous Scroll": "Kontinuerlig rullning",
|
||||
"Overlap Pixels": "Överlappande pixlar",
|
||||
"Disable Double Click": "Inaktivera dubbelklick",
|
||||
"Volume Keys for Page Flip": "Volymknappar för sidbyte",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}} bok uppdaterad",
|
||||
"{{count}} books refreshed_other": "{{count}} böcker uppdaterade",
|
||||
"Failed to refresh metadata": "Kunde inte uppdatera metadata",
|
||||
"Refresh Metadata": "Uppdatera metadata"
|
||||
"Refresh Metadata": "Uppdatera metadata",
|
||||
"Keyboard Shortcuts": "Tangentbordsgenvägar",
|
||||
"View all keyboard shortcuts": "Visa alla tangentbordsgenvägar",
|
||||
"Switch Sidebar Tab": "Byt flik i sidofältet",
|
||||
"Toggle Notebook": "Visa/dölj anteckningsbok",
|
||||
"Search in Book": "Sök i boken",
|
||||
"Toggle Scroll Mode": "Växla rullningsläge",
|
||||
"Toggle Select Mode": "Växla markeringsläge",
|
||||
"Toggle Bookmark": "Växla bokmärke",
|
||||
"Toggle Text to Speech": "Växla text-till-tal",
|
||||
"Play / Pause TTS": "Spela upp / Pausa TTS",
|
||||
"Toggle Paragraph Mode": "Växla styckeläge",
|
||||
"Highlight Selection": "Markera urval",
|
||||
"Underline Selection": "Stryka under urval",
|
||||
"Annotate Selection": "Kommentera urval",
|
||||
"Search Selection": "Sök urval",
|
||||
"Copy Selection": "Kopiera urval",
|
||||
"Translate Selection": "Översätt urval",
|
||||
"Dictionary Lookup": "Slå upp i ordbok",
|
||||
"Wikipedia Lookup": "Slå upp på Wikipedia",
|
||||
"Read Aloud Selection": "Läs upp urval",
|
||||
"Proofread Selection": "Korrekturläs urval",
|
||||
"Open Settings": "Öppna inställningar",
|
||||
"Open Command Palette": "Öppna kommandopaletten",
|
||||
"Show Keyboard Shortcuts": "Visa tangentbordsgenvägar",
|
||||
"Open Books": "Öppna böcker",
|
||||
"Toggle Fullscreen": "Växla helskärm",
|
||||
"Close Window": "Stäng fönster",
|
||||
"Quit App": "Avsluta appen",
|
||||
"Go Left / Previous Page": "Vänster / Föregående sida",
|
||||
"Go Right / Next Page": "Höger / Nästa sida",
|
||||
"Go Up": "Uppåt",
|
||||
"Go Down": "Nedåt",
|
||||
"Previous Chapter": "Föregående kapitel",
|
||||
"Next Chapter": "Nästa kapitel",
|
||||
"Scroll Half Page Down": "Rulla en halv sida nedåt",
|
||||
"Scroll Half Page Up": "Rulla en halv sida uppåt",
|
||||
"Save Note": "Spara anteckning"
|
||||
}
|
||||
|
||||
@@ -199,7 +199,6 @@
|
||||
"Auto": "தானியங்கி",
|
||||
"Scroll": "உருட்டவும்",
|
||||
"Scrolled Mode": "உருட்டல் பயன்முறை",
|
||||
"Continuous Scroll": "தொடர்ச்சியான உருட்டல்",
|
||||
"Overlap Pixels": "ஒன்றுடன் ஒன்று பிக்சல்கள்",
|
||||
"Disable Double Click": "இரட்டை கிளிக்கை முடக்கவும்",
|
||||
"Volume Keys for Page Flip": "பக்கம் புரட்டுவதற்கு ஒலி விசைகள்",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}} புத்தகம் புதுப்பிக்கப்பட்டது",
|
||||
"{{count}} books refreshed_other": "{{count}} புத்தகங்கள் புதுப்பிக்கப்பட்டன",
|
||||
"Failed to refresh metadata": "மெட்டாடேட்டா புதுப்பிப்பு தோல்வி",
|
||||
"Refresh Metadata": "மெட்டாடேட்டா புதுப்பிக்கவும்"
|
||||
"Refresh Metadata": "மெட்டாடேட்டா புதுப்பிக்கவும்",
|
||||
"Keyboard Shortcuts": "விசைப்பலகை குறுக்குவழிகள்",
|
||||
"View all keyboard shortcuts": "அனைத்து விசைப்பலகை குறுக்குவழிகளையும் காண்க",
|
||||
"Switch Sidebar Tab": "பக்கப்பட்டி தாவலை மாற்றுக",
|
||||
"Toggle Notebook": "குறிப்பேட்டைக் காட்டு/மறை",
|
||||
"Search in Book": "புத்தகத்தில் தேடுக",
|
||||
"Toggle Scroll Mode": "உருள் பயன்முறையை மாற்றுக",
|
||||
"Toggle Select Mode": "தேர்வு பயன்முறையை மாற்றுக",
|
||||
"Toggle Bookmark": "புக்மார்க்கை மாற்றுக",
|
||||
"Toggle Text to Speech": "உரையிலிருந்து பேச்சுக்கு மாற்றுக",
|
||||
"Play / Pause TTS": "TTS இயக்கு / இடைநிறுத்து",
|
||||
"Toggle Paragraph Mode": "பத்தி பயன்முறையை மாற்றுக",
|
||||
"Highlight Selection": "தேர்வை சிறப்பிக்கவும்",
|
||||
"Underline Selection": "தேர்வுக்கு அடிக்கோடிடுக",
|
||||
"Annotate Selection": "தேர்வுக்கு குறிப்பு சேர்க்கவும்",
|
||||
"Search Selection": "தேர்வைத் தேடுக",
|
||||
"Copy Selection": "தேர்வை நகலெடுக்கவும்",
|
||||
"Translate Selection": "தேர்வை மொழிபெயர்க்கவும்",
|
||||
"Dictionary Lookup": "அகராதியில் தேடுக",
|
||||
"Wikipedia Lookup": "விக்கிப்பீடியாவில் தேடுக",
|
||||
"Read Aloud Selection": "தேர்வை சத்தமாக படிக்கவும்",
|
||||
"Proofread Selection": "தேர்வை சரிபார்க்கவும்",
|
||||
"Open Settings": "அமைப்புகளைத் திறக்கவும்",
|
||||
"Open Command Palette": "கட்டளை தட்டை திறக்கவும்",
|
||||
"Show Keyboard Shortcuts": "விசைப்பலகை குறுக்குவழிகளைக் காட்டுக",
|
||||
"Open Books": "புத்தகங்களைத் திறக்கவும்",
|
||||
"Toggle Fullscreen": "முழுத்திரையை மாற்றுக",
|
||||
"Close Window": "சாளரத்தை மூடுக",
|
||||
"Quit App": "பயன்பாட்டிலிருந்து வெளியேறுக",
|
||||
"Go Left / Previous Page": "இடது / முந்தைய பக்கம்",
|
||||
"Go Right / Next Page": "வலது / அடுத்த பக்கம்",
|
||||
"Go Up": "மேலே",
|
||||
"Go Down": "கீழே",
|
||||
"Previous Chapter": "முந்தைய அத்தியாயம்",
|
||||
"Next Chapter": "அடுத்த அத்தியாயம்",
|
||||
"Scroll Half Page Down": "அரை பக்கம் கீழே உருட்டுக",
|
||||
"Scroll Half Page Up": "அரை பக்கம் மேலே உருட்டுக",
|
||||
"Save Note": "குறிப்பைச் சேமிக்கவும்"
|
||||
}
|
||||
|
||||
@@ -164,7 +164,6 @@
|
||||
"Code Language": "ภาษาโค้ด",
|
||||
"Scroll": "เลื่อน",
|
||||
"Scrolled Mode": "โหมดเลื่อน",
|
||||
"Continuous Scroll": "เลื่อนต่อเนื่อง",
|
||||
"Overlap Pixels": "พิกเซลซ้อน",
|
||||
"Volume Keys for Page Flip": "ปุ่มเสียงเพื่อพลิกหน้า",
|
||||
"Animation": "ภาพเคลื่อนไหว",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "กำลังโหลดห้องสมุด...",
|
||||
"{{count}} books refreshed_other": "รีเฟรชแล้ว {{count}} เล่ม",
|
||||
"Failed to refresh metadata": "รีเฟรชข้อมูลเมตาล้มเหลว",
|
||||
"Refresh Metadata": "รีเฟรชข้อมูลเมตา"
|
||||
"Refresh Metadata": "รีเฟรชข้อมูลเมตา",
|
||||
"Keyboard Shortcuts": "แป้นพิมพ์ลัด",
|
||||
"View all keyboard shortcuts": "ดูแป้นพิมพ์ลัดทั้งหมด",
|
||||
"Switch Sidebar Tab": "สลับแท็บแถบด้านข้าง",
|
||||
"Toggle Notebook": "แสดง/ซ่อนสมุดบันทึก",
|
||||
"Search in Book": "ค้นหาในหนังสือ",
|
||||
"Toggle Scroll Mode": "สลับโหมดเลื่อน",
|
||||
"Toggle Select Mode": "สลับโหมดเลือก",
|
||||
"Toggle Bookmark": "สลับที่คั่นหนังสือ",
|
||||
"Toggle Text to Speech": "สลับข้อความเป็นเสียง",
|
||||
"Play / Pause TTS": "เล่น / หยุดชั่วคราว TTS",
|
||||
"Toggle Paragraph Mode": "สลับโหมดย่อหน้า",
|
||||
"Highlight Selection": "ไฮไลต์ข้อความที่เลือก",
|
||||
"Underline Selection": "ขีดเส้นใต้ข้อความที่เลือก",
|
||||
"Annotate Selection": "เพิ่มหมายเหตุให้ข้อความที่เลือก",
|
||||
"Search Selection": "ค้นหาข้อความที่เลือก",
|
||||
"Copy Selection": "คัดลอกข้อความที่เลือก",
|
||||
"Translate Selection": "แปลข้อความที่เลือก",
|
||||
"Dictionary Lookup": "ค้นหาในพจนานุกรม",
|
||||
"Wikipedia Lookup": "ค้นหาใน Wikipedia",
|
||||
"Read Aloud Selection": "อ่านออกเสียงข้อความที่เลือก",
|
||||
"Proofread Selection": "ตรวจทานข้อความที่เลือก",
|
||||
"Open Settings": "เปิดการตั้งค่า",
|
||||
"Open Command Palette": "เปิดแถบคำสั่ง",
|
||||
"Show Keyboard Shortcuts": "แสดงแป้นพิมพ์ลัด",
|
||||
"Open Books": "เปิดหนังสือ",
|
||||
"Toggle Fullscreen": "สลับเต็มหน้าจอ",
|
||||
"Close Window": "ปิดหน้าต่าง",
|
||||
"Quit App": "ออกจากแอป",
|
||||
"Go Left / Previous Page": "ไปซ้าย / หน้าก่อนหน้า",
|
||||
"Go Right / Next Page": "ไปขวา / หน้าถัดไป",
|
||||
"Go Up": "ขึ้น",
|
||||
"Go Down": "ลง",
|
||||
"Previous Chapter": "บทก่อนหน้า",
|
||||
"Next Chapter": "บทถัดไป",
|
||||
"Scroll Half Page Down": "เลื่อนลงครึ่งหน้า",
|
||||
"Scroll Half Page Up": "เลื่อนขึ้นครึ่งหน้า",
|
||||
"Save Note": "บันทึกโน้ต"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "RTL Yönü",
|
||||
"Maximum Column Height": "Maksimum Sütun Yüksekliği",
|
||||
"Maximum Column Width": "Maksimum Sütun Genişliği",
|
||||
"Continuous Scroll": "Sürekli Kaydırma",
|
||||
"Fullscreen": "Tam Ekran",
|
||||
"No supported files found. Supported formats: {{formats}}": "Desteklenen dosya bulunamadı. Desteklenen formatlar: {{formats}}",
|
||||
"Drop to Import Books": "Kitapları İçe Aktarmak İçin Bırak",
|
||||
@@ -1102,5 +1101,42 @@
|
||||
"{{count}} books refreshed_one": "{{count}} kitap yenilendi",
|
||||
"{{count}} books refreshed_other": "{{count}} kitap yenilendi",
|
||||
"Failed to refresh metadata": "Meta veri yenileme başarısız",
|
||||
"Refresh Metadata": "Meta Verileri Yenile"
|
||||
"Refresh Metadata": "Meta Verileri Yenile",
|
||||
"Keyboard Shortcuts": "Klavye Kısayolları",
|
||||
"View all keyboard shortcuts": "Tüm klavye kısayollarını görüntüle",
|
||||
"Switch Sidebar Tab": "Kenar çubuğu sekmesini değiştir",
|
||||
"Toggle Notebook": "Not defterini göster/gizle",
|
||||
"Search in Book": "Kitapta ara",
|
||||
"Toggle Scroll Mode": "Kaydırma modunu değiştir",
|
||||
"Toggle Select Mode": "Seçim modunu değiştir",
|
||||
"Toggle Bookmark": "Yer imini değiştir",
|
||||
"Toggle Text to Speech": "Metinden konuşmayı değiştir",
|
||||
"Play / Pause TTS": "TTS Oynat / Duraklat",
|
||||
"Toggle Paragraph Mode": "Paragraf modunu değiştir",
|
||||
"Highlight Selection": "Seçimi vurgula",
|
||||
"Underline Selection": "Seçimin altını çiz",
|
||||
"Annotate Selection": "Seçime not ekle",
|
||||
"Search Selection": "Seçimi ara",
|
||||
"Copy Selection": "Seçimi kopyala",
|
||||
"Translate Selection": "Seçimi çevir",
|
||||
"Dictionary Lookup": "Sözlükte ara",
|
||||
"Wikipedia Lookup": "Wikipedia'da ara",
|
||||
"Read Aloud Selection": "Seçimi sesli oku",
|
||||
"Proofread Selection": "Seçimi düzelt",
|
||||
"Open Settings": "Ayarları aç",
|
||||
"Open Command Palette": "Komut paletini aç",
|
||||
"Show Keyboard Shortcuts": "Klavye kısayollarını göster",
|
||||
"Open Books": "Kitapları aç",
|
||||
"Toggle Fullscreen": "Tam ekranı değiştir",
|
||||
"Close Window": "Pencereyi kapat",
|
||||
"Quit App": "Uygulamadan çık",
|
||||
"Go Left / Previous Page": "Sola git / Önceki sayfa",
|
||||
"Go Right / Next Page": "Sağa git / Sonraki sayfa",
|
||||
"Go Up": "Yukarı",
|
||||
"Go Down": "Aşağı",
|
||||
"Previous Chapter": "Önceki bölüm",
|
||||
"Next Chapter": "Sonraki bölüm",
|
||||
"Scroll Half Page Down": "Yarım sayfa aşağı kaydır",
|
||||
"Scroll Half Page Up": "Yarım sayfa yukarı kaydır",
|
||||
"Save Note": "Notu kaydet"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "Напрямок RTL",
|
||||
"Maximum Column Height": "Максимальна висота колонки",
|
||||
"Maximum Column Width": "Максимальна ширина колонки",
|
||||
"Continuous Scroll": "Постійна прокрутка",
|
||||
"Fullscreen": "Повноекранний",
|
||||
"No supported files found. Supported formats: {{formats}}": "Не знайдено підтримуваних файлів. Підтримувані формати: {{formats}}",
|
||||
"Drop to Import Books": "Перетягніть для імпорту книг",
|
||||
@@ -1128,5 +1127,42 @@
|
||||
"{{count}} books refreshed_many": "Оновлено {{count}} книг",
|
||||
"{{count}} books refreshed_other": "Оновлено {{count}} книг",
|
||||
"Failed to refresh metadata": "Не вдалося оновити метадані",
|
||||
"Refresh Metadata": "Оновити метадані"
|
||||
"Refresh Metadata": "Оновити метадані",
|
||||
"Keyboard Shortcuts": "Комбінації клавіш",
|
||||
"View all keyboard shortcuts": "Переглянути всі комбінації клавіш",
|
||||
"Switch Sidebar Tab": "Перемкнути вкладку бічної панелі",
|
||||
"Toggle Notebook": "Показати/сховати блокнот",
|
||||
"Search in Book": "Пошук у книзі",
|
||||
"Toggle Scroll Mode": "Перемкнути режим прокрутки",
|
||||
"Toggle Select Mode": "Перемкнути режим виділення",
|
||||
"Toggle Bookmark": "Перемкнути закладку",
|
||||
"Toggle Text to Speech": "Перемкнути озвучення тексту",
|
||||
"Play / Pause TTS": "Відтворити / Пауза TTS",
|
||||
"Toggle Paragraph Mode": "Перемкнути режим абзацу",
|
||||
"Highlight Selection": "Виділити вибране",
|
||||
"Underline Selection": "Підкреслити вибране",
|
||||
"Annotate Selection": "Додати примітку до вибраного",
|
||||
"Search Selection": "Шукати вибране",
|
||||
"Copy Selection": "Копіювати вибране",
|
||||
"Translate Selection": "Перекласти вибране",
|
||||
"Dictionary Lookup": "Пошук у словнику",
|
||||
"Wikipedia Lookup": "Пошук у Вікіпедії",
|
||||
"Read Aloud Selection": "Прочитати вибране вголос",
|
||||
"Proofread Selection": "Перевірити вибране",
|
||||
"Open Settings": "Відкрити налаштування",
|
||||
"Open Command Palette": "Відкрити палітру команд",
|
||||
"Show Keyboard Shortcuts": "Показати комбінації клавіш",
|
||||
"Open Books": "Відкрити книги",
|
||||
"Toggle Fullscreen": "Перемкнути повноекранний режим",
|
||||
"Close Window": "Закрити вікно",
|
||||
"Quit App": "Вийти з програми",
|
||||
"Go Left / Previous Page": "Вліво / Попередня сторінка",
|
||||
"Go Right / Next Page": "Вправо / Наступна сторінка",
|
||||
"Go Up": "Вгору",
|
||||
"Go Down": "Вниз",
|
||||
"Previous Chapter": "Попередній розділ",
|
||||
"Next Chapter": "Наступний розділ",
|
||||
"Scroll Half Page Down": "Прокрутити на півсторінки вниз",
|
||||
"Scroll Half Page Up": "Прокрутити на півсторінки вгору",
|
||||
"Save Note": "Зберегти нотатку"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "Hướng RTL",
|
||||
"Maximum Column Height": "Chiều cao cột tối đa",
|
||||
"Maximum Column Width": "Chiều rộng cột tối đa",
|
||||
"Continuous Scroll": "Cuộn liên tục",
|
||||
"Fullscreen": "Toàn màn hình",
|
||||
"No supported files found. Supported formats: {{formats}}": "Không tìm thấy tệp được hỗ trợ. Định dạng được hỗ trợ: {{formats}}",
|
||||
"Drop to Import Books": "Kéo và thả để nhập sách",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "Đang tải thư viện...",
|
||||
"{{count}} books refreshed_other": "Đã làm mới {{count}} sách",
|
||||
"Failed to refresh metadata": "Không thể làm mới siêu dữ liệu",
|
||||
"Refresh Metadata": "Làm mới siêu dữ liệu"
|
||||
"Refresh Metadata": "Làm mới siêu dữ liệu",
|
||||
"Keyboard Shortcuts": "Phím tắt",
|
||||
"View all keyboard shortcuts": "Xem tất cả phím tắt",
|
||||
"Switch Sidebar Tab": "Chuyển tab thanh bên",
|
||||
"Toggle Notebook": "Hiện/ẩn sổ ghi chú",
|
||||
"Search in Book": "Tìm kiếm trong sách",
|
||||
"Toggle Scroll Mode": "Chuyển chế độ cuộn",
|
||||
"Toggle Select Mode": "Chuyển chế độ chọn",
|
||||
"Toggle Bookmark": "Bật/tắt đánh dấu",
|
||||
"Toggle Text to Speech": "Bật/tắt đọc văn bản",
|
||||
"Play / Pause TTS": "Phát / Tạm dừng TTS",
|
||||
"Toggle Paragraph Mode": "Chuyển chế độ đoạn văn",
|
||||
"Highlight Selection": "Tô sáng vùng chọn",
|
||||
"Underline Selection": "Gạch chân vùng chọn",
|
||||
"Annotate Selection": "Thêm ghi chú cho vùng chọn",
|
||||
"Search Selection": "Tìm kiếm vùng chọn",
|
||||
"Copy Selection": "Sao chép vùng chọn",
|
||||
"Translate Selection": "Dịch vùng chọn",
|
||||
"Dictionary Lookup": "Tra từ điển",
|
||||
"Wikipedia Lookup": "Tra cứu Wikipedia",
|
||||
"Read Aloud Selection": "Đọc to vùng chọn",
|
||||
"Proofread Selection": "Kiểm tra vùng chọn",
|
||||
"Open Settings": "Mở cài đặt",
|
||||
"Open Command Palette": "Mở bảng lệnh",
|
||||
"Show Keyboard Shortcuts": "Hiển thị phím tắt",
|
||||
"Open Books": "Mở sách",
|
||||
"Toggle Fullscreen": "Chuyển toàn màn hình",
|
||||
"Close Window": "Đóng cửa sổ",
|
||||
"Quit App": "Thoát ứng dụng",
|
||||
"Go Left / Previous Page": "Sang trái / Trang trước",
|
||||
"Go Right / Next Page": "Sang phải / Trang tiếp",
|
||||
"Go Up": "Lên trên",
|
||||
"Go Down": "Xuống dưới",
|
||||
"Previous Chapter": "Chương trước",
|
||||
"Next Chapter": "Chương tiếp",
|
||||
"Scroll Half Page Down": "Cuộn xuống nửa trang",
|
||||
"Scroll Half Page Up": "Cuộn lên nửa trang",
|
||||
"Save Note": "Lưu ghi chú"
|
||||
}
|
||||
|
||||
@@ -185,7 +185,6 @@
|
||||
"RTL Direction": "从右向左",
|
||||
"Maximum Column Height": "最大列高",
|
||||
"Maximum Column Width": "最大列宽",
|
||||
"Continuous Scroll": "连续滚动",
|
||||
"Fullscreen": "全屏显示",
|
||||
"No supported files found. Supported formats: {{formats}}": "未找到支持的文件。支持的格式:{{formats}}",
|
||||
"Drop to Import Books": "拖放导入书籍",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "正在加载书库...",
|
||||
"{{count}} books refreshed_other": "已刷新 {{count}} 本书",
|
||||
"Failed to refresh metadata": "刷新元数据失败",
|
||||
"Refresh Metadata": "刷新元数据"
|
||||
"Refresh Metadata": "刷新元数据",
|
||||
"Keyboard Shortcuts": "键盘快捷键",
|
||||
"View all keyboard shortcuts": "查看所有键盘快捷键",
|
||||
"Switch Sidebar Tab": "切换侧边栏标签",
|
||||
"Toggle Notebook": "显示/隐藏笔记本",
|
||||
"Search in Book": "在书中搜索",
|
||||
"Toggle Scroll Mode": "切换滚动模式",
|
||||
"Toggle Select Mode": "切换选择模式",
|
||||
"Toggle Bookmark": "切换书签",
|
||||
"Toggle Text to Speech": "切换文字转语音",
|
||||
"Play / Pause TTS": "播放 / 暂停朗读",
|
||||
"Toggle Paragraph Mode": "切换段落模式",
|
||||
"Highlight Selection": "高亮选中内容",
|
||||
"Underline Selection": "为选中内容添加下划线",
|
||||
"Annotate Selection": "为选中内容添加注释",
|
||||
"Search Selection": "搜索选中内容",
|
||||
"Copy Selection": "复制选中内容",
|
||||
"Translate Selection": "翻译选中内容",
|
||||
"Dictionary Lookup": "词典查询",
|
||||
"Wikipedia Lookup": "维基百科查询",
|
||||
"Read Aloud Selection": "朗读选中内容",
|
||||
"Proofread Selection": "校对选中内容",
|
||||
"Open Settings": "打开设置",
|
||||
"Open Command Palette": "打开命令面板",
|
||||
"Show Keyboard Shortcuts": "显示键盘快捷键",
|
||||
"Open Books": "打开书库",
|
||||
"Toggle Fullscreen": "切换全屏",
|
||||
"Close Window": "关闭窗口",
|
||||
"Quit App": "退出应用",
|
||||
"Go Left / Previous Page": "向左 / 上一页",
|
||||
"Go Right / Next Page": "向右 / 下一页",
|
||||
"Go Up": "向上",
|
||||
"Go Down": "向下",
|
||||
"Previous Chapter": "上一章",
|
||||
"Next Chapter": "下一章",
|
||||
"Scroll Half Page Down": "向下滚动半页",
|
||||
"Scroll Half Page Up": "向上滚动半页",
|
||||
"Save Note": "保存笔记"
|
||||
}
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
"RTL Direction": "從右向左",
|
||||
"Maximum Column Height": "最大列高",
|
||||
"Maximum Column Width": "最大列寬",
|
||||
"Continuous Scroll": "連續滾動",
|
||||
"Fullscreen": "全螢幕",
|
||||
"No supported files found. Supported formats: {{formats}}": "未找到支援的檔案。支援的格式:{{formats}}",
|
||||
"Drop to Import Books": "拖放導入書籍",
|
||||
@@ -1089,5 +1088,42 @@
|
||||
"Loading library...": "正在載入書庫...",
|
||||
"{{count}} books refreshed_other": "已重新整理 {{count}} 本書",
|
||||
"Failed to refresh metadata": "重新整理中繼資料失敗",
|
||||
"Refresh Metadata": "重新整理中繼資料"
|
||||
"Refresh Metadata": "重新整理中繼資料",
|
||||
"Keyboard Shortcuts": "鍵盤快捷鍵",
|
||||
"View all keyboard shortcuts": "查看所有鍵盤快捷鍵",
|
||||
"Switch Sidebar Tab": "切換側邊欄標籤",
|
||||
"Toggle Notebook": "顯示/隱藏筆記本",
|
||||
"Search in Book": "在書中搜尋",
|
||||
"Toggle Scroll Mode": "切換捲動模式",
|
||||
"Toggle Select Mode": "切換選取模式",
|
||||
"Toggle Bookmark": "切換書籤",
|
||||
"Toggle Text to Speech": "切換文字轉語音",
|
||||
"Play / Pause TTS": "播放 / 暫停朗讀",
|
||||
"Toggle Paragraph Mode": "切換段落模式",
|
||||
"Highlight Selection": "醒目標示選取內容",
|
||||
"Underline Selection": "為選取內容加底線",
|
||||
"Annotate Selection": "為選取內容加註釋",
|
||||
"Search Selection": "搜尋選取內容",
|
||||
"Copy Selection": "複製選取內容",
|
||||
"Translate Selection": "翻譯選取內容",
|
||||
"Dictionary Lookup": "字典查詢",
|
||||
"Wikipedia Lookup": "維基百科查詢",
|
||||
"Read Aloud Selection": "朗讀選取內容",
|
||||
"Proofread Selection": "校對選取內容",
|
||||
"Open Settings": "開啟設定",
|
||||
"Open Command Palette": "開啟指令面板",
|
||||
"Show Keyboard Shortcuts": "顯示鍵盤快捷鍵",
|
||||
"Open Books": "開啟書庫",
|
||||
"Toggle Fullscreen": "切換全螢幕",
|
||||
"Close Window": "關閉視窗",
|
||||
"Quit App": "結束應用程式",
|
||||
"Go Left / Previous Page": "向左 / 上一頁",
|
||||
"Go Right / Next Page": "向右 / 下一頁",
|
||||
"Go Up": "向上",
|
||||
"Go Down": "向下",
|
||||
"Previous Chapter": "上一章",
|
||||
"Next Chapter": "下一章",
|
||||
"Scroll Half Page Down": "向下捲動半頁",
|
||||
"Scroll Half Page Up": "向上捲動半頁",
|
||||
"Save Note": "儲存筆記"
|
||||
}
|
||||
|
||||
@@ -1,41 +1,120 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
|
||||
// Use dynamic import to avoid module resolution issues in test
|
||||
const getModule = async () => {
|
||||
return await import('../../helpers/shortcuts');
|
||||
};
|
||||
|
||||
const getDefaults = async () => {
|
||||
const mod = await import('../../helpers/shortcuts');
|
||||
const mod = await getModule();
|
||||
return mod.loadShortcuts();
|
||||
};
|
||||
|
||||
describe('Shortcut entry structure', () => {
|
||||
it('each shortcut entry has keys, description, and section', async () => {
|
||||
const shortcuts = await getDefaults();
|
||||
for (const [name, entry] of Object.entries(shortcuts)) {
|
||||
expect(entry, `${name} should have keys array`).toHaveProperty('keys');
|
||||
expect(Array.isArray(entry.keys), `${name}.keys should be an array`).toBe(true);
|
||||
expect(entry, `${name} should have description`).toHaveProperty('description');
|
||||
expect(typeof entry.description, `${name}.description should be a string`).toBe('string');
|
||||
expect(entry, `${name} should have section`).toHaveProperty('section');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('TTS play/pause shortcut', () => {
|
||||
it('should have onTTSPlayPause shortcut with space', async () => {
|
||||
const shortcuts = await getDefaults();
|
||||
expect(shortcuts.onTTSPlayPause).toEqual([' ']);
|
||||
expect(shortcuts.onTTSPlayPause.keys).toEqual([' ']);
|
||||
});
|
||||
|
||||
it('should also have space in onGoRight as fallback', async () => {
|
||||
const shortcuts = await getDefaults();
|
||||
expect(shortcuts.onGoRight).toContain(' ');
|
||||
expect(shortcuts.onGoRight.keys).toContain(' ');
|
||||
});
|
||||
});
|
||||
|
||||
describe('TTS navigation shortcuts', () => {
|
||||
it('should have onTTSGoNextSentence shortcut with ctrl+] and cmd+]', async () => {
|
||||
const shortcuts = await getDefaults();
|
||||
expect(shortcuts.onTTSGoNextSentence).toEqual(['ctrl+]', 'cmd+]']);
|
||||
expect(shortcuts.onTTSGoNextSentence.keys).toEqual(['ctrl+]', 'cmd+]']);
|
||||
});
|
||||
|
||||
it('should have onTTSGoPreviousSentence shortcut with ctrl+[ and cmd+[', async () => {
|
||||
const shortcuts = await getDefaults();
|
||||
expect(shortcuts.onTTSGoPreviousSentence).toEqual(['ctrl+[', 'cmd+[']);
|
||||
expect(shortcuts.onTTSGoPreviousSentence.keys).toEqual(['ctrl+[', 'cmd+[']);
|
||||
});
|
||||
|
||||
it('should have onTTSGoNextParagraph shortcut with ctrl+shift+} and cmd+shift+}', async () => {
|
||||
const shortcuts = await getDefaults();
|
||||
expect(shortcuts.onTTSGoNextParagraph).toEqual(['ctrl+shift+}', 'cmd+shift+}']);
|
||||
expect(shortcuts.onTTSGoNextParagraph.keys).toEqual(['ctrl+shift+}', 'cmd+shift+}']);
|
||||
});
|
||||
|
||||
it('should have onTTSGoPreviousParagraph shortcut with ctrl+shift+{ and cmd+shift+{', async () => {
|
||||
const shortcuts = await getDefaults();
|
||||
expect(shortcuts.onTTSGoPreviousParagraph).toEqual(['ctrl+shift+{', 'cmd+shift+{']);
|
||||
expect(shortcuts.onTTSGoPreviousParagraph.keys).toEqual(['ctrl+shift+{', 'cmd+shift+{']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getShortcutsForDisplay', () => {
|
||||
it('returns sections in the correct order', async () => {
|
||||
const mod = await getModule();
|
||||
const result = mod.getShortcutsForDisplay(true);
|
||||
const sectionNames = result.map((s) => s.section);
|
||||
expect(sectionNames).toEqual([
|
||||
'General',
|
||||
'Navigation',
|
||||
'Text to Speech',
|
||||
'Selection',
|
||||
'Zoom',
|
||||
'Window',
|
||||
]);
|
||||
});
|
||||
|
||||
it('excludes entries with empty section', async () => {
|
||||
const mod = await getModule();
|
||||
const result = mod.getShortcutsForDisplay(true);
|
||||
const allDescriptions = result.flatMap((s) => s.items.map((i) => i.description));
|
||||
// onEscape and onSaveNote have empty section, should be excluded
|
||||
const shortcuts = mod.loadShortcuts();
|
||||
const hiddenEntries = Object.values(shortcuts).filter((e) => e.section === '');
|
||||
for (const hidden of hiddenEntries) {
|
||||
expect(allDescriptions).not.toContain(hidden.description);
|
||||
}
|
||||
});
|
||||
|
||||
it('each item has a description and non-empty keys', async () => {
|
||||
const mod = await getModule();
|
||||
const result = mod.getShortcutsForDisplay(false);
|
||||
for (const section of result) {
|
||||
for (const item of section.items) {
|
||||
expect(item.description.length).toBeGreaterThan(0);
|
||||
expect(item.keys.length).toBeGreaterThan(0);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it('on Mac, returns cmd-prefixed keys for onShowSearchBar', async () => {
|
||||
const mod = await getModule();
|
||||
const result = mod.getShortcutsForDisplay(true);
|
||||
const general = result.find((s) => s.section === 'General');
|
||||
const searchItem = general?.items.find((i) =>
|
||||
i.keys.some((k) => k.includes('cmd') || k.includes('f')),
|
||||
);
|
||||
expect(searchItem).toBeDefined();
|
||||
expect(searchItem!.keys.some((k) => k.includes('cmd'))).toBe(true);
|
||||
expect(searchItem!.keys.some((k) => k.includes('ctrl'))).toBe(false);
|
||||
});
|
||||
|
||||
it('on non-Mac, returns ctrl-prefixed keys for onShowSearchBar', async () => {
|
||||
const mod = await getModule();
|
||||
const result = mod.getShortcutsForDisplay(false);
|
||||
const general = result.find((s) => s.section === 'General');
|
||||
const searchItem = general?.items.find((i) =>
|
||||
i.keys.some((k) => k.includes('ctrl') || k.includes('f')),
|
||||
);
|
||||
expect(searchItem).toBeDefined();
|
||||
expect(searchItem!.keys.some((k) => k.includes('ctrl'))).toBe(true);
|
||||
expect(searchItem!.keys.some((k) => k.includes('cmd'))).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { formatKeyForDisplay, filterPlatformKeys } from '../../utils/shortcutKeys';
|
||||
|
||||
describe('formatKeyForDisplay', () => {
|
||||
describe('Mac platform', () => {
|
||||
it('maps ctrl to ⌘', () => {
|
||||
expect(formatKeyForDisplay('ctrl+f', true)).toBe('⌘F');
|
||||
});
|
||||
|
||||
it('maps cmd to ⌘', () => {
|
||||
expect(formatKeyForDisplay('cmd+f', true)).toBe('⌘F');
|
||||
});
|
||||
|
||||
it('maps alt/opt to ⌥', () => {
|
||||
expect(formatKeyForDisplay('alt+ArrowLeft', true)).toBe('⌥←');
|
||||
expect(formatKeyForDisplay('opt+ArrowLeft', true)).toBe('⌥←');
|
||||
});
|
||||
|
||||
it('maps shift to ⇧', () => {
|
||||
expect(formatKeyForDisplay('shift+j', true)).toBe('⇧J');
|
||||
});
|
||||
|
||||
it('concatenates without separator on Mac', () => {
|
||||
expect(formatKeyForDisplay('cmd+shift+p', true)).toBe('⌘⇧P');
|
||||
});
|
||||
});
|
||||
|
||||
describe('non-Mac platform', () => {
|
||||
it('maps ctrl to Ctrl', () => {
|
||||
expect(formatKeyForDisplay('ctrl+f', false)).toBe('Ctrl+F');
|
||||
});
|
||||
|
||||
it('maps alt to Alt', () => {
|
||||
expect(formatKeyForDisplay('alt+ArrowLeft', false)).toBe('Alt+←');
|
||||
});
|
||||
|
||||
it('maps shift to Shift', () => {
|
||||
expect(formatKeyForDisplay('shift+j', false)).toBe('Shift+J');
|
||||
});
|
||||
|
||||
it('joins with + on non-Mac', () => {
|
||||
expect(formatKeyForDisplay('ctrl+shift+p', false)).toBe('Ctrl+Shift+P');
|
||||
});
|
||||
});
|
||||
|
||||
describe('special keys', () => {
|
||||
it('maps arrow keys to symbols', () => {
|
||||
expect(formatKeyForDisplay('ArrowLeft', false)).toBe('←');
|
||||
expect(formatKeyForDisplay('ArrowRight', false)).toBe('→');
|
||||
expect(formatKeyForDisplay('ArrowUp', false)).toBe('↑');
|
||||
expect(formatKeyForDisplay('ArrowDown', false)).toBe('↓');
|
||||
});
|
||||
|
||||
it('maps space to Space', () => {
|
||||
expect(formatKeyForDisplay(' ', false)).toBe('Space');
|
||||
});
|
||||
|
||||
it('maps Escape to Esc', () => {
|
||||
expect(formatKeyForDisplay('Escape', false)).toBe('Esc');
|
||||
});
|
||||
|
||||
it('maps PageDown and PageUp', () => {
|
||||
expect(formatKeyForDisplay('PageDown', false)).toBe('PgDn');
|
||||
expect(formatKeyForDisplay('PageUp', false)).toBe('PgUp');
|
||||
});
|
||||
|
||||
it('preserves F-keys', () => {
|
||||
expect(formatKeyForDisplay('F11', false)).toBe('F11');
|
||||
});
|
||||
|
||||
it('preserves Tab and Enter', () => {
|
||||
expect(formatKeyForDisplay('Tab', false)).toBe('Tab');
|
||||
expect(formatKeyForDisplay('Enter', false)).toBe('Enter');
|
||||
});
|
||||
});
|
||||
|
||||
describe('single character keys', () => {
|
||||
it('capitalizes single letter keys', () => {
|
||||
expect(formatKeyForDisplay('s', false)).toBe('S');
|
||||
expect(formatKeyForDisplay('s', true)).toBe('S');
|
||||
});
|
||||
|
||||
it('preserves special characters', () => {
|
||||
expect(formatKeyForDisplay(']', false)).toBe(']');
|
||||
expect(formatKeyForDisplay('[', false)).toBe('[');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('filterPlatformKeys', () => {
|
||||
it('on Mac, prefers cmd/opt keys over ctrl/alt', () => {
|
||||
expect(filterPlatformKeys(['ctrl+f', 'cmd+f'], true)).toEqual(['cmd+f']);
|
||||
});
|
||||
|
||||
it('on non-Mac, prefers ctrl/alt keys over cmd/opt', () => {
|
||||
expect(filterPlatformKeys(['ctrl+f', 'cmd+f'], false)).toEqual(['ctrl+f']);
|
||||
});
|
||||
|
||||
it('includes platform-agnostic keys on both platforms', () => {
|
||||
expect(filterPlatformKeys(['s'], true)).toEqual(['s']);
|
||||
expect(filterPlatformKeys(['s'], false)).toEqual(['s']);
|
||||
});
|
||||
|
||||
it('on Mac, prefers opt over alt', () => {
|
||||
expect(filterPlatformKeys(['opt+ArrowLeft', 'alt+ArrowLeft'], true)).toEqual(['opt+ArrowLeft']);
|
||||
});
|
||||
|
||||
it('on non-Mac, prefers alt over opt', () => {
|
||||
expect(filterPlatformKeys(['opt+ArrowLeft', 'alt+ArrowLeft'], false)).toEqual([
|
||||
'alt+ArrowLeft',
|
||||
]);
|
||||
});
|
||||
|
||||
it('returns all keys when none are platform-specific', () => {
|
||||
expect(filterPlatformKeys(['ArrowLeft', 'h', 'shift+ '], true)).toEqual([
|
||||
'ArrowLeft',
|
||||
'h',
|
||||
'shift+ ',
|
||||
]);
|
||||
});
|
||||
|
||||
it('mixes platform-specific and agnostic keys', () => {
|
||||
expect(filterPlatformKeys(['shift+f', 'ctrl+,', 'cmd+,'], true)).toEqual(['shift+f', 'cmd+,']);
|
||||
expect(filterPlatformKeys(['shift+f', 'ctrl+,', 'cmd+,'], false)).toEqual([
|
||||
'shift+f',
|
||||
'ctrl+,',
|
||||
]);
|
||||
});
|
||||
});
|
||||
@@ -54,6 +54,7 @@ import {
|
||||
import { LibraryGroupByType } from '@/types/settings';
|
||||
import { BookMetadata } from '@/libs/document';
|
||||
import { AboutWindow } from '@/components/AboutWindow';
|
||||
import { KeyboardShortcutsHelp } from '@/components/KeyboardShortcutsHelp';
|
||||
import { BookDetailModal } from '@/components/metadata';
|
||||
import { UpdaterWindow } from '@/components/UpdaterWindow';
|
||||
import { CatalogDialog } from './components/OPDSDialog';
|
||||
@@ -968,6 +969,7 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
|
||||
</ModalPortal>
|
||||
)}
|
||||
<AboutWindow />
|
||||
<KeyboardShortcutsHelp />
|
||||
<UpdaterWindow />
|
||||
<MigrateDataWindow />
|
||||
<BackupWindow onPullLibrary={pullLibrary} />
|
||||
|
||||
@@ -22,6 +22,7 @@ import { mountAdditionalFonts } from '@/styles/fonts';
|
||||
import { isTauriAppPlatform } from '@/services/environment';
|
||||
import { getSysFontsList, setSystemUIVisibility } from '@/utils/bridge';
|
||||
import { AboutWindow } from '@/components/AboutWindow';
|
||||
import { KeyboardShortcutsHelp } from '@/components/KeyboardShortcutsHelp';
|
||||
import { UpdaterWindow } from '@/components/UpdaterWindow';
|
||||
import { KOSyncSettingsWindow } from './KOSyncSettings';
|
||||
import { ReadwiseSettingsWindow } from './ReadwiseSettings';
|
||||
@@ -168,6 +169,7 @@ const Reader: React.FC<{ ids?: string }> = ({ ids }) => {
|
||||
<Suspense fallback={<div className='full-height'></div>}>
|
||||
<ReaderContent ids={ids} settings={settings} />
|
||||
<AboutWindow />
|
||||
<KeyboardShortcutsHelp />
|
||||
<UpdaterWindow />
|
||||
<KOSyncSettingsWindow />
|
||||
<ReadwiseSettingsWindow />
|
||||
|
||||
@@ -8,6 +8,7 @@ import { useBookDataStore } from '@/store/bookDataStore';
|
||||
import { useCommandPalette } from '@/components/command-palette';
|
||||
import { tauriHandleClose, tauriHandleToggleFullScreen, tauriQuitApp } from '@/utils/window';
|
||||
import { eventDispatcher } from '@/utils/event';
|
||||
import { setShortcutsDialogVisible } from '@/components/KeyboardShortcutsHelp';
|
||||
import { MAX_ZOOM_LEVEL, MIN_ZOOM_LEVEL, ZOOM_STEP } from '@/services/constants';
|
||||
import { viewPagination } from './usePagination';
|
||||
import { getStyles } from '@/utils/style';
|
||||
@@ -334,6 +335,7 @@ const useBookShortcuts = ({ sideBarBookKey, bookKeys }: UseBookShortcutsProps) =
|
||||
onZoomOut: zoomOut,
|
||||
onResetZoom: resetZoom,
|
||||
onOpenCommandPalette: openCommandPalette,
|
||||
onOpenShortcutsHelp: () => setShortcutsDialogVisible(true),
|
||||
},
|
||||
[sideBarBookKey, bookKeys],
|
||||
);
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
import { useTranslation } from '@/hooks/useTranslation';
|
||||
import { isMacPlatform } from '@/services/environment';
|
||||
import { getShortcutsForDisplay } from '@/helpers/shortcuts';
|
||||
import { formatKeyForDisplay } from '@/utils/shortcutKeys';
|
||||
import Dialog from './Dialog';
|
||||
import Link from './Link';
|
||||
|
||||
export const setShortcutsDialogVisible = (visible: boolean) => {
|
||||
const dialog = document.getElementById('shortcuts_help');
|
||||
if (dialog) {
|
||||
const event = new CustomEvent('setDialogVisibility', {
|
||||
detail: { visible },
|
||||
});
|
||||
dialog.dispatchEvent(event);
|
||||
}
|
||||
};
|
||||
|
||||
export const KeyboardShortcutsHelp = () => {
|
||||
const _ = useTranslation();
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const isMac = isMacPlatform();
|
||||
|
||||
const sections = useMemo(() => getShortcutsForDisplay(isMac), [isMac]);
|
||||
|
||||
// Split sections into two balanced columns by item count
|
||||
const [leftColumn, rightColumn] = useMemo(() => {
|
||||
const totalItems = sections.reduce((sum, s) => sum + s.items.length + 1, 0); // +1 for header
|
||||
const left: typeof sections = [];
|
||||
const right: typeof sections = [];
|
||||
let leftCount = 0;
|
||||
for (const section of sections) {
|
||||
const sectionWeight = section.items.length + 1;
|
||||
if (leftCount <= totalItems / 2) {
|
||||
left.push(section);
|
||||
leftCount += sectionWeight;
|
||||
} else {
|
||||
right.push(section);
|
||||
}
|
||||
}
|
||||
return [left, right];
|
||||
}, [sections]);
|
||||
|
||||
const renderSection = useCallback(
|
||||
(section: (typeof sections)[number]) => (
|
||||
<div key={section.section} className='mb-4'>
|
||||
<h3 className='text-base-content/70 mb-2 text-xs font-semibold uppercase tracking-wide'>
|
||||
{_(section.section)}
|
||||
</h3>
|
||||
<div className='divide-base-200 divide-y'>
|
||||
{section.items.map((item) => (
|
||||
<div key={item.description} className='flex items-center justify-between gap-4 py-1.5'>
|
||||
<span className='text-base-content text-sm'>{_(item.description)}</span>
|
||||
<div className='flex shrink-0 gap-1'>
|
||||
{item.keys.map((key) => (
|
||||
<kbd
|
||||
key={key}
|
||||
className='border-base-300 bg-base-200 text-base-content inline-flex h-[22px] min-w-[22px] items-center justify-center rounded border px-1.5 text-xs shadow-sm'
|
||||
style={{ fontFamily: 'monospace' }}
|
||||
>
|
||||
{formatKeyForDisplay(key, isMac)}
|
||||
</kbd>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
),
|
||||
[_, isMac],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
const handleCustomEvent = (event: CustomEvent) => {
|
||||
setIsOpen(event.detail.visible);
|
||||
};
|
||||
|
||||
const el = document.getElementById('shortcuts_help');
|
||||
if (el) {
|
||||
el.addEventListener('setDialogVisibility', handleCustomEvent as EventListener);
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (el) {
|
||||
el.removeEventListener('setDialogVisibility', handleCustomEvent as EventListener);
|
||||
}
|
||||
};
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const handleKeyDown = (event: KeyboardEvent) => {
|
||||
if (event.key !== '?') return;
|
||||
|
||||
const activeElement = document.activeElement as HTMLElement;
|
||||
const isInteractive =
|
||||
activeElement.tagName === 'INPUT' ||
|
||||
activeElement.tagName === 'TEXTAREA' ||
|
||||
activeElement.isContentEditable;
|
||||
if (isInteractive) return;
|
||||
|
||||
event.preventDefault();
|
||||
setIsOpen((prev) => !prev);
|
||||
};
|
||||
|
||||
window.addEventListener('keydown', handleKeyDown);
|
||||
return () => window.removeEventListener('keydown', handleKeyDown);
|
||||
}, []);
|
||||
|
||||
const handleClose = () => {
|
||||
setIsOpen(false);
|
||||
// Move focus away from the dialog so the '?' key listener works immediately
|
||||
(document.activeElement as HTMLElement)?.blur();
|
||||
};
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
id='shortcuts_help'
|
||||
isOpen={isOpen}
|
||||
title={_('Keyboard Shortcuts')}
|
||||
onClose={handleClose}
|
||||
boxClassName='sm:!w-[560px] md:!w-[780px] sm:!max-w-[90vw] sm:h-auto sm:!max-h-[80vh]'
|
||||
>
|
||||
{isOpen && (
|
||||
<div className='shortcuts-content pb-6 sm:pb-2'>
|
||||
<div className='md:grid md:grid-cols-2 md:gap-6'>
|
||||
<div>{leftColumn.map(renderSection)}</div>
|
||||
<div>{rightColumn.map(renderSection)}</div>
|
||||
</div>
|
||||
<div className='border-base-200 mt-2 border-t pt-3 text-center'>
|
||||
<Link
|
||||
href='https://github.com/readest/readest/wiki/Keyboard-Shortcuts-Reference-Guide'
|
||||
className='text-primary text-sm underline'
|
||||
>
|
||||
{_('View all keyboard shortcuts')}
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</Dialog>
|
||||
);
|
||||
};
|
||||
@@ -1,71 +1,339 @@
|
||||
import { stubTranslation as _ } from '@/utils/misc';
|
||||
import { filterPlatformKeys } from '@/utils/shortcutKeys';
|
||||
|
||||
export type ShortcutEntry = {
|
||||
keys: string[];
|
||||
description: string;
|
||||
section: string;
|
||||
};
|
||||
|
||||
const DEFAULT_SHORTCUTS = {
|
||||
onSwitchSideBar: ['ctrl+Tab', 'opt+Tab', 'alt+Tab'],
|
||||
onToggleSideBar: ['s'],
|
||||
onToggleNotebook: ['n'],
|
||||
onShowSearchBar: ['ctrl+f', 'cmd+f'],
|
||||
onToggleScrollMode: ['shift+j'],
|
||||
onToggleSelectMode: ['shift+s'],
|
||||
onToggleBookmark: ['ctrl+d', 'cmd+d'],
|
||||
onToggleTTS: ['t'],
|
||||
onTTSPlayPause: [' '],
|
||||
onTTSGoNextSentence: ['ctrl+]', 'cmd+]'],
|
||||
onTTSGoPreviousSentence: ['ctrl+[', 'cmd+['],
|
||||
onTTSGoNextParagraph: ['ctrl+shift+}', 'cmd+shift+}'],
|
||||
onTTSGoPreviousParagraph: ['ctrl+shift+{', 'cmd+shift+{'],
|
||||
onToggleParagraphMode: ['shift+p'],
|
||||
onHighlightSelection: ['ctrl+h', 'cmd+h'],
|
||||
onUnderlineSelection: ['ctrl+u', 'cmd+u'],
|
||||
onAnnotateSelection: ['ctrl+n', 'cmd+n'],
|
||||
onSearchSelection: ['ctrl+f', 'cmd+f'],
|
||||
onCopySelection: ['ctrl+c', 'cmd+c'],
|
||||
onTranslateSelection: ['ctrl+t', 'cmd+t'],
|
||||
onDictionarySelection: ['ctrl+d', 'cmd+d'],
|
||||
onWikipediaSelection: ['ctrl+w', 'cmd+w'],
|
||||
onReadAloudSelection: ['ctrl+r', 'cmd+r'],
|
||||
onProofreadSelection: ['ctrl+p', 'cmd+p'],
|
||||
onOpenFontLayoutSettings: ['shift+f', 'ctrl+,', 'cmd+,'],
|
||||
onOpenCommandPalette: ['ctrl+shift+p', 'cmd+shift+p'],
|
||||
onOpenBooks: ['ctrl+o'],
|
||||
onReloadPage: ['shift+r'],
|
||||
onToggleFullscreen: ['F11'],
|
||||
onCloseWindow: ['ctrl+w', 'cmd+w'],
|
||||
onQuitApp: ['ctrl+q', 'cmd+q'],
|
||||
onGoLeft: ['ArrowLeft', 'h', 'shift+ '],
|
||||
onGoRight: ['ArrowRight', 'l', ' '],
|
||||
onGoUp: ['ArrowUp', 'k'],
|
||||
onGoDown: ['ArrowDown', 'j'],
|
||||
onGoNext: ['shift+j', 'shift+ArrowRight', 'shift+ArrowDown', 'PageDown'],
|
||||
onGoPrev: ['shift+k', 'shift+ArrowLeft', 'shift+ArrowUp', 'PageUp'],
|
||||
onGoLeftSection: ['opt+ArrowLeft', 'alt+ArrowLeft'],
|
||||
onGoRightSection: ['opt+ArrowRight', 'alt+ArrowRight'],
|
||||
onGoPrevSection: ['opt+ArrowUp', 'alt+ArrowUp'],
|
||||
onGoNextSection: ['opt+ArrowDown', 'alt+ArrowDown'],
|
||||
onGoHalfPageDown: ['shift+ArrowDown', 'd'],
|
||||
onGoHalfPageUp: ['shift+ArrowUp', 'u'],
|
||||
onGoBack: ['shift+ArrowLeft', 'shift+h', 'alt+ArrowLeft'],
|
||||
onGoForward: ['shift+ArrowRight', 'shift+l', 'alt+ArrowRight'],
|
||||
onZoomIn: ['ctrl+=', 'cmd+=', 'shift+='],
|
||||
onZoomOut: ['ctrl+-', 'cmd+-', 'shift+-'],
|
||||
onResetZoom: ['ctrl+0', 'cmd+0'],
|
||||
onSaveNote: ['ctrl+Enter'],
|
||||
onEscape: ['Escape'],
|
||||
onSwitchSideBar: {
|
||||
keys: ['ctrl+Tab', 'opt+Tab', 'alt+Tab'],
|
||||
description: _('Switch Sidebar Tab'),
|
||||
section: 'General',
|
||||
},
|
||||
onToggleSideBar: {
|
||||
keys: ['s'],
|
||||
description: _('Toggle Sidebar'),
|
||||
section: 'General',
|
||||
},
|
||||
onToggleNotebook: {
|
||||
keys: ['n'],
|
||||
description: _('Toggle Notebook'),
|
||||
section: 'General',
|
||||
},
|
||||
onShowSearchBar: {
|
||||
keys: ['ctrl+f', 'cmd+f'],
|
||||
description: _('Search in Book'),
|
||||
section: 'General',
|
||||
},
|
||||
onToggleScrollMode: {
|
||||
keys: ['shift+j'],
|
||||
description: _('Toggle Scroll Mode'),
|
||||
section: 'General',
|
||||
},
|
||||
onToggleSelectMode: {
|
||||
keys: ['shift+s'],
|
||||
description: _('Toggle Select Mode'),
|
||||
section: 'General',
|
||||
},
|
||||
onToggleBookmark: {
|
||||
keys: ['ctrl+d', 'cmd+d'],
|
||||
description: _('Toggle Bookmark'),
|
||||
section: 'General',
|
||||
},
|
||||
onToggleTTS: {
|
||||
keys: ['t'],
|
||||
description: _('Toggle Text to Speech'),
|
||||
section: 'Text to Speech',
|
||||
},
|
||||
onTTSPlayPause: {
|
||||
keys: [' '],
|
||||
description: _('Play / Pause TTS'),
|
||||
section: '',
|
||||
},
|
||||
onTTSGoNextSentence: {
|
||||
keys: ['ctrl+]', 'cmd+]'],
|
||||
description: _('Next Sentence'),
|
||||
section: 'Text to Speech',
|
||||
},
|
||||
onTTSGoPreviousSentence: {
|
||||
keys: ['ctrl+[', 'cmd+['],
|
||||
description: _('Previous Sentence'),
|
||||
section: 'Text to Speech',
|
||||
},
|
||||
onTTSGoNextParagraph: {
|
||||
keys: ['ctrl+shift+}', 'cmd+shift+}'],
|
||||
description: _('Next Paragraph'),
|
||||
section: 'Text to Speech',
|
||||
},
|
||||
onTTSGoPreviousParagraph: {
|
||||
keys: ['ctrl+shift+{', 'cmd+shift+{'],
|
||||
description: _('Previous Paragraph'),
|
||||
section: 'Text to Speech',
|
||||
},
|
||||
onToggleParagraphMode: {
|
||||
keys: ['shift+p'],
|
||||
description: _('Toggle Paragraph Mode'),
|
||||
section: 'General',
|
||||
},
|
||||
onHighlightSelection: {
|
||||
keys: ['ctrl+h', 'cmd+h'],
|
||||
description: _('Highlight Selection'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onUnderlineSelection: {
|
||||
keys: ['ctrl+u', 'cmd+u'],
|
||||
description: _('Underline Selection'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onAnnotateSelection: {
|
||||
keys: ['ctrl+n', 'cmd+n'],
|
||||
description: _('Annotate Selection'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onSearchSelection: {
|
||||
keys: ['ctrl+f', 'cmd+f'],
|
||||
description: _('Search Selection'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onCopySelection: {
|
||||
keys: ['ctrl+c', 'cmd+c'],
|
||||
description: _('Copy Selection'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onTranslateSelection: {
|
||||
keys: ['ctrl+t', 'cmd+t'],
|
||||
description: _('Translate Selection'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onDictionarySelection: {
|
||||
keys: ['ctrl+d', 'cmd+d'],
|
||||
description: _('Dictionary Lookup'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onWikipediaSelection: {
|
||||
keys: ['ctrl+w', 'cmd+w'],
|
||||
description: _('Wikipedia Lookup'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onReadAloudSelection: {
|
||||
keys: ['ctrl+r', 'cmd+r'],
|
||||
description: _('Read Aloud Selection'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onProofreadSelection: {
|
||||
keys: ['ctrl+p', 'cmd+p'],
|
||||
description: _('Proofread Selection'),
|
||||
section: 'Selection',
|
||||
},
|
||||
onOpenFontLayoutSettings: {
|
||||
keys: ['shift+f', 'ctrl+,', 'cmd+,'],
|
||||
description: _('Open Settings'),
|
||||
section: 'General',
|
||||
},
|
||||
onOpenCommandPalette: {
|
||||
keys: ['ctrl+shift+p', 'cmd+shift+p'],
|
||||
description: _('Open Command Palette'),
|
||||
section: 'General',
|
||||
},
|
||||
onOpenShortcutsHelp: {
|
||||
keys: ['shift+?'],
|
||||
description: _('Show Keyboard Shortcuts'),
|
||||
section: 'General',
|
||||
},
|
||||
onOpenBooks: {
|
||||
keys: ['ctrl+o'],
|
||||
description: _('Open Books'),
|
||||
section: 'General',
|
||||
},
|
||||
onReloadPage: {
|
||||
keys: ['shift+r'],
|
||||
description: _('Reload Page'),
|
||||
section: 'General',
|
||||
},
|
||||
onToggleFullscreen: {
|
||||
keys: ['F11'],
|
||||
description: _('Toggle Fullscreen'),
|
||||
section: 'Window',
|
||||
},
|
||||
onCloseWindow: {
|
||||
keys: ['ctrl+w', 'cmd+w'],
|
||||
description: _('Close Window'),
|
||||
section: 'Window',
|
||||
},
|
||||
onQuitApp: {
|
||||
keys: ['ctrl+q', 'cmd+q'],
|
||||
description: _('Quit App'),
|
||||
section: 'Window',
|
||||
},
|
||||
onGoLeft: {
|
||||
keys: ['ArrowLeft', 'h', 'shift+ '],
|
||||
description: _('Go Left / Previous Page'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoRight: {
|
||||
keys: ['ArrowRight', 'l', ' '],
|
||||
description: _('Go Right / Next Page'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoUp: {
|
||||
keys: ['ArrowUp', 'k'],
|
||||
description: _('Go Up'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoDown: {
|
||||
keys: ['ArrowDown', 'j'],
|
||||
description: _('Go Down'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoNext: {
|
||||
keys: ['shift+j', 'shift+ArrowRight', 'shift+ArrowDown', 'PageDown'],
|
||||
description: _('Next Page'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoPrev: {
|
||||
keys: ['shift+k', 'shift+ArrowLeft', 'shift+ArrowUp', 'PageUp'],
|
||||
description: _('Previous Page'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoLeftSection: {
|
||||
keys: ['opt+ArrowLeft', 'alt+ArrowLeft'],
|
||||
description: _('Previous Chapter'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoRightSection: {
|
||||
keys: ['opt+ArrowRight', 'alt+ArrowRight'],
|
||||
description: _('Next Chapter'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoPrevSection: {
|
||||
keys: ['opt+ArrowUp', 'alt+ArrowUp'],
|
||||
description: _('Previous Chapter'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoNextSection: {
|
||||
keys: ['opt+ArrowDown', 'alt+ArrowDown'],
|
||||
description: _('Next Chapter'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoHalfPageDown: {
|
||||
keys: ['shift+ArrowDown', 'd'],
|
||||
description: _('Scroll Half Page Down'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoHalfPageUp: {
|
||||
keys: ['shift+ArrowUp', 'u'],
|
||||
description: _('Scroll Half Page Up'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoBack: {
|
||||
keys: ['shift+ArrowLeft', 'shift+h', 'alt+ArrowLeft'],
|
||||
description: _('Go Back'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onGoForward: {
|
||||
keys: ['shift+ArrowRight', 'shift+l', 'alt+ArrowRight'],
|
||||
description: _('Go Forward'),
|
||||
section: 'Navigation',
|
||||
},
|
||||
onZoomIn: {
|
||||
keys: ['ctrl+=', 'cmd+=', 'shift+='],
|
||||
description: _('Zoom In'),
|
||||
section: 'Zoom',
|
||||
},
|
||||
onZoomOut: {
|
||||
keys: ['ctrl+-', 'cmd+-', 'shift+-'],
|
||||
description: _('Zoom Out'),
|
||||
section: 'Zoom',
|
||||
},
|
||||
onResetZoom: {
|
||||
keys: ['ctrl+0', 'cmd+0'],
|
||||
description: _('Reset Zoom'),
|
||||
section: 'Zoom',
|
||||
},
|
||||
onSaveNote: {
|
||||
keys: ['ctrl+Enter'],
|
||||
description: _('Save Note'),
|
||||
section: '',
|
||||
},
|
||||
onEscape: {
|
||||
keys: ['Escape'],
|
||||
description: _('Close'),
|
||||
section: '',
|
||||
},
|
||||
};
|
||||
|
||||
export type ShortcutConfig = {
|
||||
[K in keyof typeof DEFAULT_SHORTCUTS]: string[];
|
||||
[K in keyof typeof DEFAULT_SHORTCUTS]: ShortcutEntry;
|
||||
};
|
||||
|
||||
export const SHORTCUT_SECTIONS = [
|
||||
'General',
|
||||
'Navigation',
|
||||
'Text to Speech',
|
||||
'Selection',
|
||||
'Zoom',
|
||||
'Window',
|
||||
] as const;
|
||||
|
||||
type ShortcutDisplayItem = {
|
||||
description: string;
|
||||
keys: string[];
|
||||
};
|
||||
|
||||
type ShortcutDisplaySection = {
|
||||
section: string;
|
||||
items: ShortcutDisplayItem[];
|
||||
};
|
||||
|
||||
export const getShortcutsForDisplay = (isMac: boolean): ShortcutDisplaySection[] => {
|
||||
const shortcuts = loadShortcuts();
|
||||
return SHORTCUT_SECTIONS.map((section) => {
|
||||
const itemMap = new Map<string, ShortcutDisplayItem>();
|
||||
for (const entry of Object.values(shortcuts)) {
|
||||
if (entry.section !== section) continue;
|
||||
const keys = filterPlatformKeys(entry.keys, isMac);
|
||||
const existing = itemMap.get(entry.description);
|
||||
if (existing) {
|
||||
// Merge keys for entries with the same description
|
||||
for (const key of keys) {
|
||||
if (!existing.keys.includes(key)) {
|
||||
existing.keys.push(key);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
itemMap.set(entry.description, { description: entry.description, keys });
|
||||
}
|
||||
}
|
||||
return { section, items: Array.from(itemMap.values()) };
|
||||
});
|
||||
};
|
||||
|
||||
// Load shortcuts from localStorage or fallback to defaults
|
||||
export const loadShortcuts = (): ShortcutConfig => {
|
||||
if (typeof localStorage === 'undefined') return DEFAULT_SHORTCUTS;
|
||||
const customShortcuts = JSON.parse(localStorage.getItem('customShortcuts') || '{}');
|
||||
return {
|
||||
...DEFAULT_SHORTCUTS,
|
||||
...customShortcuts,
|
||||
};
|
||||
const result = { ...DEFAULT_SHORTCUTS };
|
||||
for (const [key, value] of Object.entries(customShortcuts)) {
|
||||
const shortcutKey = key as keyof ShortcutConfig;
|
||||
if (shortcutKey in result) {
|
||||
// Custom overrides only replace keys, preserving description and section
|
||||
if (Array.isArray(value)) {
|
||||
result[shortcutKey] = { ...result[shortcutKey], keys: value };
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
// Save custom shortcuts to localStorage
|
||||
export const saveShortcuts = (shortcuts: ShortcutConfig) => {
|
||||
localStorage.setItem('customShortcuts', JSON.stringify(shortcuts));
|
||||
// Only persist the keys arrays to localStorage
|
||||
const keysOnly: Record<string, string[]> = {};
|
||||
for (const [key, entry] of Object.entries(shortcuts)) {
|
||||
keysOnly[key] = entry.keys;
|
||||
}
|
||||
localStorage.setItem('customShortcuts', JSON.stringify(keysOnly));
|
||||
};
|
||||
|
||||
@@ -61,11 +61,11 @@ const useShortcuts = (actions: KeyActionHandlers, dependencies: React.Dependency
|
||||
const handler = actionHandler as
|
||||
| ((event?: KeyboardEvent | MessageEvent) => void | boolean)
|
||||
| undefined;
|
||||
const shortcutList = shortcuts[shortcutKey as keyof ShortcutConfig];
|
||||
const shortcutEntry = shortcuts[shortcutKey as keyof ShortcutConfig];
|
||||
// console.log('Checking action:', shortcutKey);
|
||||
if (
|
||||
handler &&
|
||||
shortcutList?.some((shortcut) =>
|
||||
shortcutEntry?.keys?.some((shortcut) =>
|
||||
isShortcutMatch(shortcut, key, ctrlKey, altKey, metaKey, shiftKey),
|
||||
)
|
||||
) {
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
const MODIFIER_MAP_MAC: Record<string, string> = {
|
||||
ctrl: '⌘',
|
||||
cmd: '⌘',
|
||||
alt: '⌥',
|
||||
opt: '⌥',
|
||||
shift: '⇧',
|
||||
meta: '⌘',
|
||||
};
|
||||
|
||||
const MODIFIER_MAP_OTHER: Record<string, string> = {
|
||||
ctrl: 'Ctrl',
|
||||
cmd: 'Ctrl',
|
||||
alt: 'Alt',
|
||||
opt: 'Alt',
|
||||
shift: 'Shift',
|
||||
meta: 'Win',
|
||||
};
|
||||
|
||||
const MODIFIERS = new Set(['ctrl', 'cmd', 'alt', 'opt', 'shift', 'meta']);
|
||||
|
||||
const SPECIAL_KEYS: Record<string, string> = {
|
||||
arrowleft: '←',
|
||||
arrowright: '→',
|
||||
arrowup: '↑',
|
||||
arrowdown: '↓',
|
||||
escape: 'Esc',
|
||||
pagedown: 'PgDn',
|
||||
pageup: 'PgUp',
|
||||
' ': 'Space',
|
||||
tab: 'Tab',
|
||||
enter: 'Enter',
|
||||
};
|
||||
|
||||
export const formatKeyForDisplay = (key: string, isMac: boolean): string => {
|
||||
const parts = key.split('+');
|
||||
const modMap = isMac ? MODIFIER_MAP_MAC : MODIFIER_MAP_OTHER;
|
||||
|
||||
const modifiers: string[] = [];
|
||||
let baseKey = '';
|
||||
|
||||
for (const part of parts) {
|
||||
const lower = part.toLowerCase();
|
||||
if (MODIFIERS.has(lower)) {
|
||||
modifiers.push(modMap[lower]!);
|
||||
} else {
|
||||
baseKey = part;
|
||||
}
|
||||
}
|
||||
|
||||
// Map special keys or capitalize single characters
|
||||
const lowerBase = baseKey.toLowerCase();
|
||||
let displayKey: string;
|
||||
if (SPECIAL_KEYS[lowerBase]) {
|
||||
displayKey = SPECIAL_KEYS[lowerBase]!;
|
||||
} else if (baseKey.length === 1 && baseKey >= 'a' && baseKey <= 'z') {
|
||||
displayKey = baseKey.toUpperCase();
|
||||
} else {
|
||||
displayKey = baseKey;
|
||||
}
|
||||
|
||||
if (isMac) {
|
||||
return [...modifiers, displayKey].join('');
|
||||
}
|
||||
return [...modifiers, displayKey].join('+');
|
||||
};
|
||||
|
||||
const MAC_MODIFIERS = new Set(['cmd', 'opt']);
|
||||
const OTHER_MODIFIERS = new Set(['ctrl', 'alt']);
|
||||
|
||||
const hasModifier = (key: string, modifiers: Set<string>): boolean => {
|
||||
const parts = key.split('+');
|
||||
return parts.some((p) => modifiers.has(p.toLowerCase()));
|
||||
};
|
||||
|
||||
export const filterPlatformKeys = (keys: string[], isMac: boolean): string[] => {
|
||||
const preferred = isMac ? MAC_MODIFIERS : OTHER_MODIFIERS;
|
||||
const excluded = isMac ? OTHER_MODIFIERS : MAC_MODIFIERS;
|
||||
|
||||
const platformKeys = keys.filter((k) => hasModifier(k, preferred));
|
||||
const agnosticKeys = keys.filter((k) => !hasModifier(k, preferred) && !hasModifier(k, excluded));
|
||||
|
||||
if (platformKeys.length > 0 || agnosticKeys.length > 0) {
|
||||
return [...agnosticKeys, ...platformKeys];
|
||||
}
|
||||
|
||||
// Fallback: return all keys if none match
|
||||
return keys;
|
||||
};
|
||||
Reference in New Issue
Block a user