From 7bb1133706aa40f34ffb37ed5c3404401e145656 Mon Sep 17 00:00:00 2001 From: Huang Xin Date: Mon, 4 May 2026 02:07:27 +0800 Subject: [PATCH] feat(dictionaries): add DICT/Slob formats and Web Search providers (#4048) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extends the dictionary system beyond StarDict/MDict with two more open formats and a pluggable Web Search tier so users can fall back to online sources when their offline bundles miss a word. Formats: - DICT (dictd, RFC 2229): .index + .dict.dz bundles. Shared DictZip parsing with StarDict via new dictZip.ts helper. - Slob (Aard 2): self-contained .slob containers, zlib-compressed utf-8 entries; non-zlib/non-utf-8 bundles flagged unsupported at import. Web Search: - Built-in templates for Google, Urban Dictionary, Merriam-Webster (seeded into providerOrder, disabled by default). - Custom URL templates via %WORD% placeholder, URL-encoded at substitution; entries persist in settings.webSearches. - V1 renders an "Open in {{name}}" external link (iframe embedding is blocked by every major target site's X-Frame-Options). UI: - CustomDictionaries panel: flat outline-primary buttons for Import / Add Web Search, end-aligned type badges for a uniform column, hover states, compact tips block. - Dictionary popup: bottom-right Manage icon (tooltip-only) deep-links into Settings → Language → Dictionaries; rounded-corner clipping fix on the tab strip. File picker accepts .index and .slob; importer recognizes DICT and Slob bundles and reads bundle metadata for friendly names. Tests cover DICT/Slob readers and providers with real freedict-eng-nld fixtures, web search substitution + provider rendering, and the new store CRUD for web searches. Closes #4038 --- .../public/locales/ar/translation.json | 16 +- .../public/locales/bn/translation.json | 16 +- .../public/locales/bo/translation.json | 16 +- .../public/locales/de/translation.json | 16 +- .../public/locales/el/translation.json | 16 +- .../public/locales/es/translation.json | 16 +- .../public/locales/fa/translation.json | 16 +- .../public/locales/fr/translation.json | 16 +- .../public/locales/he/translation.json | 16 +- .../public/locales/hi/translation.json | 16 +- .../public/locales/hu/translation.json | 16 +- .../public/locales/id/translation.json | 16 +- .../public/locales/it/translation.json | 16 +- .../public/locales/ja/translation.json | 16 +- .../public/locales/ko/translation.json | 16 +- .../public/locales/ms/translation.json | 16 +- .../public/locales/nl/translation.json | 16 +- .../public/locales/pl/translation.json | 16 +- .../public/locales/pt/translation.json | 16 +- .../public/locales/ro/translation.json | 16 +- .../public/locales/ru/translation.json | 16 +- .../public/locales/si/translation.json | 16 +- .../public/locales/sl/translation.json | 16 +- .../public/locales/sv/translation.json | 16 +- .../public/locales/ta/translation.json | 16 +- .../public/locales/th/translation.json | 16 +- .../public/locales/tr/translation.json | 16 +- .../public/locales/uk/translation.json | 16 +- .../public/locales/vi/translation.json | 16 +- .../public/locales/zh-CN/translation.json | 16 +- .../public/locales/zh-TW/translation.json | 16 +- .../fixtures/data/dicts/eng-nld.slob | Bin 0 -> 526133 bytes .../data/dicts/freedict-eng-nld.dict.dz | Bin 0 -> 169693 bytes .../data/dicts/freedict-eng-nld.index | 7720 +++++++++++++++++ .../services/dictionaries/_dictFixtures.ts | 28 + .../services/dictionaries/_slobFixtures.ts | 24 + .../dictionaries/dictProvider.test.ts | 348 + .../services/dictionaries/registry.test.ts | 58 +- .../dictionaries/slobProvider.test.ts | 186 + .../dictionaries/webSearchProvider.test.ts | 145 + .../store/custom-dictionary-store.test.ts | 97 + .../reader/components/annotator/Annotator.tsx | 12 +- .../components/annotator/DictionaryPopup.tsx | 51 +- .../settings/CustomDictionaries.tsx | 254 +- .../src/components/settings/LangPanel.tsx | 15 +- apps/readest-app/src/hooks/useFileSelector.ts | 4 +- .../src/services/dictionaries/dictReader.ts | 261 + .../src/services/dictionaries/dictZip.ts | 247 + .../dictionaries/dictionaryService.ts | 141 +- .../dictionaries/providers/dictProvider.ts | 107 + .../dictionaries/providers/slobProvider.ts | 144 + .../providers/webSearchProvider.ts | 80 + .../src/services/dictionaries/registry.ts | 50 +- .../src/services/dictionaries/slobReader.ts | 476 + .../services/dictionaries/stardictReader.ts | 275 +- .../src/services/dictionaries/types.ts | 55 +- .../dictionaries/webSearchTemplates.ts | 63 + .../src/store/customDictionaryStore.ts | 113 +- 58 files changed, 11059 insertions(+), 391 deletions(-) create mode 100644 apps/readest-app/src/__tests__/fixtures/data/dicts/eng-nld.slob create mode 100644 apps/readest-app/src/__tests__/fixtures/data/dicts/freedict-eng-nld.dict.dz create mode 100644 apps/readest-app/src/__tests__/fixtures/data/dicts/freedict-eng-nld.index create mode 100644 apps/readest-app/src/__tests__/services/dictionaries/_dictFixtures.ts create mode 100644 apps/readest-app/src/__tests__/services/dictionaries/_slobFixtures.ts create mode 100644 apps/readest-app/src/__tests__/services/dictionaries/dictProvider.test.ts create mode 100644 apps/readest-app/src/__tests__/services/dictionaries/slobProvider.test.ts create mode 100644 apps/readest-app/src/__tests__/services/dictionaries/webSearchProvider.test.ts create mode 100644 apps/readest-app/src/__tests__/store/custom-dictionary-store.test.ts create mode 100644 apps/readest-app/src/services/dictionaries/dictReader.ts create mode 100644 apps/readest-app/src/services/dictionaries/dictZip.ts create mode 100644 apps/readest-app/src/services/dictionaries/providers/dictProvider.ts create mode 100644 apps/readest-app/src/services/dictionaries/providers/slobProvider.ts create mode 100644 apps/readest-app/src/services/dictionaries/providers/webSearchProvider.ts create mode 100644 apps/readest-app/src/services/dictionaries/slobReader.ts create mode 100644 apps/readest-app/src/services/dictionaries/webSearchTemplates.ts diff --git a/apps/readest-app/public/locales/ar/translation.json b/apps/readest-app/public/locales/ar/translation.json index 063f5626..42518038 100644 --- a/apps/readest-app/public/locales/ar/translation.json +++ b/apps/readest-app/public/locales/ar/translation.json @@ -1306,7 +1306,6 @@ "Importing…": "جاري الاستيراد…", "Import Dictionary": "استيراد قاموس", "No dictionaries available.": "لا تتوفر قواميس.", - "Drag the handle on the left to reorder.": "اسحب المقبض الموجود على اليسار لإعادة الترتيب.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "تحتاج حزم StarDict إلى ملفات ‎.ifo و‎.idx و‎.dict.dz (الـ‎.syn اختياري).", "MDict bundles use .mdx files; companion .mdd files are optional.": "حزم MDict تستخدم ملفات ‎.mdx؛ ملفات ‎.mdd المرافقة اختيارية.", "Select all the bundle files together when importing.": "حدد جميع ملفات الحزمة معًا عند الاستيراد.", @@ -1409,5 +1408,18 @@ "Includes your reading progress": "يتضمن تقدّم قراءتك", "Synced {{time}}": "تمت المزامنة {{time}}", "Sync Info": "معلومات المزامنة", - "Last Synced": "آخر مزامنة" + "Last Synced": "آخر مزامنة", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "تحتاج حزم DICT إلى ملف ‎.index‎ وملف ‎.dict.dz‎.", + "Slob bundles need a .slob file.": "تحتاج حزم Slob إلى ملف ‎.slob‎.", + "URL template must start with http(s):// and contain %WORD%.": "يجب أن يبدأ قالب URL بـ http(s):// وأن يحتوي على %WORD%.", + "Web": "ويب", + "Add Web Search": "إضافة بحث ويب", + "Edit Web Search": "تعديل بحث الويب", + "e.g. Google": "مثال: Google", + "URL Template": "قالب URL", + "Use %WORD% where the looked-up word should appear.": "استخدم %WORD% حيث يجب أن تظهر الكلمة المبحوث عنها.", + "Open the search result in your browser:": "افتح نتيجة البحث في متصفحك:", + "Open in {{name}}": "افتح في {{name}}" } diff --git a/apps/readest-app/public/locales/bn/translation.json b/apps/readest-app/public/locales/bn/translation.json index ef42983a..3629cf9f 100644 --- a/apps/readest-app/public/locales/bn/translation.json +++ b/apps/readest-app/public/locales/bn/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "আমদানি হচ্ছে…", "Import Dictionary": "অভিধান আমদানি করুন", "No dictionaries available.": "কোনো অভিধান উপলব্ধ নেই।", - "Drag the handle on the left to reorder.": "পুনঃক্রম করতে বামদিকের হ্যান্ডেলটি টানুন।", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict বান্ডলে .ifo, .idx এবং .dict.dz ফাইল প্রয়োজন (.syn ঐচ্ছিক)।", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict বান্ডলে .mdx ফাইল ব্যবহৃত হয়; সঙ্গী .mdd ফাইল ঐচ্ছিক।", "Select all the bundle files together when importing.": "আমদানির সময় বান্ডলের সব ফাইল একসঙ্গে নির্বাচন করুন।", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "আপনার পড়ার অগ্রগতি অন্তর্ভুক্ত", "Synced {{time}}": "{{time}} সিঙ্ক হয়েছে", "Sync Info": "সিঙ্ক তথ্য", - "Last Synced": "শেষ সিঙ্ক" + "Last Synced": "শেষ সিঙ্ক", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT বান্ডেলের জন্য একটি .index ফাইল এবং একটি .dict.dz ফাইল প্রয়োজন।", + "Slob bundles need a .slob file.": "Slob বান্ডেলের জন্য একটি .slob ফাইল প্রয়োজন।", + "URL template must start with http(s):// and contain %WORD%.": "URL টেমপ্লেটটি অবশ্যই http(s):// দিয়ে শুরু হতে হবে এবং %WORD% থাকতে হবে।", + "Web": "ওয়েব", + "Add Web Search": "ওয়েব অনুসন্ধান যোগ করুন", + "Edit Web Search": "ওয়েব অনুসন্ধান সম্পাদনা করুন", + "e.g. Google": "যেমন Google", + "URL Template": "URL টেমপ্লেট", + "Use %WORD% where the looked-up word should appear.": "যেখানে অনুসন্ধান করা শব্দ উপস্থিত হওয়া উচিত সেখানে %WORD% ব্যবহার করুন।", + "Open the search result in your browser:": "আপনার ব্রাউজারে অনুসন্ধান ফলাফল খুলুন:", + "Open in {{name}}": "{{name}}-এ খুলুন" } diff --git a/apps/readest-app/public/locales/bo/translation.json b/apps/readest-app/public/locales/bo/translation.json index e5dc7bae..235af913 100644 --- a/apps/readest-app/public/locales/bo/translation.json +++ b/apps/readest-app/public/locales/bo/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "ནང་འདྲེན་བྱེད་བཞིན་པ…", "Import Dictionary": "ཚིག་མཛོད་ནང་འདྲེན།", "No dictionaries available.": "ཚིག་མཛོད་གང་ཡང་མི་འདུག།", - "Drag the handle on the left to reorder.": "གོ་རིམ་སྒྱུར་བར་གཡོན་ཕྱོགས་ཀྱི་འཛིན་ཕུང་འཐེན།", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict ཡོ་བྱད་ལ་ .ifo དང་ .idx, .dict.dz ཡིག་ཆ་ཁག་དགོས་པ་ཡིན། (.syn ནི་འདེམས་འཁྱོངས་ཡིན།)", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict ཡོ་བྱད་ཀྱིས་ .mdx ཡིག་ཆ་སྤྱོད། མཉམ་འགྲོགས་ .mdd ཡིག་ཆ་ནི་འདེམས་འཁྱོངས་ཡིན།", "Select all the bundle files together when importing.": "ནང་འདྲེན་སྐབས་ཡོ་བྱད་ཡིག་ཆ་ཡོངས་མཉམ་དུ་འདེམས་རོགས།", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "ཁྱེད་ཀྱི་ཀློག་འདོན་གྱི་ཡར་ཐོན་འདུས།", "Synced {{time}}": "{{time}}མཉམ་སྒྲིག་བྱས་པ", "Sync Info": "མཉམ་སྒྲིག་གྱི་ཆ་འཕྲིན", - "Last Synced": "མཐའ་མའི་མཉམ་སྒྲིག" + "Last Synced": "མཐའ་མའི་མཉམ་སྒྲིག", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT ཕུང་པོར་ .index ཡིག་ཆ་དང་ .dict.dz ཡིག་ཆ་གཉིས་ཀ་དགོས།", + "Slob bundles need a .slob file.": "Slob ཕུང་པོར་ .slob ཡིག་ཆ་ཞིག་དགོས།", + "URL template must start with http(s):// and contain %WORD%.": "URL ཕྱི་མོ་ http(s):// གིས་འགོ་འཛུགས་དགོས་ལ་ %WORD% ཡོད་དགོས།", + "Web": "དྲ་རྒྱ", + "Add Web Search": "དྲ་རྒྱའི་འཚོལ་བཤེར་སྣོན།", + "Edit Web Search": "དྲ་རྒྱའི་འཚོལ་བཤེར་རྩོམ་སྒྲིག", + "e.g. Google": "དཔེར་ན། Google", + "URL Template": "URL ཕྱི་མོ", + "Use %WORD% where the looked-up word should appear.": "འཚོལ་བཤེར་བྱས་པའི་ཚིག་འཆར་ས་གནས་སུ་ %WORD% བཀོལ་སྤྱོད་གནང་རོགས།", + "Open the search result in your browser:": "ཁྱེད་ཀྱི་བརྡ་འཚོལ་མཁོ་ཆས་ལ་འཚོལ་བཤེར་གྲུབ་འབྲས་ཁ་ཕྱེ:", + "Open in {{name}}": "{{name}} ནང་ཁ་ཕྱེ།" } diff --git a/apps/readest-app/public/locales/de/translation.json b/apps/readest-app/public/locales/de/translation.json index 13b10df2..66f4dd11 100644 --- a/apps/readest-app/public/locales/de/translation.json +++ b/apps/readest-app/public/locales/de/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "Wird importiert …", "Import Dictionary": "Wörterbuch importieren", "No dictionaries available.": "Keine Wörterbücher verfügbar.", - "Drag the handle on the left to reorder.": "Ziehe am Griff links, um die Reihenfolge zu ändern.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict-Bundles benötigen .ifo-, .idx- und .dict.dz-Dateien (.syn optional).", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict-Bundles verwenden .mdx-Dateien; begleitende .mdd-Dateien sind optional.", "Select all the bundle files together when importing.": "Wähle beim Import alle Bundle-Dateien zusammen aus.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "Enthält deinen Lesefortschritt", "Synced {{time}}": "Synchronisiert {{time}}", "Sync Info": "Synchronisierungs-Info", - "Last Synced": "Zuletzt synchronisiert" + "Last Synced": "Zuletzt synchronisiert", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT-Bundles benötigen eine .index-Datei und eine .dict.dz-Datei.", + "Slob bundles need a .slob file.": "Slob-Bundles benötigen eine .slob-Datei.", + "URL template must start with http(s):// and contain %WORD%.": "URL-Vorlage muss mit http(s):// beginnen und %WORD% enthalten.", + "Web": "Web", + "Add Web Search": "Websuche hinzufügen", + "Edit Web Search": "Websuche bearbeiten", + "e.g. Google": "z. B. Google", + "URL Template": "URL-Vorlage", + "Use %WORD% where the looked-up word should appear.": "Verwenden Sie %WORD%, wo das gesuchte Wort erscheinen soll.", + "Open the search result in your browser:": "Öffne das Suchergebnis in deinem Browser:", + "Open in {{name}}": "In {{name}} öffnen" } diff --git a/apps/readest-app/public/locales/el/translation.json b/apps/readest-app/public/locales/el/translation.json index 271c1f65..cbdcc068 100644 --- a/apps/readest-app/public/locales/el/translation.json +++ b/apps/readest-app/public/locales/el/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "Εισαγωγή…", "Import Dictionary": "Εισαγωγή λεξικού", "No dictionaries available.": "Δεν υπάρχουν διαθέσιμα λεξικά.", - "Drag the handle on the left to reorder.": "Σύρετε τη λαβή αριστερά για επαναταξινόμηση.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Τα πακέτα StarDict χρειάζονται αρχεία .ifo, .idx και .dict.dz (το .syn είναι προαιρετικό).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Τα πακέτα MDict χρησιμοποιούν αρχεία .mdx· τα συνοδευτικά .mdd είναι προαιρετικά.", "Select all the bundle files together when importing.": "Επιλέξτε όλα τα αρχεία του πακέτου μαζί κατά την εισαγωγή.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "Περιλαμβάνει την πρόοδο ανάγνωσής σας", "Synced {{time}}": "Συγχρονίστηκε {{time}}", "Sync Info": "Πληροφορίες συγχρονισμού", - "Last Synced": "Τελευταίος συγχρονισμός" + "Last Synced": "Τελευταίος συγχρονισμός", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Τα πακέτα DICT χρειάζονται ένα αρχείο .index και ένα αρχείο .dict.dz.", + "Slob bundles need a .slob file.": "Τα πακέτα Slob χρειάζονται ένα αρχείο .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Το πρότυπο URL πρέπει να ξεκινά με http(s):// και να περιέχει %WORD%.", + "Web": "Διαδίκτυο", + "Add Web Search": "Προσθήκη αναζήτησης ιστού", + "Edit Web Search": "Επεξεργασία αναζήτησης ιστού", + "e.g. Google": "π.χ. Google", + "URL Template": "Πρότυπο URL", + "Use %WORD% where the looked-up word should appear.": "Χρησιμοποιήστε %WORD% όπου πρέπει να εμφανίζεται η λέξη αναζήτησης.", + "Open the search result in your browser:": "Ανοίξτε το αποτέλεσμα αναζήτησης στο πρόγραμμα περιήγησής σας:", + "Open in {{name}}": "Άνοιγμα σε {{name}}" } diff --git a/apps/readest-app/public/locales/es/translation.json b/apps/readest-app/public/locales/es/translation.json index 30185f0d..f992884b 100644 --- a/apps/readest-app/public/locales/es/translation.json +++ b/apps/readest-app/public/locales/es/translation.json @@ -1252,7 +1252,6 @@ "Importing…": "Importando…", "Import Dictionary": "Importar diccionario", "No dictionaries available.": "No hay diccionarios disponibles.", - "Drag the handle on the left to reorder.": "Arrastra el asa de la izquierda para reordenar.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Los paquetes StarDict requieren archivos .ifo, .idx y .dict.dz (.syn opcional).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Los paquetes MDict usan archivos .mdx; los .mdd asociados son opcionales.", "Select all the bundle files together when importing.": "Selecciona todos los archivos del paquete juntos al importar.", @@ -1340,5 +1339,18 @@ "Includes your reading progress": "Incluye tu progreso de lectura", "Synced {{time}}": "Sincronizado {{time}}", "Sync Info": "Información de sincronización", - "Last Synced": "Última sincronización" + "Last Synced": "Última sincronización", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Los paquetes DICT necesitan un archivo .index y un archivo .dict.dz.", + "Slob bundles need a .slob file.": "Los paquetes Slob necesitan un archivo .slob.", + "URL template must start with http(s):// and contain %WORD%.": "La plantilla de URL debe empezar con http(s):// y contener %WORD%.", + "Web": "Web", + "Add Web Search": "Añadir búsqueda web", + "Edit Web Search": "Editar búsqueda web", + "e.g. Google": "p. ej. Google", + "URL Template": "Plantilla de URL", + "Use %WORD% where the looked-up word should appear.": "Use %WORD% donde debe aparecer la palabra buscada.", + "Open the search result in your browser:": "Abre el resultado de búsqueda en tu navegador:", + "Open in {{name}}": "Abrir en {{name}}" } diff --git a/apps/readest-app/public/locales/fa/translation.json b/apps/readest-app/public/locales/fa/translation.json index d990a298..46e5d203 100644 --- a/apps/readest-app/public/locales/fa/translation.json +++ b/apps/readest-app/public/locales/fa/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "در حال وارد کردن…", "Import Dictionary": "وارد کردن فرهنگ‌لغت", "No dictionaries available.": "هیچ فرهنگ‌لغتی در دسترس نیست.", - "Drag the handle on the left to reorder.": "برای تغییر ترتیب، دستگیرهٔ سمت چپ را بکشید.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "بسته‌های StarDict به فایل‌های .ifo، .idx و .dict.dz نیاز دارند (.syn اختیاری).", "MDict bundles use .mdx files; companion .mdd files are optional.": "بسته‌های MDict از فایل‌های .mdx استفاده می‌کنند؛ فایل‌های همراه .mdd اختیاری‌اند.", "Select all the bundle files together when importing.": "هنگام وارد کردن، همه فایل‌های بسته را با هم انتخاب کنید.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "شامل پیشرفت مطالعهٔ شماست", "Synced {{time}}": "{{time}} همگام‌سازی شد", "Sync Info": "اطلاعات همگام‌سازی", - "Last Synced": "آخرین همگام‌سازی" + "Last Synced": "آخرین همگام‌سازی", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "بسته‌های DICT به یک فایل ‎.index‎ و یک فایل ‎.dict.dz‎ نیاز دارند.", + "Slob bundles need a .slob file.": "بسته‌های Slob به یک فایل ‎.slob‎ نیاز دارند.", + "URL template must start with http(s):// and contain %WORD%.": "الگوی URL باید با http(s):// شروع شود و حاوی %WORD% باشد.", + "Web": "وب", + "Add Web Search": "افزودن جست‌وجوی وب", + "Edit Web Search": "ویرایش جست‌وجوی وب", + "e.g. Google": "مثلاً Google", + "URL Template": "الگوی URL", + "Use %WORD% where the looked-up word should appear.": "از %WORD% در جایی که کلمه‌ی مورد جست‌وجو باید ظاهر شود، استفاده کنید.", + "Open the search result in your browser:": "نتیجه‌ی جست‌وجو را در مرورگر باز کنید:", + "Open in {{name}}": "بازکردن در {{name}}" } diff --git a/apps/readest-app/public/locales/fr/translation.json b/apps/readest-app/public/locales/fr/translation.json index 8c89bd3c..b1155e6f 100644 --- a/apps/readest-app/public/locales/fr/translation.json +++ b/apps/readest-app/public/locales/fr/translation.json @@ -1252,7 +1252,6 @@ "Importing…": "Importation…", "Import Dictionary": "Importer un dictionnaire", "No dictionaries available.": "Aucun dictionnaire disponible.", - "Drag the handle on the left to reorder.": "Glissez la poignée à gauche pour réorganiser.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Les paquets StarDict nécessitent des fichiers .ifo, .idx et .dict.dz (.syn optionnel).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Les paquets MDict utilisent des fichiers .mdx ; les .mdd associés sont optionnels.", "Select all the bundle files together when importing.": "Sélectionnez tous les fichiers du paquet ensemble lors de l’import.", @@ -1340,5 +1339,18 @@ "Includes your reading progress": "Inclut votre progression de lecture", "Synced {{time}}": "Synchronisé {{time}}", "Sync Info": "Infos de synchronisation", - "Last Synced": "Dernière synchronisation" + "Last Synced": "Dernière synchronisation", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Les paquets DICT nécessitent un fichier .index et un fichier .dict.dz.", + "Slob bundles need a .slob file.": "Les paquets Slob nécessitent un fichier .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Le modèle d'URL doit commencer par http(s):// et contenir %WORD%.", + "Web": "Web", + "Add Web Search": "Ajouter une recherche web", + "Edit Web Search": "Modifier la recherche web", + "e.g. Google": "ex. Google", + "URL Template": "Modèle d'URL", + "Use %WORD% where the looked-up word should appear.": "Utilisez %WORD% à l'endroit où le mot recherché doit apparaître.", + "Open the search result in your browser:": "Ouvrir le résultat de la recherche dans votre navigateur :", + "Open in {{name}}": "Ouvrir dans {{name}}" } diff --git a/apps/readest-app/public/locales/he/translation.json b/apps/readest-app/public/locales/he/translation.json index acbd4522..70da179d 100644 --- a/apps/readest-app/public/locales/he/translation.json +++ b/apps/readest-app/public/locales/he/translation.json @@ -1252,7 +1252,6 @@ "Importing…": "מייבא…", "Import Dictionary": "ייבא מילון", "No dictionaries available.": "אין מילונים זמינים.", - "Drag the handle on the left to reorder.": "גררו את הידית משמאל כדי לסדר מחדש.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "חבילות StarDict דורשות קבצי .ifo,‏ .idx ו-.dict.dz (.syn אופציונלי).", "MDict bundles use .mdx files; companion .mdd files are optional.": "חבילות MDict משתמשות בקבצי .mdx; קבצי .mdd נלווים הם אופציונליים.", "Select all the bundle files together when importing.": "בחרו את כל קבצי החבילה יחד בעת הייבוא.", @@ -1340,5 +1339,18 @@ "Includes your reading progress": "כולל את התקדמות הקריאה שלך", "Synced {{time}}": "סונכרן {{time}}", "Sync Info": "פרטי סנכרון", - "Last Synced": "סונכרן לאחרונה" + "Last Synced": "סונכרן לאחרונה", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "חבילות DICT דורשות קובץ ‎.index‎ וקובץ ‎.dict.dz‎.", + "Slob bundles need a .slob file.": "חבילות Slob דורשות קובץ ‎.slob‎.", + "URL template must start with http(s):// and contain %WORD%.": "תבנית כתובת ה-URL חייבת להתחיל ב-http(s):// ולהכיל ‎%WORD%‎.", + "Web": "אינטרנט", + "Add Web Search": "הוסף חיפוש באינטרנט", + "Edit Web Search": "ערוך חיפוש באינטרנט", + "e.g. Google": "לדוגמה: Google", + "URL Template": "תבנית URL", + "Use %WORD% where the looked-up word should appear.": "השתמש ב-%WORD% היכן שהמילה המבוקשת צריכה להופיע.", + "Open the search result in your browser:": "פתח את תוצאת החיפוש בדפדפן שלך:", + "Open in {{name}}": "פתח ב-{{name}}" } diff --git a/apps/readest-app/public/locales/hi/translation.json b/apps/readest-app/public/locales/hi/translation.json index 7026e9b6..bd388fc9 100644 --- a/apps/readest-app/public/locales/hi/translation.json +++ b/apps/readest-app/public/locales/hi/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "आयात हो रहा है…", "Import Dictionary": "शब्दकोश आयात करें", "No dictionaries available.": "कोई शब्दकोश उपलब्ध नहीं है।", - "Drag the handle on the left to reorder.": "पुनः क्रमित करने के लिए बायीं ओर के हैंडल को खींचें।", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict बंडल को .ifo, .idx और .dict.dz फ़ाइलें चाहिए (.syn वैकल्पिक)।", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict बंडल .mdx फ़ाइलों का उपयोग करते हैं; साथी .mdd फ़ाइलें वैकल्पिक हैं।", "Select all the bundle files together when importing.": "आयात करते समय बंडल की सभी फ़ाइलें एक साथ चुनें।", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "आपकी पढ़ने की प्रगति शामिल है", "Synced {{time}}": "{{time}} सिंक हुआ", "Sync Info": "सिंक जानकारी", - "Last Synced": "अंतिम सिंक" + "Last Synced": "अंतिम सिंक", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT बंडल को एक .index फ़ाइल और एक .dict.dz फ़ाइल की आवश्यकता होती है।", + "Slob bundles need a .slob file.": "Slob बंडल को एक .slob फ़ाइल की आवश्यकता होती है।", + "URL template must start with http(s):// and contain %WORD%.": "URL टेम्पलेट http(s):// से शुरू होना चाहिए और उसमें %WORD% होना चाहिए।", + "Web": "वेब", + "Add Web Search": "वेब खोज जोड़ें", + "Edit Web Search": "वेब खोज संपादित करें", + "e.g. Google": "उदा. Google", + "URL Template": "URL टेम्पलेट", + "Use %WORD% where the looked-up word should appear.": "%WORD% का उपयोग वहां करें जहां खोजा गया शब्द दिखाई देना चाहिए।", + "Open the search result in your browser:": "अपने ब्राउज़र में खोज परिणाम खोलें:", + "Open in {{name}}": "{{name}} में खोलें" } diff --git a/apps/readest-app/public/locales/hu/translation.json b/apps/readest-app/public/locales/hu/translation.json index 1661babe..0c0de602 100644 --- a/apps/readest-app/public/locales/hu/translation.json +++ b/apps/readest-app/public/locales/hu/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "Importálás…", "Import Dictionary": "Szótár importálása", "No dictionaries available.": "Nincsenek elérhető szótárak.", - "Drag the handle on the left to reorder.": "A bal oldali fogantyúval rendezheted át.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "A StarDict csomagokhoz .ifo, .idx és .dict.dz fájlok szükségesek (.syn opcionális).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Az MDict csomagok .mdx fájlokat használnak; a kísérő .mdd fájlok opcionálisak.", "Select all the bundle files together when importing.": "Importáláskor jelöld ki egyszerre a csomag összes fájlját.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "Tartalmazza az olvasási folyamatot", "Synced {{time}}": "Szinkronizálva {{time}}", "Sync Info": "Szinkronizálási információk", - "Last Synced": "Utolsó szinkronizálás" + "Last Synced": "Utolsó szinkronizálás", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "A DICT csomagokhoz egy .index fájl és egy .dict.dz fájl szükséges.", + "Slob bundles need a .slob file.": "A Slob csomagokhoz egy .slob fájl szükséges.", + "URL template must start with http(s):// and contain %WORD%.": "Az URL-sablonnak http(s):// kezdetűnek kell lennie, és tartalmaznia kell a %WORD% részt.", + "Web": "Web", + "Add Web Search": "Webes keresés hozzáadása", + "Edit Web Search": "Webes keresés szerkesztése", + "e.g. Google": "pl. Google", + "URL Template": "URL-sablon", + "Use %WORD% where the looked-up word should appear.": "Használja a %WORD%-t ott, ahol a keresett szónak meg kell jelennie.", + "Open the search result in your browser:": "Nyissa meg a találatot a böngészőben:", + "Open in {{name}}": "Megnyitás itt: {{name}}" } diff --git a/apps/readest-app/public/locales/id/translation.json b/apps/readest-app/public/locales/id/translation.json index 270c3768..990d51fa 100644 --- a/apps/readest-app/public/locales/id/translation.json +++ b/apps/readest-app/public/locales/id/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "Mengimpor…", "Import Dictionary": "Impor Kamus", "No dictionaries available.": "Tidak ada kamus yang tersedia.", - "Drag the handle on the left to reorder.": "Seret pegangan di sebelah kiri untuk mengurutkan ulang.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Paket StarDict memerlukan file .ifo, .idx, dan .dict.dz (.syn opsional).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Paket MDict menggunakan file .mdx; file .mdd pendamping bersifat opsional.", "Select all the bundle files together when importing.": "Pilih semua file paket sekaligus saat mengimpor.", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "Termasuk progres baca Anda", "Synced {{time}}": "Disinkronkan {{time}}", "Sync Info": "Info sinkronisasi", - "Last Synced": "Sinkronisasi terakhir" + "Last Synced": "Sinkronisasi terakhir", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Bundel DICT memerlukan berkas .index dan berkas .dict.dz.", + "Slob bundles need a .slob file.": "Bundel Slob memerlukan berkas .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Templat URL harus diawali http(s):// dan berisi %WORD%.", + "Web": "Web", + "Add Web Search": "Tambah Pencarian Web", + "Edit Web Search": "Edit Pencarian Web", + "e.g. Google": "mis. Google", + "URL Template": "Templat URL", + "Use %WORD% where the looked-up word should appear.": "Gunakan %WORD% di tempat kata yang dicari harus muncul.", + "Open the search result in your browser:": "Buka hasil pencarian di peramban Anda:", + "Open in {{name}}": "Buka di {{name}}" } diff --git a/apps/readest-app/public/locales/it/translation.json b/apps/readest-app/public/locales/it/translation.json index 56133ec8..fef1d814 100644 --- a/apps/readest-app/public/locales/it/translation.json +++ b/apps/readest-app/public/locales/it/translation.json @@ -1252,7 +1252,6 @@ "Importing…": "Importazione…", "Import Dictionary": "Importa dizionario", "No dictionaries available.": "Nessun dizionario disponibile.", - "Drag the handle on the left to reorder.": "Trascina la maniglia a sinistra per riordinare.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "I pacchetti StarDict richiedono file .ifo, .idx e .dict.dz (.syn opzionale).", "MDict bundles use .mdx files; companion .mdd files are optional.": "I pacchetti MDict usano file .mdx; i .mdd associati sono opzionali.", "Select all the bundle files together when importing.": "Seleziona tutti i file del pacchetto insieme durante l’importazione.", @@ -1340,5 +1339,18 @@ "Includes your reading progress": "Include i tuoi progressi di lettura", "Synced {{time}}": "Sincronizzato {{time}}", "Sync Info": "Info di sincronizzazione", - "Last Synced": "Ultima sincronizzazione" + "Last Synced": "Ultima sincronizzazione", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "I bundle DICT richiedono un file .index e un file .dict.dz.", + "Slob bundles need a .slob file.": "I bundle Slob richiedono un file .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Il modello URL deve iniziare con http(s):// e contenere %WORD%.", + "Web": "Web", + "Add Web Search": "Aggiungi ricerca web", + "Edit Web Search": "Modifica ricerca web", + "e.g. Google": "es. Google", + "URL Template": "Modello URL", + "Use %WORD% where the looked-up word should appear.": "Usa %WORD% dove dovrebbe apparire la parola cercata.", + "Open the search result in your browser:": "Apri il risultato della ricerca nel tuo browser:", + "Open in {{name}}": "Apri in {{name}}" } diff --git a/apps/readest-app/public/locales/ja/translation.json b/apps/readest-app/public/locales/ja/translation.json index c4ac668a..b2e7a438 100644 --- a/apps/readest-app/public/locales/ja/translation.json +++ b/apps/readest-app/public/locales/ja/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "インポート中…", "Import Dictionary": "辞書をインポート", "No dictionaries available.": "利用可能な辞書はありません。", - "Drag the handle on the left to reorder.": "左のハンドルをドラッグして並べ替えます。", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict バンドルには .ifo、.idx、.dict.dz ファイルが必要です(.syn は任意)。", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict バンドルは .mdx ファイルを使用します。付随する .mdd ファイルは任意です。", "Select all the bundle files together when importing.": "インポート時はバンドルのファイルをまとめて選択してください。", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "読書の進捗を含みます", "Synced {{time}}": "{{time}}に同期", "Sync Info": "同期情報", - "Last Synced": "最終同期" + "Last Synced": "最終同期", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT バンドルには .index ファイルと .dict.dz ファイルが必要です。", + "Slob bundles need a .slob file.": "Slob バンドルには .slob ファイルが必要です。", + "URL template must start with http(s):// and contain %WORD%.": "URL テンプレートは http(s):// で始まり、%WORD% を含む必要があります。", + "Web": "ウェブ", + "Add Web Search": "ウェブ検索を追加", + "Edit Web Search": "ウェブ検索を編集", + "e.g. Google": "例: Google", + "URL Template": "URL テンプレート", + "Use %WORD% where the looked-up word should appear.": "調べる単語が表示される場所に %WORD% を使用してください。", + "Open the search result in your browser:": "検索結果をブラウザで開く:", + "Open in {{name}}": "{{name}} で開く" } diff --git a/apps/readest-app/public/locales/ko/translation.json b/apps/readest-app/public/locales/ko/translation.json index 4a02dbe7..2c800d94 100644 --- a/apps/readest-app/public/locales/ko/translation.json +++ b/apps/readest-app/public/locales/ko/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "가져오는 중…", "Import Dictionary": "사전 가져오기", "No dictionaries available.": "사용 가능한 사전이 없습니다.", - "Drag the handle on the left to reorder.": "왼쪽 핸들을 드래그하여 순서를 변경하세요.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict 번들은 .ifo, .idx, .dict.dz 파일이 필요합니다(.syn은 선택).", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict 번들은 .mdx 파일을 사용하며, 동반되는 .mdd 파일은 선택입니다.", "Select all the bundle files together when importing.": "가져올 때 번들의 모든 파일을 함께 선택하세요.", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "읽기 진행률 포함됨", "Synced {{time}}": "{{time}} 동기화됨", "Sync Info": "동기화 정보", - "Last Synced": "마지막 동기화" + "Last Synced": "마지막 동기화", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT 번들에는 .index 파일과 .dict.dz 파일이 필요합니다.", + "Slob bundles need a .slob file.": "Slob 번들에는 .slob 파일이 필요합니다.", + "URL template must start with http(s):// and contain %WORD%.": "URL 템플릿은 http(s):// 로 시작하고 %WORD%를 포함해야 합니다.", + "Web": "웹", + "Add Web Search": "웹 검색 추가", + "Edit Web Search": "웹 검색 편집", + "e.g. Google": "예: Google", + "URL Template": "URL 템플릿", + "Use %WORD% where the looked-up word should appear.": "검색어가 표시될 위치에 %WORD%를 사용하세요.", + "Open the search result in your browser:": "브라우저에서 검색 결과 열기:", + "Open in {{name}}": "{{name}}에서 열기" } diff --git a/apps/readest-app/public/locales/ms/translation.json b/apps/readest-app/public/locales/ms/translation.json index 10a4995b..7d5e713a 100644 --- a/apps/readest-app/public/locales/ms/translation.json +++ b/apps/readest-app/public/locales/ms/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "Mengimport…", "Import Dictionary": "Import Kamus", "No dictionaries available.": "Tiada kamus tersedia.", - "Drag the handle on the left to reorder.": "Seret pemegang di sebelah kiri untuk susun semula.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Bundle StarDict memerlukan fail .ifo, .idx dan .dict.dz (.syn pilihan).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Bundle MDict menggunakan fail .mdx; fail .mdd pengiring adalah pilihan.", "Select all the bundle files together when importing.": "Pilih semua fail bundle sekali gus semasa mengimport.", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "Termasuk kemajuan bacaan anda", "Synced {{time}}": "Disegerakkan {{time}}", "Sync Info": "Maklumat penyegerakan", - "Last Synced": "Penyegerakan terakhir" + "Last Synced": "Penyegerakan terakhir", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Pakej DICT memerlukan fail .index dan fail .dict.dz.", + "Slob bundles need a .slob file.": "Pakej Slob memerlukan fail .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Templat URL mesti bermula dengan http(s):// dan mengandungi %WORD%.", + "Web": "Web", + "Add Web Search": "Tambah Carian Web", + "Edit Web Search": "Edit Carian Web", + "e.g. Google": "cth. Google", + "URL Template": "Templat URL", + "Use %WORD% where the looked-up word should appear.": "Gunakan %WORD% di mana perkataan yang dicari harus muncul.", + "Open the search result in your browser:": "Buka hasil carian dalam pelayar anda:", + "Open in {{name}}": "Buka dalam {{name}}" } diff --git a/apps/readest-app/public/locales/nl/translation.json b/apps/readest-app/public/locales/nl/translation.json index 3a911c6c..70634b43 100644 --- a/apps/readest-app/public/locales/nl/translation.json +++ b/apps/readest-app/public/locales/nl/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "Bezig met importeren…", "Import Dictionary": "Woordenboek importeren", "No dictionaries available.": "Geen woordenboeken beschikbaar.", - "Drag the handle on the left to reorder.": "Sleep de greep links om opnieuw te ordenen.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict-bundels hebben .ifo-, .idx- en .dict.dz-bestanden nodig (.syn optioneel).", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict-bundels gebruiken .mdx-bestanden; bijbehorende .mdd-bestanden zijn optioneel.", "Select all the bundle files together when importing.": "Selecteer bij het importeren alle bundelbestanden tegelijk.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "Inclusief je leesvoortgang", "Synced {{time}}": "Gesynchroniseerd {{time}}", "Sync Info": "Synchronisatie-info", - "Last Synced": "Laatst gesynchroniseerd" + "Last Synced": "Laatst gesynchroniseerd", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT-bundels hebben een .index-bestand en een .dict.dz-bestand nodig.", + "Slob bundles need a .slob file.": "Slob-bundels hebben een .slob-bestand nodig.", + "URL template must start with http(s):// and contain %WORD%.": "URL-sjabloon moet beginnen met http(s):// en %WORD% bevatten.", + "Web": "Web", + "Add Web Search": "Webzoekopdracht toevoegen", + "Edit Web Search": "Webzoekopdracht bewerken", + "e.g. Google": "bijv. Google", + "URL Template": "URL-sjabloon", + "Use %WORD% where the looked-up word should appear.": "Gebruik %WORD% op de plek waar het opgezochte woord moet verschijnen.", + "Open the search result in your browser:": "Open het zoekresultaat in je browser:", + "Open in {{name}}": "Openen in {{name}}" } diff --git a/apps/readest-app/public/locales/pl/translation.json b/apps/readest-app/public/locales/pl/translation.json index 5e9a07a9..f086d393 100644 --- a/apps/readest-app/public/locales/pl/translation.json +++ b/apps/readest-app/public/locales/pl/translation.json @@ -1270,7 +1270,6 @@ "Importing…": "Importowanie…", "Import Dictionary": "Importuj słownik", "No dictionaries available.": "Brak dostępnych słowników.", - "Drag the handle on the left to reorder.": "Przeciągnij uchwyt po lewej, aby zmienić kolejność.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Pakiety StarDict wymagają plików .ifo, .idx i .dict.dz (.syn opcjonalny).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Pakiety MDict używają plików .mdx; towarzyszące .mdd są opcjonalne.", "Select all the bundle files together when importing.": "Podczas importu wybierz wszystkie pliki pakietu jednocześnie.", @@ -1363,5 +1362,18 @@ "Includes your reading progress": "Zawiera Twój postęp czytania", "Synced {{time}}": "Zsynchronizowano {{time}}", "Sync Info": "Informacje o synchronizacji", - "Last Synced": "Ostatnia synchronizacja" + "Last Synced": "Ostatnia synchronizacja", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Pakiety DICT wymagają pliku .index i pliku .dict.dz.", + "Slob bundles need a .slob file.": "Pakiety Slob wymagają pliku .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Szablon URL musi zaczynać się od http(s):// i zawierać %WORD%.", + "Web": "Web", + "Add Web Search": "Dodaj wyszukiwanie internetowe", + "Edit Web Search": "Edytuj wyszukiwanie internetowe", + "e.g. Google": "np. Google", + "URL Template": "Szablon URL", + "Use %WORD% where the looked-up word should appear.": "Użyj %WORD% w miejscu, w którym ma się pojawić wyszukiwane słowo.", + "Open the search result in your browser:": "Otwórz wynik wyszukiwania w przeglądarce:", + "Open in {{name}}": "Otwórz w {{name}}" } diff --git a/apps/readest-app/public/locales/pt/translation.json b/apps/readest-app/public/locales/pt/translation.json index 45ad7ec9..929870b3 100644 --- a/apps/readest-app/public/locales/pt/translation.json +++ b/apps/readest-app/public/locales/pt/translation.json @@ -1252,7 +1252,6 @@ "Importing…": "Importando…", "Import Dictionary": "Importar dicionário", "No dictionaries available.": "Nenhum dicionário disponível.", - "Drag the handle on the left to reorder.": "Arraste o punho à esquerda para reordenar.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Pacotes StarDict precisam dos arquivos .ifo, .idx e .dict.dz (.syn opcional).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Pacotes MDict usam arquivos .mdx; arquivos .mdd companheiros são opcionais.", "Select all the bundle files together when importing.": "Selecione todos os arquivos do pacote juntos ao importar.", @@ -1340,5 +1339,18 @@ "Includes your reading progress": "Inclui seu progresso de leitura", "Synced {{time}}": "Sincronizado {{time}}", "Sync Info": "Informações de sincronização", - "Last Synced": "Última sincronização" + "Last Synced": "Última sincronização", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Os pacotes DICT precisam de um arquivo .index e um arquivo .dict.dz.", + "Slob bundles need a .slob file.": "Os pacotes Slob precisam de um arquivo .slob.", + "URL template must start with http(s):// and contain %WORD%.": "O modelo de URL deve começar com http(s):// e conter %WORD%.", + "Web": "Web", + "Add Web Search": "Adicionar pesquisa web", + "Edit Web Search": "Editar pesquisa web", + "e.g. Google": "por exemplo: Google", + "URL Template": "Modelo de URL", + "Use %WORD% where the looked-up word should appear.": "Use %WORD% onde a palavra pesquisada deve aparecer.", + "Open the search result in your browser:": "Abrir o resultado da pesquisa no seu navegador:", + "Open in {{name}}": "Abrir em {{name}}" } diff --git a/apps/readest-app/public/locales/ro/translation.json b/apps/readest-app/public/locales/ro/translation.json index a8e1bffb..016ca539 100644 --- a/apps/readest-app/public/locales/ro/translation.json +++ b/apps/readest-app/public/locales/ro/translation.json @@ -1252,7 +1252,6 @@ "Importing…": "Se importă…", "Import Dictionary": "Importă dicționar", "No dictionaries available.": "Niciun dicționar disponibil.", - "Drag the handle on the left to reorder.": "Trage de mâner din stânga pentru a reordona.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Pachetele StarDict au nevoie de fișierele .ifo, .idx și .dict.dz (.syn opțional).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Pachetele MDict folosesc fișiere .mdx; fișierele .mdd însoțitoare sunt opționale.", "Select all the bundle files together when importing.": "Selectează împreună toate fișierele pachetului la import.", @@ -1340,5 +1339,18 @@ "Includes your reading progress": "Include progresul tău de lectură", "Synced {{time}}": "Sincronizat {{time}}", "Sync Info": "Informații sincronizare", - "Last Synced": "Ultima sincronizare" + "Last Synced": "Ultima sincronizare", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Pachetele DICT necesită un fișier .index și un fișier .dict.dz.", + "Slob bundles need a .slob file.": "Pachetele Slob necesită un fișier .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Șablonul URL trebuie să înceapă cu http(s):// și să conțină %WORD%.", + "Web": "Web", + "Add Web Search": "Adaugă căutare web", + "Edit Web Search": "Editează căutarea web", + "e.g. Google": "ex. Google", + "URL Template": "Șablon URL", + "Use %WORD% where the looked-up word should appear.": "Folosiți %WORD% acolo unde ar trebui să apară cuvântul căutat.", + "Open the search result in your browser:": "Deschideți rezultatul căutării în browser:", + "Open in {{name}}": "Deschide în {{name}}" } diff --git a/apps/readest-app/public/locales/ru/translation.json b/apps/readest-app/public/locales/ru/translation.json index aeae8e33..2a17e489 100644 --- a/apps/readest-app/public/locales/ru/translation.json +++ b/apps/readest-app/public/locales/ru/translation.json @@ -1270,7 +1270,6 @@ "Importing…": "Импорт…", "Import Dictionary": "Импорт словаря", "No dictionaries available.": "Нет доступных словарей.", - "Drag the handle on the left to reorder.": "Перетащите ручку слева для изменения порядка.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Пакеты StarDict требуют файлов .ifo, .idx и .dict.dz (.syn — опционально).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Пакеты MDict используют файлы .mdx; сопутствующие .mdd — опционально.", "Select all the bundle files together when importing.": "При импорте выбирайте все файлы пакета вместе.", @@ -1363,5 +1362,18 @@ "Includes your reading progress": "Включает ваш прогресс чтения", "Synced {{time}}": "Синхронизировано {{time}}", "Sync Info": "Информация о синхронизации", - "Last Synced": "Последняя синхронизация" + "Last Synced": "Последняя синхронизация", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Пакетам DICT нужны файл .index и файл .dict.dz.", + "Slob bundles need a .slob file.": "Пакетам Slob нужен файл .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Шаблон URL должен начинаться с http(s):// и содержать %WORD%.", + "Web": "Веб", + "Add Web Search": "Добавить веб-поиск", + "Edit Web Search": "Изменить веб-поиск", + "e.g. Google": "Например, Google", + "URL Template": "Шаблон URL", + "Use %WORD% where the looked-up word should appear.": "Используйте %WORD% там, где должно появиться искомое слово.", + "Open the search result in your browser:": "Открыть результат поиска в браузере:", + "Open in {{name}}": "Открыть в {{name}}" } diff --git a/apps/readest-app/public/locales/si/translation.json b/apps/readest-app/public/locales/si/translation.json index 05f2a5bb..d358291e 100644 --- a/apps/readest-app/public/locales/si/translation.json +++ b/apps/readest-app/public/locales/si/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "ආයාත වෙමින්…", "Import Dictionary": "ශබ්දකෝෂයක් ආයාත කරන්න", "No dictionaries available.": "ලබා ගත හැකි ශබ්දකෝෂ නැත.", - "Drag the handle on the left to reorder.": "නැවත සකස් කිරීමට වම් පස ඇති පතන අදින්න.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict බණ්ඩලවලට .ifo, .idx සහ .dict.dz ගොනු අවශ්‍යය (.syn විකල්ප).", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict බණ්ඩල .mdx ගොනු භාවිතා කරයි; සහායක .mdd ගොනු විකල්ප වේ.", "Select all the bundle files together when importing.": "ආයාත කරන විට බණ්ඩලේ සියලු ගොනු එකවර තෝරන්න.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "ඔබේ කියවීමේ ප්‍රගතිය ඇතුළත්", "Synced {{time}}": "{{time}} සමමුහුර්ත කළේ", "Sync Info": "සමමුහුර්ත තොරතුරු", - "Last Synced": "අවසන් සමමුහුර්තය" + "Last Synced": "අවසන් සමමුහුර්තය", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT පැකේජ සඳහා .index ගොනුවක් සහ .dict.dz ගොනුවක් අවශ්‍ය වේ.", + "Slob bundles need a .slob file.": "Slob පැකේජ සඳහා .slob ගොනුවක් අවශ්‍ය වේ.", + "URL template must start with http(s):// and contain %WORD%.": "URL අච්චුව http(s):// වලින් ආරම්භ විය යුතු අතර %WORD% අඩංගු විය යුතුය.", + "Web": "වෙබ්", + "Add Web Search": "වෙබ් සෙවුම එක් කරන්න", + "Edit Web Search": "වෙබ් සෙවුම සංස්කරණය කරන්න", + "e.g. Google": "උදා. Google", + "URL Template": "URL අච්චුව", + "Use %WORD% where the looked-up word should appear.": "සොයන වචනය දිස්විය යුතු තැන %WORD% භාවිතා කරන්න.", + "Open the search result in your browser:": "ඔබේ බ්‍රවුසරයේ සෙවුම් ප්‍රතිඵලය විවෘත කරන්න:", + "Open in {{name}}": "{{name}} වල විවෘත කරන්න" } diff --git a/apps/readest-app/public/locales/sl/translation.json b/apps/readest-app/public/locales/sl/translation.json index 44db04c7..f73a480b 100644 --- a/apps/readest-app/public/locales/sl/translation.json +++ b/apps/readest-app/public/locales/sl/translation.json @@ -1270,7 +1270,6 @@ "Importing…": "Uvažanje …", "Import Dictionary": "Uvozi slovar", "No dictionaries available.": "Ni razpoložljivih slovarjev.", - "Drag the handle on the left to reorder.": "Povleci ročaj levo za prerazporeditev.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Svežnji StarDict potrebujejo datoteke .ifo, .idx in .dict.dz (.syn neobvezno).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Svežnji MDict uporabljajo datoteke .mdx; spremljajoče .mdd so neobvezne.", "Select all the bundle files together when importing.": "Pri uvozu izberi vse datoteke svežnja skupaj.", @@ -1363,5 +1362,18 @@ "Includes your reading progress": "Vključuje vaš napredek branja", "Synced {{time}}": "Sinhronizirano {{time}}", "Sync Info": "Informacije o sinhronizaciji", - "Last Synced": "Zadnja sinhronizacija" + "Last Synced": "Zadnja sinhronizacija", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Paketi DICT potrebujejo datoteko .index in datoteko .dict.dz.", + "Slob bundles need a .slob file.": "Paketi Slob potrebujejo datoteko .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Predloga URL se mora začeti z http(s):// in vsebovati %WORD%.", + "Web": "Splet", + "Add Web Search": "Dodaj spletno iskanje", + "Edit Web Search": "Uredi spletno iskanje", + "e.g. Google": "npr. Google", + "URL Template": "Predloga URL", + "Use %WORD% where the looked-up word should appear.": "Uporabite %WORD% tam, kjer naj se pojavi iskana beseda.", + "Open the search result in your browser:": "Odprite rezultat iskanja v brskalniku:", + "Open in {{name}}": "Odpri v {{name}}" } diff --git a/apps/readest-app/public/locales/sv/translation.json b/apps/readest-app/public/locales/sv/translation.json index ecc5e310..f026996e 100644 --- a/apps/readest-app/public/locales/sv/translation.json +++ b/apps/readest-app/public/locales/sv/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "Importerar…", "Import Dictionary": "Importera ordbok", "No dictionaries available.": "Inga ordböcker tillgängliga.", - "Drag the handle on the left to reorder.": "Dra i handtaget till vänster för att ändra ordning.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict-paket kräver .ifo-, .idx- och .dict.dz-filer (.syn valfri).", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict-paket använder .mdx-filer; tillhörande .mdd-filer är valfria.", "Select all the bundle files together when importing.": "Markera alla paketfiler tillsammans när du importerar.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "Inkluderar ditt läsförlopp", "Synced {{time}}": "Synkroniserades {{time}}", "Sync Info": "Synkroniseringsinformation", - "Last Synced": "Senast synkroniserad" + "Last Synced": "Senast synkroniserad", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT-paket kräver en .index-fil och en .dict.dz-fil.", + "Slob bundles need a .slob file.": "Slob-paket kräver en .slob-fil.", + "URL template must start with http(s):// and contain %WORD%.": "URL-mallen måste börja med http(s):// och innehålla %WORD%.", + "Web": "Webb", + "Add Web Search": "Lägg till webbsökning", + "Edit Web Search": "Redigera webbsökning", + "e.g. Google": "t.ex. Google", + "URL Template": "URL-mall", + "Use %WORD% where the looked-up word should appear.": "Använd %WORD% där det uppslagna ordet ska visas.", + "Open the search result in your browser:": "Öppna sökresultatet i din webbläsare:", + "Open in {{name}}": "Öppna i {{name}}" } diff --git a/apps/readest-app/public/locales/ta/translation.json b/apps/readest-app/public/locales/ta/translation.json index 151a575d..0ed66b0b 100644 --- a/apps/readest-app/public/locales/ta/translation.json +++ b/apps/readest-app/public/locales/ta/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "இறக்குமதி செய்கிறது…", "Import Dictionary": "அகராதியை இறக்குமதி செய்", "No dictionaries available.": "அகராதிகள் கிடைக்கவில்லை.", - "Drag the handle on the left to reorder.": "மறு வரிசைப்படுத்த இடதுபுறம் உள்ள கைப்பிடியை இழுக்கவும்.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict தொகுப்புகளுக்கு .ifo, .idx, .dict.dz கோப்புகள் தேவை (.syn விருப்பம்).", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict தொகுப்புகள் .mdx கோப்புகளைப் பயன்படுத்தும்; தொடர்புடைய .mdd கோப்புகள் விருப்பம்.", "Select all the bundle files together when importing.": "இறக்குமதி செய்யும்போது தொகுப்பின் அனைத்துக் கோப்புகளையும் ஒரே நேரத்தில் தேர்ந்தெடுக்கவும்.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "உங்கள் வாசிப்பு முன்னேற்றத்தை உள்ளடக்கியது", "Synced {{time}}": "{{time}} ஒத்திசைக்கப்பட்டது", "Sync Info": "ஒத்திசைவு தகவல்", - "Last Synced": "கடைசி ஒத்திசைவு" + "Last Synced": "கடைசி ஒத்திசைவு", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT தொகுப்புகளுக்கு ஒரு .index கோப்பு மற்றும் ஒரு .dict.dz கோப்பு தேவை.", + "Slob bundles need a .slob file.": "Slob தொகுப்புகளுக்கு ஒரு .slob கோப்பு தேவை.", + "URL template must start with http(s):// and contain %WORD%.": "URL வார்ப்புரு http(s):// உடன் தொடங்க வேண்டும் மற்றும் %WORD% இருக்க வேண்டும்.", + "Web": "வலை", + "Add Web Search": "வலைத் தேடல் சேர்", + "Edit Web Search": "வலைத் தேடலைத் திருத்து", + "e.g. Google": "எ.கா. Google", + "URL Template": "URL வார்ப்புரு", + "Use %WORD% where the looked-up word should appear.": "தேடப்பட்ட சொல் தோன்ற வேண்டிய இடத்தில் %WORD% ஐ பயன்படுத்தவும்.", + "Open the search result in your browser:": "உங்கள் உலாவியில் தேடல் முடிவைத் திற:", + "Open in {{name}}": "{{name}} இல் திற" } diff --git a/apps/readest-app/public/locales/th/translation.json b/apps/readest-app/public/locales/th/translation.json index 6778478e..f55abad0 100644 --- a/apps/readest-app/public/locales/th/translation.json +++ b/apps/readest-app/public/locales/th/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "กำลังนำเข้า…", "Import Dictionary": "นำเข้าพจนานุกรม", "No dictionaries available.": "ไม่มีพจนานุกรม", - "Drag the handle on the left to reorder.": "ลากที่จับทางซ้ายเพื่อจัดลำดับใหม่", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "บันเดิล StarDict ต้องมีไฟล์ .ifo, .idx และ .dict.dz (.syn ไม่บังคับ)", "MDict bundles use .mdx files; companion .mdd files are optional.": "บันเดิล MDict ใช้ไฟล์ .mdx ส่วนไฟล์ .mdd ที่มาด้วยเป็นทางเลือก", "Select all the bundle files together when importing.": "เลือกไฟล์ทั้งหมดของบันเดิลพร้อมกันเมื่อทำการนำเข้า", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "รวมถึงความคืบหน้าการอ่านของคุณ", "Synced {{time}}": "ซิงค์เมื่อ {{time}}", "Sync Info": "ข้อมูลการซิงค์", - "Last Synced": "ซิงค์ล่าสุด" + "Last Synced": "ซิงค์ล่าสุด", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "ชุด DICT ต้องการไฟล์ .index และไฟล์ .dict.dz", + "Slob bundles need a .slob file.": "ชุด Slob ต้องการไฟล์ .slob", + "URL template must start with http(s):// and contain %WORD%.": "เทมเพลต URL ต้องขึ้นต้นด้วย http(s):// และมี %WORD%", + "Web": "เว็บ", + "Add Web Search": "เพิ่มการค้นหาบนเว็บ", + "Edit Web Search": "แก้ไขการค้นหาบนเว็บ", + "e.g. Google": "เช่น Google", + "URL Template": "เทมเพลต URL", + "Use %WORD% where the looked-up word should appear.": "ใช้ %WORD% ในตำแหน่งที่คำค้นหาควรปรากฏ", + "Open the search result in your browser:": "เปิดผลลัพธ์การค้นหาในเบราว์เซอร์ของคุณ:", + "Open in {{name}}": "เปิดใน {{name}}" } diff --git a/apps/readest-app/public/locales/tr/translation.json b/apps/readest-app/public/locales/tr/translation.json index 3374a41f..41bcf033 100644 --- a/apps/readest-app/public/locales/tr/translation.json +++ b/apps/readest-app/public/locales/tr/translation.json @@ -1234,7 +1234,6 @@ "Importing…": "İçe aktarılıyor…", "Import Dictionary": "Sözlük içe aktar", "No dictionaries available.": "Kullanılabilir sözlük yok.", - "Drag the handle on the left to reorder.": "Yeniden sıralamak için soldaki tutamacı sürükleyin.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict paketleri .ifo, .idx ve .dict.dz dosyalarını gerektirir (.syn isteğe bağlı).", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict paketleri .mdx dosyalarını kullanır; eşlik eden .mdd dosyaları isteğe bağlıdır.", "Select all the bundle files together when importing.": "İçe aktarırken paketin tüm dosyalarını birlikte seçin.", @@ -1317,5 +1316,18 @@ "Includes your reading progress": "Okuma ilerlemenizi içerir", "Synced {{time}}": "{{time}} senkronize edildi", "Sync Info": "Senkronizasyon bilgisi", - "Last Synced": "Son senkronizasyon" + "Last Synced": "Son senkronizasyon", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT paketleri bir .index dosyası ve bir .dict.dz dosyası gerektirir.", + "Slob bundles need a .slob file.": "Slob paketleri bir .slob dosyası gerektirir.", + "URL template must start with http(s):// and contain %WORD%.": "URL şablonu http(s):// ile başlamalı ve %WORD% içermelidir.", + "Web": "Web", + "Add Web Search": "Web Araması Ekle", + "Edit Web Search": "Web Aramasını Düzenle", + "e.g. Google": "örn. Google", + "URL Template": "URL Şablonu", + "Use %WORD% where the looked-up word should appear.": "Aranan kelimenin görünmesi gereken yerde %WORD% kullanın.", + "Open the search result in your browser:": "Arama sonucunu tarayıcınızda açın:", + "Open in {{name}}": "{{name}} ile aç" } diff --git a/apps/readest-app/public/locales/uk/translation.json b/apps/readest-app/public/locales/uk/translation.json index c9260b82..80991a30 100644 --- a/apps/readest-app/public/locales/uk/translation.json +++ b/apps/readest-app/public/locales/uk/translation.json @@ -1270,7 +1270,6 @@ "Importing…": "Імпорт…", "Import Dictionary": "Імпорт словника", "No dictionaries available.": "Немає доступних словників.", - "Drag the handle on the left to reorder.": "Перетягуйте маркер ліворуч, щоб змінити порядок.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Пакети StarDict потребують файлів .ifo, .idx і .dict.dz (.syn — необов’язково).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Пакети MDict використовують файли .mdx; супутні .mdd — необов’язково.", "Select all the bundle files together when importing.": "Під час імпорту вибирайте всі файли пакета разом.", @@ -1363,5 +1362,18 @@ "Includes your reading progress": "Містить ваш прогрес читання", "Synced {{time}}": "Синхронізовано {{time}}", "Sync Info": "Інформація про синхронізацію", - "Last Synced": "Остання синхронізація" + "Last Synced": "Остання синхронізація", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Пакети DICT потребують файл .index і файл .dict.dz.", + "Slob bundles need a .slob file.": "Пакети Slob потребують файл .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Шаблон URL має починатися з http(s):// та містити %WORD%.", + "Web": "Веб", + "Add Web Search": "Додати веб-пошук", + "Edit Web Search": "Редагувати веб-пошук", + "e.g. Google": "напр. Google", + "URL Template": "Шаблон URL", + "Use %WORD% where the looked-up word should appear.": "Використовуйте %WORD% там, де має з'явитися шукане слово.", + "Open the search result in your browser:": "Відкрийте результат пошуку в браузері:", + "Open in {{name}}": "Відкрити в {{name}}" } diff --git a/apps/readest-app/public/locales/vi/translation.json b/apps/readest-app/public/locales/vi/translation.json index 5e966d60..1ccd34d1 100644 --- a/apps/readest-app/public/locales/vi/translation.json +++ b/apps/readest-app/public/locales/vi/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "Đang nhập…", "Import Dictionary": "Nhập từ điển", "No dictionaries available.": "Không có từ điển.", - "Drag the handle on the left to reorder.": "Kéo tay cầm bên trái để sắp xếp lại.", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "Gói StarDict cần các tệp .ifo, .idx và .dict.dz (.syn tuỳ chọn).", "MDict bundles use .mdx files; companion .mdd files are optional.": "Gói MDict dùng tệp .mdx; tệp .mdd đi kèm là tuỳ chọn.", "Select all the bundle files together when importing.": "Chọn tất cả các tệp của gói cùng lúc khi nhập.", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "Bao gồm tiến độ đọc của bạn", "Synced {{time}}": "Đã đồng bộ {{time}}", "Sync Info": "Thông tin đồng bộ", - "Last Synced": "Đồng bộ lần cuối" + "Last Synced": "Đồng bộ lần cuối", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "Gói DICT cần một tệp .index và một tệp .dict.dz.", + "Slob bundles need a .slob file.": "Gói Slob cần một tệp .slob.", + "URL template must start with http(s):// and contain %WORD%.": "Mẫu URL phải bắt đầu bằng http(s):// và chứa %WORD%.", + "Web": "Web", + "Add Web Search": "Thêm tìm kiếm web", + "Edit Web Search": "Sửa tìm kiếm web", + "e.g. Google": "vd. Google", + "URL Template": "Mẫu URL", + "Use %WORD% where the looked-up word should appear.": "Dùng %WORD% tại vị trí mà từ tra cứu sẽ xuất hiện.", + "Open the search result in your browser:": "Mở kết quả tìm kiếm trong trình duyệt của bạn:", + "Open in {{name}}": "Mở trong {{name}}" } diff --git a/apps/readest-app/public/locales/zh-CN/translation.json b/apps/readest-app/public/locales/zh-CN/translation.json index 21c72660..59b6a16a 100644 --- a/apps/readest-app/public/locales/zh-CN/translation.json +++ b/apps/readest-app/public/locales/zh-CN/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "正在导入…", "Import Dictionary": "导入词典", "No dictionaries available.": "没有可用的词典。", - "Drag the handle on the left to reorder.": "拖动左侧手柄以重新排序。", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict 词典包需要 .ifo、.idx 和 .dict.dz 文件(.syn 可选)。", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict 词典包使用 .mdx 文件;配套的 .mdd 文件为可选。", "Select all the bundle files together when importing.": "导入时请同时选择词典包内的所有文件。", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "包含你的阅读进度", "Synced {{time}}": "{{time}}已同步", "Sync Info": "同步信息", - "Last Synced": "上一次同步" + "Last Synced": "上一次同步", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT 词典包需要一个 .index 文件和一个 .dict.dz 文件。", + "Slob bundles need a .slob file.": "Slob 词典包需要一个 .slob 文件。", + "URL template must start with http(s):// and contain %WORD%.": "URL 模板必须以 http(s):// 开头并包含 %WORD%。", + "Web": "网络", + "Add Web Search": "添加网络搜索", + "Edit Web Search": "编辑网络搜索", + "e.g. Google": "例如 Google", + "URL Template": "URL 模板", + "Use %WORD% where the looked-up word should appear.": "在查询词应出现的位置使用 %WORD%。", + "Open the search result in your browser:": "在浏览器中打开搜索结果:", + "Open in {{name}}": "在 {{name}} 中打开" } diff --git a/apps/readest-app/public/locales/zh-TW/translation.json b/apps/readest-app/public/locales/zh-TW/translation.json index 3c893cb1..153b1ca1 100644 --- a/apps/readest-app/public/locales/zh-TW/translation.json +++ b/apps/readest-app/public/locales/zh-TW/translation.json @@ -1216,7 +1216,6 @@ "Importing…": "正在匯入…", "Import Dictionary": "匯入詞典", "No dictionaries available.": "沒有可用的詞典。", - "Drag the handle on the left to reorder.": "拖曳左側握把以重新排序。", "StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).": "StarDict 詞典套件需要 .ifo、.idx 和 .dict.dz 檔案(.syn 選用)。", "MDict bundles use .mdx files; companion .mdd files are optional.": "MDict 詞典套件使用 .mdx 檔案;搭配的 .mdd 檔案為選用。", "Select all the bundle files together when importing.": "匯入時請同時選擇詞典套件內的所有檔案。", @@ -1294,5 +1293,18 @@ "Includes your reading progress": "包含你的閱讀進度", "Synced {{time}}": "{{time}}已同步", "Sync Info": "同步資訊", - "Last Synced": "上一次同步" + "Last Synced": "上一次同步", + "DICT": "DICT", + "Slob": "Slob", + "DICT bundles need a .index file and a .dict.dz file.": "DICT 字典套件需要一個 .index 檔案和一個 .dict.dz 檔案。", + "Slob bundles need a .slob file.": "Slob 字典套件需要一個 .slob 檔案。", + "URL template must start with http(s):// and contain %WORD%.": "URL 範本必須以 http(s):// 開頭並包含 %WORD%。", + "Web": "網路", + "Add Web Search": "新增網路搜尋", + "Edit Web Search": "編輯網路搜尋", + "e.g. Google": "例如 Google", + "URL Template": "URL 範本", + "Use %WORD% where the looked-up word should appear.": "在查詢字詞應出現的位置使用 %WORD%。", + "Open the search result in your browser:": "在瀏覽器中開啟搜尋結果:", + "Open in {{name}}": "在 {{name}} 中開啟" } diff --git a/apps/readest-app/src/__tests__/fixtures/data/dicts/eng-nld.slob b/apps/readest-app/src/__tests__/fixtures/data/dicts/eng-nld.slob new file mode 100644 index 0000000000000000000000000000000000000000..88ce91cfb0a3be9728387e41582ecb018c55a0bf GIT binary patch literal 526133 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�S#BC*OH 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ÐEl8!btu)3IO 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 z%0D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 Je-^n8{~t%ltKa|t literal 0 HcmV?d00001 diff --git a/apps/readest-app/src/__tests__/fixtures/data/dicts/freedict-eng-nld.dict.dz b/apps/readest-app/src/__tests__/fixtures/data/dicts/freedict-eng-nld.dict.dz new file mode 100644 index 0000000000000000000000000000000000000000..701115aa98f83418ebc21c9f63b46f1dd28237e9 GIT binary patch literal 169693 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
i&3lCDHk!Q7av0!ZN{c6}kFxSnt$;nn?Fh0iG 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%0A0MldWM-Iby(Tgc8VZrr}D+=TKYMK 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�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 z zR3(snkzOGmY+TxB=R)`dfAyH0;>r{VHv}1&Ro4up_E_Hx-JAR{3TxV{b4d2e71DVDXBL*iRh{21Nv8WS*O}EG2 zG*lJz{t^sP#b-1>y+-NYtSe%06G6}Y67WnhGI{=@3xYYV5u1fx0m;FQ)y9oIJ~_dn z#>TQX_VoE}4t_JA?HDb4^TCs(HS5OM2mD@0Y;=~KMPZNLR`y+?+=sUS*V)ZzGb|LqCc+-LpEvFb0KSx*^w|D?&EoR3PBI6*K4sE3^?>J(&B<1b?^f2 zC%|+{=Vs6_38s1Y3w;c?U!yX)j9)8}{jz7YCvfAo&9j^t?AwN08KO0{hGV}da(pg5 zYxf9*H>G=Ku+rp#6xnO_q^U8VN%$(w;rh(tDf)iVwa*HPsl_ir7{|oc&MQTwjuL

NT$psk4r6_9KCrJ3VVpp)kP}HO^ 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 literal 0 HcmV?d00001 diff --git a/apps/readest-app/src/__tests__/fixtures/data/dicts/freedict-eng-nld.index b/apps/readest-app/src/__tests__/fixtures/data/dicts/freedict-eng-nld.index new file mode 100644 index 00000000..bf618191 --- /dev/null +++ b/apps/readest-app/src/__tests__/fixtures/data/dicts/freedict-eng-nld.index @@ -0,0 +1,7720 @@ +00databasealphabet Bn0B m +00databasedictfmt1121 B b +00databaseinfo c eR +00databaseshort et r +00databaseurl fY V +00databaseutf8 A B +a hI L +a shop where drugs are sold Bns6 BV +able hT l +about h4 k +above ic Q +across is W +after jC T +again jV Q +against jl T +age j4 N +ago kF N +air kS N +all kf J +almost ko S +alone k6 Q +along lK R +already lb X +also ly P +always mB p +american ft h +among mq R +an m7 K +and nF M +another nR W +are nn N +area n0 R +around oF S +as oX K +ask oh M +at ot K +auxiliary verb for passive voice BnpY B0 +auxiliary verb for past tense BnrM Bu +away o3 Q +back pH N +barricade of trees or branches BnuP By +be pU J +become pd U +before px S +behind qD U +believe qX u +best rF N +better rS R +between rj U +body r3 Q +book sH M +both sT O +boy sh M +bring st P +british gO Y +business s8 U +but tQ M +by tc L +call tn P +can t2 M +car uC O +certain uQ T +change uj U +child u3 R +city vI P +close vX P +come vm N +common vz S +country wF V +course wa R +cut wr M +day w3 L +different xC W +do xY K +door xi P +down xx N +during x+ U +each yS P +early yh S +either or yz c +emphasizing particle BnwB Br +enough zP Q +even zf O +ever zt O +every z7 Q +everything 0L Y +example 0j W +eye 05 L +face 1E N +fact 1R O +family 1f V +far 10 M +father 2A V +feel 2V O +felt 2j N +few 2w N +find 29 O +first 3L R +five 3c N +follow 3p R +food 36 O +foot 4I M +for 4U M +form 4g P +found 4v P +four 4+ P +full 5N M +get 5Z L +girl 5k P +give 5z M +go 5/ K +good 6J M +great 6V P +group 6k Bl +group member 8J n +grouser 8w 8 +grow 9s DI +grow more beautiful BE1 BF +grow sour BF6 t +grow stronger BGn 9 +growl BA0 0 +grown over BCt i +grownup BBo BF +growth BDP Bm +grub BHk Bs +grudge BJQ BU +gruel BKk h +gruesome BLF DG +gruff BOL BO +grumble BPZ 4 +grumbler BQR / +guarantee BRQ CK +guarantee of a bill BTa BA +guard BUa DQ +guardian angel BXq BL +guelder rose BY1 m +guess BZb Bq +guesswork BbF e +guest Bbj l +guide BcI Cr +guidebook Bez BT +guilder BgG Z +guile Bgf l +guileless BhE d +guilt Bhh U +guiltless Bh1 BC +guilty Bi3 a +guineapig BjR 4 +guitar BkJ Z +gulden Bki Y +gulf Bk6 BH +gully BmB a +gulp down Bmb s +gum BnH m +gun Boa 1 +guncarriage Bnt t +gunner BpP d +gunpowder Bps o +gunsight BqU w +gurgle BrE BJ +gush BsN s +gusto Bs5 BQ +guy BuJ 2 +gymnastics Bu/ m +gypsy Bvl b +gyroscope BwA k +habit Bwk BI +habitation Bxs k +hack ByQ j +hackneyed Byz h +haddock BzU b +haemorhoids Bzv h +haemorrhoid B0Q g +hafnium B0w c +haggle B1M w +hahnium B18 c +hail B2Y S +hail from B3Y BD +hailstone B2q u +hair B75 f +hair of the head B+3 7 +hair ribbon B/y k +hairdo B4b k +hairdresser B8Y w +hairpiece B9I d +hairs B9l b +hairsplitter B4/ Bh +hairsplitting B6g BZ +hairy B+A 3 +halberd CAW e +halcyon CA0 d +half CBR b +half CEI f +halfbrother CBs 8 +halfsister CCo u +halftone CDW y +halibut CEn c +haliotis CFD h +hall CFk S +halo CF2 Bq +halt CHg CK +halyard CJq d +ham CKH P +hamburger CKW k +hamburger meat CK6 r +hamlet CLl r +hammer CNJ l +hammerhead shark CMQ 5 +hammering CNu f +hammock CON a +hamper COn Ba +hand CRK Cw +hand over CeV B+ +handbag CQB BJ +handbook CT6 4 +handful CUy n +handicap CVZ 5 +handicraft CWS 7 +handiwork CXN i +handkerchief CXv l +handle CYU C5 +handlebars CbN m +handshake Cbz m +handsome CcZ 5 +handy CdS BD +hang ChE t +hang down Ciy f +hang onto CjR 2 +hangglider CgT x +hanging lamp Chx o +hangman CiZ Z +happen CkH B3 +happiness Cl+ c +happy Cma BD +harass Cnd a +harbor Cn3 Z +harbour CoQ a +hard CpX BW +harden Cqt q +hardly CrX Bc +hardness Csz p +hardworked Coq t +hardworking Ctc Bc +hardy Cu4 h +hare CvZ T +harem Cvs Z +haricot CwF / +harm CxE CF +harmful CzJ r +harmonica Cz0 BN +harmonious C1B z +harmonize C10 BC +harmony C22 3 +harness C3t Bs +harp C5Z T +harpy C5s w +harrier C6c e +harrow C66 W +harry C7Q n +harsh C73 DC +harshness C+5 y +harvest C/r 1 +hash DAg a +hashish DA6 k +haste DBe m +hastily DCE y +hat DC2 Q +hatch DDG l +hatch out DDr h +hate DEM d +hated DEp W +haul DE/ W +haunt DFV w +have DGF BQ +have a bath DLK x +have a fever DL7 s +have a good time DMn BN +have a tendency DN0 r +have an accident DHV 5 +have an erection DIO 4 +have an interest in DJG 6 +have at ones disposal DKA BK +have bad luck DOf 5 +have compassion on DPY Bd +have confidence in DQ1 BX +have diarrhoea DSM u +have effect DS6 BO +have enough DUI y +have faith DU6 BM +have faith in DWG Bl +have good luck DXr BI +have got DYz q +have got hold of DZd v +have sex DaM 9 +have sexual intercourse DbJ BN +have the right to DcW 6 +have to DdQ 5 +hawk DeJ U +hawksbeard DfA u +hawkweed Ded j +hay Dfu P +haystack Df9 u +hazard Dgr CS +hazardous Di9 BD +haze DkA BI +hazel Dl0 X +hazelnut DmL g +hazeltree DlI s +he DnU Z +head Dnt Bg +head for Dt8 g +head of a department Duc 7 +head of a school DvX BT +head of cattle Dwq 0 +head of department Dxe 3 +head of state DyV r +head up DzA u +headache DpN c +header Dpp f +heading DqI x +headlamp Dq5 c +headlight DrV x +headmaster DsG BL +headquarters DtR r +heal Dzu s +health D0a a +health resort D1b n +healthy D00 n +heap D2C Dt +hear D5v q +hearing D6Z a +hearing aid D6z p +hearsay D7c BK +heart D8m c +heart D9C U +heartburn D9W BG +hearth D+c Bh +hearty D/9 k +heat EAh Bg +heater ECB l +heath ECm 3 +heather EDd l +heating EEC e +heaven EEg b +heavenly EE7 o +heavenly body EFj z +heavy EGW f +hectolitre EG1 s +hectometre EHh l +hedge EJA h +hedge clippers EJh q +hedge shears EKL n +hedgesparrow EIG 6 +hedonism EKy k +heel ELW c +hegoat Dmr p +height ELy h +height of the barometer EM6 / +heighten EMT n +heir EN5 i +helium EOb a +helix EO1 BE +hell EP5 P +hellebore EQI g +hello EQo s +hello ERU W +helm ERq Y +helmet ESC V +help ESX CQ +help down EX8 e +help off EYa c +helper EUn 1 +helpful EVc r +helpfulness EWH 7 +helpless EXC 6 +hemi EY2 a +hemisphere EZQ s +hemlock EZ8 f +hemorrhoid Eab f +hemp Ebo T +hempnettle Ea6 u +hen Eb7 a +hence EcV j +hens egg Ec4 c +hepatica EdU k +hepatitis Ed4 i +her Eea Bk +herald Ef+ 0 +heraldry Egy t +herb Ehf U +herd Ehz Be +here EjR a +here and there Enl r +here are EoQ BA +here is EpQ 8 +hereafter Ejr n +hereditary EkS w +heredity ElC 1 +heresy El3 c +heretic EmT a +heretical Emt e +herewith EnL a +hermit EqM n +hero Eqz b +heroic ErO n +heroin Er1 a +heroine EsP Z +heroism Eso w +heron EtY W +herpes Etu W +herring EuE j +hers Eun g +herself EvH p +hesitant Evw f +hesitate EwP B0 +hesitation EyD BR +hexadecimal EzU 1 +hexagon E0J d +hey E0m v +hey there E1V a +hibiscus E1v e +hiccup E2N n +hidden E20 BN +hide E43 Ce +hide oneself E8c BL +hideandseek E4B 2 +hideous E7V BH +high E/2 l +high school FBy j +high society FCV x +high tide FDG p +highflown E9n BI +highhandedness E+v BH +highway FAb BX +hill FDv i +hill up FFT b +hillside FER BC +him FFu BF +himself FGz n +hind FHa 1 +hind axle FNA g +hind part FNg j +hind wheel FOD j +hinder FIP Co +hindmost FK3 1 +hindrance FLs BU +hinge FOm Z +hinny FO/ Y +hint FPX g +hinterland FP3 k +hip FQb P +hippo FQq Y +hippopotamus FRC p +hire FRr Bq +hired house FTV i +hired out FT3 f +hirsute FUW e +his FU0 3 +hiss FVr b +historian FWG 4 +history FW+ z +hit FXx B/ +hitch on FZw 5 +hither Fap g +hoar FbJ n +hoarse Fbw i +hoax FcS / +hobby FdR p +hock Fd6 V +hockey FeP Y +hod Fen V +hoe Fe8 T +hog FfP Z +hogweed Ffo e +hoist FgG j +hoist up Fgp p +hold FhS BQ +hold a postmortem Fki BE +hold against FjN BV +hold back Flm Bi +hold responsible FnI BV +holder Fii r +hole Fod BH +holiday Fpk BB +holiness Fql g +hollow Frv y +holloweyed FrF q +holly Fsh W +holmium Fs3 a +holy FtR y +holy object FuD t +homage Fuw BL +home Fv7 2 +homesickness Fwx j +homosexual FxU BH +homy Fyb j +honest Fy+ 9 +honey Fz7 X +honeycomb F0S h +honeymoon F0z m +honeysuckle F1Z m +honor F1/ BD +honorary F3C Bp +honour F4r BE +hood F5v Ci +hoodlum F8R d +hoof F8u S +hook F9A Bh +hook on GAc 2 +hooker F+h BR +hooks and eyes F/y q +hoop GBS U +hoopoo GBm X +hoot after GCw l +hooter GB9 z +hop GDV 3 +hope GEM 0 +hope for GFg BN +hopefully GFA g +hops GGt e +horde GHL c +horizon GHn w +horizontal GIX 8 +horn GJT p +hornbeam GJ8 g +horned viper GKc p +hornet GLF o +horoscope GLt i +horrible GMP Ew +horror GQ/ B2 +horse GS1 q +horse GWW 2 +horsechestnut GTf BD +horsefly GUi 5 +horsepower GXM n +horseradish GVb 7 +horseradish GXz y +horseshoe GYl i +horsewoman GZH i +hospitable GZp v +hospital GaY 2 +hospitality GbO r +host Gb5 + +hostage Gc3 p +hostel Gdg i +hostess GeC q +hostile Ges p +hot GgB v +hot season Ghr l +hotchpotch Ggw m +hotel GhW V +hotheaded GfV s +hour GiQ R +houri Gih e +hours Gi/ V +hours GjU X +house Gjr b +house Gk1 Y +house charge Gn3 t +house of correction Gok 6 +house of ill fame Gpe BI +house of worship Gqm / +house to let Grl j +housed GlN 3 +housefly GmE a +housekeeper Gme o +houseowner GkG v +housewife GnG x +hovel GsI s +hover Gs0 X +how GtL 5 +how are you Gv7 7 +how do you do Gw2 + +how far Gx0 Z +how long Gy8 e +how long GyN v +how many Gza u +how much G0I g +however GuE y +howl Gu2 BF +hub G1S Y +hubcap G0o q +huddle G1q i +hue G2M 0 +hug G3A Bl +huge G4l BW +hull G57 s +hum G6n BN +human G70 c +human being G9W k +human race G96 t +humane G8Q l +humanist G81 h +humble G+n v +humble oneself G/W w +humid HAG Z +humiliating HAf 7 +humility HBa 3 +hummingbird HCR l +humor HC2 Y +humour HDO 6 +humourous HEI m +hump HEu a +humus HFI j +hunchback HGX u +hunchbacked HFr s +hundred HHF c +hundred thousand HHh z +hunger HIU a +hungry HIu d +hunt HJL s +hunt after HKP v +hunt for HK+ r +hunter HJ3 Y +hurdygurdy HLp 7 +hurray HMk W +hurricane HM6 d +hurried HNX i +hurriedly HN5 0 +hurry HOt CT +hurt HRA B5 +husband HS5 s +husk HTl o +husked rice HUN n +hustler HU0 1 +hut HVp W +hyaena HV/ Z +hybrid HWY p +hydrogen bomb HXB 4 +hygiene HX5 e +hygienic HYX u +hymn HZF d +hypnosis HZi d +hypnotic trance HZ/ s +hypnotist Har j +hypnotize HbO w +hypocrite Hb+ 2 +hypocritical Hc0 BM +hypothesis HeA BG +hypothesize HfG t +hypothetical Hfz q +hysteria Hgd g +hysterical Hg9 i +ibex Hhf X +ibis Hh2 S +ice HiI x +iceberg Hi5 c +icecream HjV 8 +icing HkR W +icon Hkn Y +iconoclasm Hk/ r +iconoclast Hlq r +icy HmV k +idea Hm5 BL +ideal HoE X +idealist Hob f +identical Ho6 f +identify HpZ 0 +identity HqN i +ideology Hqv l +idiocy HrU m +idiom Hr6 x +idiot Hsr h +idiotic HtM a +idol Htm r +idol worship Hv/ 5 +idolator HuR 5 +idolatry HvK 1 +idyll Hw4 U +if HxM n +if the occasion arises Hxz Bn +ignition Hza 9 +ignore H0X BH +iguana H1e c +il H16 i +ill H3W U +ill fate H9i f +ill humor H+B w +ill humour H+x x +illfated H2c 6 +illiterate H3q BE +illness H4u Y +illuminate H5G BZ +illusion H6f BH +illustrate H7m BF +illustration H8r 3 +im H/i i +image IAE BY +imagination IBc 3 +imagine ICT BA +imitate IDT u +imitation IEB BF +immaterial IFG v +immediate IF1 u +immediately IGj Cl +immense IJI BF +immensely rich IKN s +immerse IK5 BC +immigrate IL7 g +immune IMb u +imp INJ p +impale INy Z +impartial IOL BI +impatient IPT z +impeach of IQG r +impede IQx BD +impediment IR0 Ba +impel ITO B8 +impenetrable IVK s +imperialism IV2 v +imperialist IWl p +impertinence IXO BF +impertinent IYT + +impetus IZR Cg +implicate Ibx BF +implore Ic2 d +imply IdT / +import IeS n +important Ie5 BP +impose IgI k +impose upon Igs q +imposing IhW v +impossible IiF / +impossibly IjE 9 +imposter IkB BK +impotent IlL f +impress Ilq v +impressible ImZ BJ +impression Ini BD +impressionism Iol v +impressionist IpU s +imprint IqA l +imprison Iql u +improve IrT p +impulse Ir8 BI +impulsive ItE r +imputation Itv m +in Iu3 h +in IuV i +in a hurry M96 2 +in a way M+w v +in abeyance M00 BA +in accordance with M10 Bg +in action M3U Bk +in addition M44 B0 +in all M6s u +in all respects M7a o +in another way M8C + +in any event M9A 6 +in arabic MzA 5 +in case M/f i +in cash NAB r +in charge NAs m +in command NBS n +in consequence of NB5 BB +in detail NC6 h +in distress NDb 5 +in easy circumstances NEU Ba +in english Mz5 7 +in every respect NFu t +in every way NGb BK +in exchange for NHl BV +in fact NI6 Bj +in front of NKd f +in good condition NK8 + +in my opinion NL6 u +in my view NMo n +in no way NNP BE +in ones absence NOT v +in order to NPC BG +in principle NQI 0 +in question NQ8 BI +in rows NSE x +in short supply NS1 BE +in spite of NT5 Ba +in that way NVT BY +in the absence of NXf BM +in the abstract NYr 5 +in the beginning NZk + +in the circumstances Nai BW +in the cuban way NWr 0 +in the daytime Nb4 l +in the evening Ncd o +in the final analysis NdF 0 +in the meantime Nd5 BY +in the middle of NfR BZ +in the morning Ngq 3 +in the presence of Nhh 4 +in the rear NiZ x +in this manner NjK BM +in this way NkW BC +in time NlY r +in turn NmD BW +in vain NnZ c +in what way Nn1 9 +in which Noy i +in working order NpU 1 +inaccessible IvY 5 +inaugural IwR l +inaugurate Iw2 BB +inauguration Ix3 4 +inborn Iyv r +inbred Iza p +incandescent I0D n +incarnation I0q 3 +incendiary I1h q +incendiary bomb I2L t +incense I24 Z +incensory I3R k +inception I31 d +incest I4S l +inch I43 n +incidental I5e BK +incinerate I6o u +incite I7W DZ +incitement I+v BK +inclination I/5 8 +incline JA1 BX +inclined JCM t +inclined to travel JC5 0 +include JDt BL +including JE4 BY +inclusive JGQ h +inclusively JGx Ba +income JIL Bd +incomplete JJo x +inconceivable JKZ BB +inconsistent JLa r +inconvenient JMF + +incorrect JND z +increase JN2 EN +increasingly JSD BN +incredible JTQ 0 +incredibly insolent JUE BH +incubate JVL 0 +incubus JV/ BC +incus JXB BF +indecision JYG 6 +indecisive JZA BQ +indeed JaQ CW +indent Jcm c +independant JdC BM +indescribably JeO y +index JfA Bv +indicate Jgv Cz +indication Jji Ba +indicative Jk8 0 +indicative mood Jlw + +indict for JoF p +indictment Jmu BX +indifference Jou h +indifferent JpP t +indigence Jp8 y +indigenous Jqu l +indigestion JrT BP +indignant Jsi m +indispensable JtI 3 +indistinct Jt/ 9 +indium Ju8 Y +individual JvU BT +indivisible Jwn l +induce JxM BN +inducement JyZ m +indulge Jy/ BR +indulge in J0y s +indulgence J0Q i +industrial J1e 0 +industrial branch J2+ 3 +industrialist J2S s +industrious J31 + +industry J4z BO +inebriety J6B BP +inert J7Q x +inexpensive J8B j +inexperienced J8k y +inexplicable J9W s +inexpressibly J+C x +infant J+z W +infant in arms J/1 r +infantry J/J s +infect KAg 8 +infected KBc BO +infection KCq v +infectious KDZ BC +infer KEb BM +inference KFn x +inferior KGY BF +infernal KHd j +infertile KIA 6 +infest KI6 f +infestation KJZ i +infirm KJ7 m +infirmity of purpose KKh BS +inflammation KLz p +inflammatory KMc n +inflate KND 4 +inflated KN7 i +inflation KOd h +influence KO+ BP +influenza KQN o +inform KQ1 CH +information KS8 Bf +infuse KUb z +infusion KVO o +ingenious KV2 i +ingredient KWY BE +inhabitant KXc 6 +inhale KYW i +inherit KY4 i +inheritance KZa BT +inhibit Kat Bj +initial KcQ Bf +initial cost Kdv p +initial costs KeY r +initial deposit KfD t +initial stage Kfw t +initial velocity Kgd BG +initiate Khj BC +inject Kil o +injection KjN 3 +injure KkE Bt +injured Klx a +injury KmL 6 +ink Kn0 Q +inkpot KoE l +inkwell KnF v +inlet Kop U +inn Ko9 t +innate Kpq o +inner KqS 3 +inner tube KrJ k +innkeeper Krt 5 +innocence Ksm + +innocent Ktk BA +inoculate Kuk x +inoffensive KvV i +inordinate Kv3 BH +inorganic Kw+ l +input Kxj V +inquiry Ky2 g +inquiryoffice Kx4 + +inquisitive KzW BC +inquisitively K0Y BG +insane K1e BQ +insane asylum K2u r +insanity K3Z B2 +insatiable K5P j +inscription K5y m +insect K6Y X +insect repellent K6v / +insert K7u Bd +inside K9L C0 +insidious K// g +insignia LAf t +insignificant LBM CB +insinuate LDN i +insist LDv b +insistence LEK h +inspect LEr BF +inspection LFw BP +inspector LG/ w +inspiration LHv BC +inspire LIx Bt +inspiring LKe j +install LLB z +installment payment LL0 2 +instalment LMq BL +instant LN1 BH +instantly LO8 Bd +instead LQZ j +instead of LQ8 z +instigate LRv BJ +instigator LS4 Bb +instinct LUT o +institute LU7 BE +institution LV/ p +instruct LWo z +instruction LXb Bn +instructor LZC BK +instrument LaM u +instruments of murder La6 7 +insubordinate Lb1 Bh +insubstantial LdW l +insulate Ld7 q +insulation Lel v +insulator LfU i +insult Lf2 Bs +insulted Lhi n +insulting LiJ t +insurance Li2 x +insurance policy Ljn w +insure LkX 4 +insurer LlP BA +integer LmP i +integral Lmx 6 +integrated circuit Lnr BJ +intellect Lo0 x +intellectual Lpl BQ +intelligence Lq1 BZ +intelligent LsO BE +intelligibility LtS BJ +intend Lub CQ +intense Lwr v +intensive Lxa z +intention LyN BQ +intentional Lzd 7 +inter L0Y t +intercede L1F j +intercessor L1o t +interchange L2V Bc +interest L3x B2 +interested L5n 4 +interesting L6f Bj +interface L8C g +interfere with L9I BM +interference L8i m +interior L+U s +interjection L/A t +interment L/t BK +intermission MA3 o +intermittent MBf y +internal MCR + +internal combustion engine MDP Bd +international MEs u +international express MFa 4 +international express train MGS BD +interpret MHV BP +interpretation MIk BK +interpreter MJu / +interpunction MKt 6 +interrogate MLn Bq +interrupt MNR 8 +interruption MON BD +interval MPQ s +intervene MP8 BE +interview MRA BB +intestine MSB a +intestines MSb i +intimate MS9 BB +intimidation MT+ q +into MUo m +into the heights MZC t +intolerant MVO q +intone MV4 t +intoxicate MWl k +intoxicated MXJ 7 +intoxicating liquor MYE + +intractable MZv l +intrepid MaU BR +intrigue Mbl 1 +introduce Mca BZ +introduction Mdz 2 +intrude Mep BM +invade Mf1 r +invasion Mgg j +invective MhD u +invent Mhx Bl +invention MjW w +inventor MkG f +inventory Mkl r +inverted comma MlQ y +inverted commas MmC 1 +invest Mm3 x +investigate Mno BY +investigation MpA B5 +investment Mq5 w +investor Mrp s +invincible MsV 3 +invitation MtM x +invite Mt9 1 +invite tenders for Muy z +invoice Mvl Bu +invoke MxT + +inwards MyR v +iodine NqJ a +iota Nqj U +iridium Nq3 b +iris NrS Z +iron Nrr Bc +iron clothes NvJ z +iron wire Nv8 j +ironic NtH b +ironing board Nti u +ironwork NuQ e +irony Nuu b +irradiate Nwf g +irradiation Nw/ n +irresistible Nxm r +irresolute NyR m +irresolution Ny3 BC +irrigate Nz5 BO +irritating N1H 4 +island N1/ Y +isnt it N2X y +isnt it N3J z +isnt that so N38 9 +isolate N45 p +isolated N5i x +isolation N6T BL +issue N7e Bq +it N9I BU +it doesnt matter OCb Bp +it is rumoured that OEE 2 +it is understood that OE6 6 +itch N+c BA +item N/c / +its OAb d +its a matter of OBd + +itself OA4 l +ivory OF0 z +ivy OGn U +jack OG7 BG +jack off OJF 9 +jackal OIB d +jacket OIe n +jade OKC BX +jaguaro OLZ d +jail OL2 BH +jam OM9 i +jargon ONf 0 +javelin OOT w +jaw OPD d +jawbone OPg l +jaws OQF x +jay OQ2 f +jealous ORV BE +jealousy OSZ p +jeer OTC k +jeer at OTm BK +jellyfish OUw w +jennyass OVg k +jerk OWE m +jest OWq t +jester OXX 0 +jet plane OYL s +jewel OY3 BJ +jeweller OaA h +jingle Oah BL +job Obs d +job OcJ CC +jocular OeL m +jog Oex + +join Ofv EE +joining Ojz y +joint Okl B0 +joke OmZ B7 +jolt OoU Y +jot Oos S +journal Oo+ s +journalist Opq Bj +journey OrN u +joy Or7 BJ +joyful OtE BD +joystick OuH q +jubilant Oux i +jubilation OvT m +jubilee Ov5 y +judge Owr Bi +judgement OyN h +judgment Oyu 8 +jug Ozq Bb +juggle O1F b +juggler O1g e +juice O1+ U +jumbled up O3M i +jumblesale O2S 6 +jump O3u l +jump off O4T k +junction O43 2 +june bug O5t g +jungle O6N r +junior O64 q +junto O7i t +jurisprudence O8P o +jurist O83 b +jury O9S X +just O9p D1 +just now PCf BA +just one PDf x +justice PBe BB +jute PEQ U +kangaroo PEk i +kappa PFG V +karma PFb X +kea PFy P +keel PGB S +keen PGT BO +keep PHh E0 +keep an eye on PPh BC +keep at a distance PQj 8 +keep at bay PRf u +keep back PSN j +keep burning POm 7 +keep house PSw 1 +keep in PTl b +keep on PUA BJ +keep ones hands off PVJ BG +keeper of the records PMV 6 +keepsake PNP BX +kennel PWP f +kerchief PWu g +kernel PXO b +kerosene PXp f +kettle PYI 8 +key PZE BA +keyboard PaE r +kibbutz Pav b +kick Pby v +kick down Pch e +kick it Pc/ Z +kick off PdY p +kickoff PbK o +kid PeB p +kidney Peq W +kill PfA n +kill oneself Pfn BI +kiln Pgv Z +kilo PhI e +kilobyte Phm c +kilometre PiC i +kilt Pik e +kimono PjC Z +kind Pjb DU +kindle Pmv BI +kindness Pn3 / +king Po2 q +kingdom Ppg e +kingfisher Pp+ i +kingship Pqg g +kip PrA O +kirk PrO f +kiss Prt q +kiss and be friends again PsX 6 +kitchen PtR q +kite Pt7 i +kitten Pud U +klaxon Pux n +knapsack PvY k +knapwood Pv8 d +knead PwZ V +knee Pwu R +kneel Pw/ x +knife Pxw R +knight PyB h +knit Pyi S +knitting needle Py0 y +knob Pzm 1 +knock P1S BY +knock at the door P2q v +knock off P3Z BD +knockkneed legs P0b 3 +knot P4c BV +know P5x BK +know how P8L + +knowledge P67 BQ +kopje P9J W +krypton P9f b +label P96 c +labor agreement QC6 6 +labor dispute QD0 x +labor exchange QEl BG +labor market QFr s +labor movement QGX 1 +laboratory P/V p +laboratory assistent P/+ 7 +laborer QA5 BM +laborers QCF 1 +laborintensive P+W / +labour QJV u +labour agreement QMC 7 +labour contract QM9 4 +labour dispute QN1 y +labour exchange QOn BH +labour market QPu t +labour movement QQb 2 +labour pains QRR n +labourer QKD BL +labourers QLO 0 +labourintensive QHM BA +labourunion QIM BJ +lace QR4 R +lack QSJ Bj +lackey QTs k +lacquer QUQ u +lad QU+ Z +ladder QVX Y +laddie QVv f +ladies and gentlemen QWO BR +lady QYW 1 +lady help Qcw y +ladybug QZL BD +ladyinwaiting QXf 3 +ladylike QaO 5 +ladys bag QbH u +ladys mantle Qb1 7 +laggard Qdi g +lagoon QeC j +laid up Qel d +lake QfC i +lamb Qfk r +lambda QgP X +lame Qgm j +lament QhJ y +lamp Qio S +lampshade Qh7 t +lance Qi6 x +land Qjr CC +land tortoise Qqy u +landing QnN j +landingstage Qlt Bg +landlady Qnw g +landlord QoQ 5 +landmark QpJ g +landscape Qpp h +landslide QqK o +lane Qrg S +language Qry c +lanky QsO m +lantern Qs0 c +lanthanum QtQ i +lap Qty 6 +lapse Qus a +lapsed QvG BK +larch QwQ p +larder Qw5 g +large QxZ X +large spoon Qxw m +lark QyW Y +larkspur Qyu l +larva QzT X +laryngitis Qzq r +larynx Q0V g +lass Q01 Z +lasso Q1O V +last Q1j EC +last days of autumn Q7v 2 +last night Q8l BU +last week Q95 0 +lasting Q5l CK +late Q+t i +late at night RBj t +late in the afternoon RCQ BA +late in the morning RDQ 7 +lately Q/P x +later RAA W +later on RAW 3 +latex RBN W +lath REL T +lathe REe n +lather RFF h +latrine RFm c +laud RGC BJ +laugh RHL h +laugh at RIe f +laughter RHs y +launch RI9 Bb +laundress RKY g +laundry RK4 f +laundry mark RLX r +laurel RMC h +lava RMj j +lavender RNG g +law RNm c +law of nature RSW s +lawless ROC 4 +lawn RO6 6 +lawrencium RP0 m +lawsuit RQa BJ +lawyer RRj z +laxative RTC r +lay RUk / +lay a distress upon RYl 6 +lay before RZf o +lay down RaH BG +lay hold of RbN BE +lay on top of RcR u +lay out Rc/ y +layby RTt 3 +layer RVj Bg +layer of earth RXD 6 +layman RX9 o +laziness Rdx d +lazy ReO T +lead Reh Bo +lead away RjO h +leader RgJ Bj +leading Rhs 0 +leading article Rig u +leaf Rjv X +leaf through RlK + +leaflet RkG BE +league RmI u +lean Rm2 Bv +lean against Rol s +leap Rp8 j +leap down Rqf h +leap upon RrA BJ +leapyear RpR r +learn RsJ f +learn of Rtw l +learned Rso s +learnt RtU c +lease RuV BZ +least Rvu s +leasurely Rwa BC +leather Rxc BF +leather goods Ryh y +leave RzT Do +leave behind R3O z +leave in abeyance R4B y +leave out R4z BG +leave out of account R55 CY +leaven R27 T +leaving certificate R8+ 2 +leaving examination R90 5 +leavings R8R t +lectern R+t m +lector R/T Y +lecture R/r CA +lecturer SBr f +leech SCK c +leek SCm S +left SC4 Bs +left out SEk e +left over SFC x +left side SFz h +leg SGU l +legal SG5 0 +legation SHt e +legend SIL u +legendary SI5 n +legging SJg Z +legible SJ5 d +legion SKW a +legitimize SKw u +leisurely SLe z +leitmotif SMR l +lemming SM2 j +lemon SOH X +lemon juice SO+ n +lemonade SOe g +lemontree SNZ u +lend SPl 6 +length SQf p +lengthen SRI BW +lengthwise SSe w +leniency STO BZ +lenient SUn 7 +lens SVi R +lentil SVz V +leopard SWI i +leper SWq u +leprosy SXY o +less SYA X +less and less Sa6 7 +lessen SYX k +lesser bindweed SZ6 u +lesserthan sign SY7 / +lesson Sao S +let Sb1 BR +let know Skq By +let off Smc m +lethargy SdG BW +lets start Sj2 0 +letter Sec BN +letter of credit SgQ v +letter of introduction Sg/ BE +letter of recommendation SiD BH +letterbox Sfp n +lettuce SjK s +level SoG EM +level crossing SsS BE +levelcrossing SnC BE +lever StW BH +lewd Sud 3 +lewdly SvU b +liability insurance Svv BO +liberal Sw9 n +librarian Sxk q +library SyO s +licence Sy6 2 +license Szw BO +licentious S0+ 9 +lick S17 S +lid S2N q +lie S23 1 +lie down S4Q BI +lie encamped S5Y u +lieutenant S3s k +life S7f a +lifebelt S6G t +lifebelt S75 j +lifeboat S6z s +lifeless S8c k +lift S9A Ch +ligament S/h b +ligature S/8 r +light TBo De +light up TKR 3 +lighten TFG u +lighter TF0 n +lighthouse TGb 2 +lighting THR e +lightly THv BO +lightning TI9 BU +lightswitch TAn BB +likable TLI q +like TLy Cp +like that TQe BC +like this TRg B5 +likely TOb h +likewise TO8 Bi +lilac TTZ X +lily TU7 U +lilyofthevalley TTw BL +limb TVP Y +lime TVn m +lime TW9 1 +limetree TWN w +limit TXy BZ +limitation TZL w +limited TZ7 s +limited liability Tan / +limited liability company Tbm BV +limp Tc7 BM +lindentree TeH 1 +line Te8 CU +line up TjR BD +lineage ThQ u +linen Th+ q +lineseed oil Tio p +lingo TkU Z +linguist Tkt 6 +linguistic Tln BB +lining Tmo Z +link TnB 0 +link together ToO w +link up To+ j +linker Tn1 Z +linoleum Tph q +lion TqL U +lip Tqf O +liquefied petroleum gas Tqt / +liqueur Trs a +liquid TsG v +liquid manure Tu+ w +liquidate Ts1 CJ +liquor Tvu BB +lira Twv U +lisp TxD V +list TxY BF +listen Tyd BH +listen in T0O f +listener Tzk q +litany T0t b +liter T1I V +literal T1d r +literary T2I 6 +literature T3C / +lithium T4B c +litigate T4d f +litre T48 X +litter T5T g +little T5z 9 +little bell T6w s +little bird T7c i +little boat T7+ e +little brother T8c o +little by little T9E BL +little owl T+P o +little present T+3 1 +little stick T/s o +liturgy UAU f +live UAz BB +live in lodgings UFH 0 +live on UF7 f +live through UGa 4 +live to see UIN BG +live together UHS 7 +live upon UJT j +lively UB0 Ba +liver UDO V +liver sausage UDj q +livestock UEN 6 +living alone UK5 p +living room ULi k +livingroom UJ2 BD +lizard UMG Y +load UMe BU +loaded with UNy w +loaf UOi X +loafer UO5 t +loan UPm r +loathe UQR / +lobe of the ear URQ n +lobster UR3 BE +local US7 i +locate UTd 5 +location UUW / +loch UVV u +lock UWD Bi +lock up UYq + +locked UXl j +locksmith UYI i +locomotive UZo k +locust UaM d +lofty Uap g +log in Ucz Z +log out UdM c +logic UbJ Y +logical Ubh c +logical reasoning Ub9 2 +loin Udo a +lonely UeC a +long Uec 0 +long for UiS BW +longan UfQ a +longboat Ufq c +longing UgG Bb +longitude Uhh x +look Ujo D3 +look after UoM CM +look askance UqY 9 +look at UrV Bn +look down Us8 0 +look for Utw BL +look forward Uu7 r +look forward to Uvm 0 +lookingglass Unf t +loom Uwa Y +loop Uwy r +loopy Uxd BJ +loose Uym 9 +loose cover Uzj g +lord U0D x +lorry U00 v +lose U1j Bx +lose flesh U3U t +lose in weight U4B y +lose ones way U4z z +loss U5m Bf +lost U7F BG +lot U8L a +lottery U8l o +lotus U9N W +loud U9j X +loudly U96 f +lounge U+Z d +lounge suite U+2 m +louse U/c S +lovable U/u BD +love VAx Cy +love of ones neighbour VL9 BQ +loved VDj e +loved one VEB BP +lovely VFQ Ep +lover VJ5 CE +loving VNN d +low VNq BA +low relief VWF m +low tide VWr W +lower VPq Br +lower case letter VR0 9 +lower course VSx o +lower middleclass VTZ 3 +lower part VUQ 5 +lower part of the body VVJ 8 +lowerarm VOq BA +lowering VRV f +loyal VXB 0 +luck VX1 Bq +luggage VaO a +luggage ticket Vao s +luggagevan VZf v +lukewarm VbU i +lull Vb2 T +lullaby VcJ p +lump Vcy Bz +lump of earth Vel p +lunacy VfO B0 +lunar VhC k +lunatic Vhm x +lunch ViX BD +lung Vja S +lungwort Vjs f +lupine VkL Z +lure Vkk U +lurid Vk4 4 +lust Vlw Bd +lute VnN S +lutetium Vnf g +luxurious Vn/ t +luxury Vos Bi +lyceum VqO b +lye Vqp Q +lyingin room Vq5 1 +lyingin woman Vru 3 +lynx Vsl Y +lyre Vs9 T +lyric VtQ U +macabre Vtk BF +macaroni Vup i +macaw VvL o +mach Vvz T +machine VwG c +machine of government VxM BA +machinery Vwi q +mackerel VyM c +mad Vyo Bi +madam V0K Y +madness V0i By +maestro V2U z +magazine V3H BT +magic V4a BK +magical V5k p +magician V6N BF +magnanimous V7S 0 +magnesium V8G x +magnet V83 Z +magnetic V9Q g +magnetism V9w k +magnetize V+U k +magnificent V+4 BF +magnifying glass V/9 6 +magpie WA3 Y +maid WBP BF +maidenhair WCU 4 +mail WDM d +mailbox WDp k +mailman WEN p +main WE2 l +mainland WFb 2 +mainly WGR / +maintain WHQ B6 +maintenance WJK BN +maize WKX Z +majestic WKw BC +majesty WLy BY +major WNK 1 +major road WP4 BB +majoram WN/ r +majority WOq BO +make WRy CJ +make a bad decision WYs BX +make a contract WaD BE +make a deposit WbH 1 +make a down payment Wb8 + +make a draft Wc6 x +make a list Wdr 0 +make a mistake Wef BW +make a night of it Wf1 x +make a noise Wgm BP +make a note Wh1 BJ +make a project of Wi+ BE +make a stroke WkC 5 +make a uvular r Wk7 BD +make a will Wl+ q +make acquaintance WT7 6 +make an appeal to WU1 5 +make an appointment WVu BJ +make an offer of WW3 BB +make available WX4 0 +make bitter Wmo l +make clean WnN BJ +make eyes at WoW h +make fast Wo3 BX +make for WqO 1 +make fun of WrD 0 +make glad Wr3 s +make love Wsj By +make money WuV o +make music Wu9 y +make no account of Wvv 0 +make smooth Wwj BP +make the sign of the cross Wxy BB +make up Wyz Br +make up ones mind W0e 9 +make use of W1b BZ +make war W20 q +make war against W3e t +make war on W4L l +makeup WQ5 5 +making W4w BS +malaria W6C f +male W6h 6 +male cat W7b a +male cook W71 Y +malfunction W8N Bb +malicious W9o BX +mallet W+/ v +mallow W/u s +malt XAa U +mam XAu k +mammal XBS Y +mammy XBq n +man XCR 5 +man of genius XcE p +mana XDK T +manage XDd Bt +manageability XFK BK +manageable XGU 0 +management XHI BV +manager XId Bw +mandate XKN w +maneuver XK9 e +manganese XLb i +manger XL9 BB +mango XN4 e +mangosteen XOW n +mangotree XM+ 6 +manicure XO9 h +manifacture XPe BY +manifest XQ2 BA +manipulate XR2 8 +mankind XSy m +manna XTY V +manner XTt m +manoeuvre XUT / +mansion XVS e +mantel XVw i +mantelpiece XWS s +mantle XW+ c +manufacture XXa B0 +manure XZO Y +manuring XZm i +manuscript XaI 5 +many XbB g +manœuvre Xbh j +map Xct h +maple XdO h +maple Xdv z +marble Xei z +march XfV s +march off XgB BB +march on XhC v +margarine Xhx m +margin XiX m +marguerite Xi9 k +marigold Xjh h +marijuana XkC k +marionette Xkm h +maritime XlH m +mark Xlt C1 +mark down Xrr h +mark of cain XsM p +mark out Xs1 f +mark with a cross XtU x +market Xoi Bg +market trader Xq9 u +marketplace XqC 7 +marmelade XuF u +marriage Xuz BJ +married Xv8 i +married people Xwe 0 +marry XxS Ca +marsh Xzs u +martagon lily X0a w +marten X1K Y +martial X1i w +martyr X2S 8 +marvel X3O z +marvel at X4B 5 +mascara X46 f +masculine X5Z h +mashed potatoes X56 5 +mask X6z Bk +masked ball X8X 4 +mason X9P Y +masonic X9n m +masonry X+N h +masquerade X+u 1 +mass X/j Bn +mass produce YDs / +massacre YBK Bf +massage YCp q +massive YDT Z +mast YEr U +master YE/ Cc +master builder YH7 8 +masterful YHb g +masturbate YI3 l +mat YJc a +match YLx 4 +matchmake YJ2 o +matchmaker YKe BT +mate YMp r +material YNU Ba +materialize YOu + +materials YPs o +maternal aunt YQU + +maternal grandfather YRS Bt +maternal grandmother YS/ BD +maternal grandparents YUC BP +maternal uncle YVR 7 +mathematical YWM 2 +mathematician YXC 7 +mathematics YX9 z +matrimony YYw BM +matrix YZ8 s +matron Yao d +matter YbF B/ +mattress YdE b +mature Ydf r +matzo YeK g +maw Yeq o +maxim YfS t +maximum Yf/ 4 +may Yg3 n +maybe Yhe BC +mayhap Yig BF +mayor Yjl BB +me Ykm 2 +mead Ylc X +meadow Ylz BF +meager Ym4 Bt +meal Yol BW +mealies Yp7 e +mean YqZ C2 +meander YtP p +meaning Yt4 Bm +meaningless Yve BI +means Ywm BH +meanwhile Yxt Bi +measles YzP a +measurable Yzp k +measure Y0N Bh +measure out Y4T q +measured Y1u BK +measurement Y24 Bb +meat Y5w T +meatfly Y49 z +mechanic Y6D z +mechanical Y62 z +mechanics Y7p y +medal Y8b f +meddler Y86 5 +meddlesome Y9z y +meddlesomeness Y+l 8 +mediate Y/h p +mediation ZAK 4 +medical ZBC BA +medicine ZCC BE +medick ZDG a +meditate ZDg 5 +meditative ZEZ i +medly ZE7 b +meekness ZFW BV +meercat ZGr b +meet ZHG C3 +meet each other ZLM BJ +meet one another ZMV BL +meet with ZNg BW +meeting ZJ9 BP +melancholy ZO2 CN +melilot ZRD g +mellowness ZRj 1 +melodrama ZSY l +melodramatic ZS9 u +melody ZTr 4 +melon ZUj W +melt ZU5 CE +melting ZW9 X +member ZXU BH +member of parliament ZZA Bh +membership ZYb l +memento Zah BV +memorable Zb2 v +memorize Zcl BN +memory Zdy Bi +menace ZfU BK +menacing Zge t +mend ZhL BD +mendelevium ZiO l +mendicant friar Ziz w +mendicant order Zjj v +mental ZkS j +mentally deficient Zk1 3 +mention Zls BZ +menu ZnF u +merchandise Znz 9 +merchant Zow 1 +merciful Zpl z +mercifulness ZqY 7 +mercury ZrT o +mercy Zr7 u +mere Zsp i +merit ZtL BN +merlin ZuY a +merry ZwF Bv +merrygoround Zuy BT +mesh Zx0 q +mess Zye b +message Zy5 Bj +messenger Z0c v +metal Z1L i +metalled Z1t 0 +metallic Z2h c +metamorphosis Z29 Bp +metaphor Z4m y +meteoric stone Z5Y BD +meteorite Z6b / +meteorology Z7a 7 +method Z8V Z +method of preparation Z9a BB +methodical Z8u s +methylated spirit Z+b 0 +metre Z/P p +metric Z/4 Y +metropolis aAQ Bl +mica aB1 c +microbe aCR b +microfilm aCs i +micrometre aDO m +microphone aD0 j +microscope aEX l +mid aE8 a +midday aFW d +midday meal aFz 4 +middle aHn BS +middleaged aGr 8 +middleclass aI5 m +middleclass citizen aJf BI +middy aKn Z +midgebite aLA q +midget aLq 0 +midnight aMe f +midnight mass aM9 l +midshipsman aNi l +midwife aOH v +migrant aO2 2 +migrate aPs + +mild aQq BG +mildness aRw BV +mile aTF R +milepost aTW e +milestone aT0 f +military aUT 7 +military division aVO 8 +milk aW3 e +milkpowder aWK t +mill aXV m +millenium aX7 4 +millennium aYz i +miller aZV h +millet aZ2 W +millibar aaM f +millimetre aar l +milliner abQ q +million ab6 a +millionaire acU l +mince adn Y +minced meat ad/ g +mincepie ac5 u +mind aef Bj +mine agC 1 +mine sweeper ajD p +minefield ag3 i +minelayer ahZ k +miner ah9 a +mineral aiX s +mingle ajs Bm +minimum alS y +mining anD a +miningengineer amE / +minister and q +ministerial aoH q +ministry aox k +minority apV BV +mint arX 1 +mintmaster aqq t +minuend asM c +minus aso b +minus sign atD i +minute atl W +minutes at7 BA +miracle au7 i +miraculous avd Bb +mirage aw4 x +mirror axp q +miscalculate ayT BT +miscarriage azm s +miscarry a0S CB +miscellaneous a2T 4 +mischievous a3L CF +miser a5Q 2 +miserable a6G GY +miserably bAe h +miserliness bA/ BQ +miserly bCP BO +misery bDd BJ +misfeasance bEm l +misleading bFL v +miss bF6 r +mission bGl s +missionary bHR w +mist bIB m +mistake bIn z +mistaken bJa 3 +mistletoe bKR n +mistress bK4 p +misty bLh v +misunderstand bMQ + +misunderstanding bNO y +mite bOA R +miter bOR X +mitre bOo X +mitten bO/ Z +mix bPY Bh +mixture bQ5 BA +mizzle bR5 Z +mnemonic bSS f +moan bSx c +mobile bTN z +mobilize bUA h +mock bUh Bv +mockery bWQ BS +mode bXi 5 +model bYb Bh +modem bZ8 V +moderate baR Bo +moderation bb5 m +modern bcf v +modernize bdO k +modest bdy BI +modestly be6 2 +modesty bfw B5 +modify bhp o +moist biR q +moisture bi7 o +mold bjj BY +mole bk7 Q +molecule blL g +molybdenum blr l +mom bmQ i +moment bmy BG +momentarily bn4 BY +momentary bpQ l +mommy bp1 n +monastery bqc 0 +monetary system brQ w +monetary union bsA + +monetary unit bs+ u +money bvO b +money box bvp u +money order bwX p +moneybox bts z +moneygrubber buf v +mongoose bxA 0 +mongrel bx0 t +monitor byh g +monk bzB r +monkey b1S X +monkey puzzle b1p BQ +monkeylike bzs s +monkeywrench b0Y 6 +monkshood b25 r +monocle b3k k +monogamy b4I j +monologue b4r u +monopolize b5Z w +monopoly b6J x +monotonous b66 3 +monsignor b7x k +monster b8V CA +monstrance b+V j +monstrosity b+4 w +monstrous b/o BB +montbretia cAp o +month cBR V +monthly cBm u +monthly nurse cCU n +monument cC7 t +monumental cDo l +mood cEN BZ +moon cFm a +moon cGA S +moor cGS Ba +moorage cHs 2 +moorhen cIi c +mooring cI+ z +moose cJx U +moped cKF Y +moraine cKd j +moral cLA BS +moralist cMS 7 +morality cNN 9 +morals cOK w +moratorium cO6 4 +mordant cPy b +more cQN g +more and more cT+ BP +more or less cVN o +more precisely cV1 r +more than cWg 0 +morel cQt a +morello cRH Z +moreover cRg CB +mores cTh d +morganatic cXU p +morganatical cX9 s +morning cYp k +morning star cZN r +morning time cZ4 p +morose cah 8 +morpheme cbd e +morphia cb7 c +morphine ccX e +morphine addict cc1 t +morphinomaniac cdi w +morphology ceS q +morsel ce8 h +mortal cfd c +mortar cf5 j +morter cgc 3 +mortgage chT g +mortician chz x +mosaic cik b +mosaic work ci/ m +moselle cjl c +mosque ckB W +mosquito cmn f +mosquito net cnG BW +mosquito repellant coc BH +mosquitonet ckX BE +mosquitonetting clb BM +moss cqN Q +mossgreen cpj q +mossy cqd X +most cq0 b +most charming csG v +most important cs1 8 +most of ctx 8 +mostly crP 3 +motel cut V +motet cvC V +moth cv/ x +motheaten cvX o +mother cxp q +motherinlaw cww 5 +mothproof storage bag cyT 9 +motion czQ j +motion picture c1E y +motionless czz BR +motivation c12 l +motive c2b BG +motor c7A W +motor road c/s BO +motor tyre dA6 k +motor vehicle dBe 7 +motorboat c3h t +motorcycle c7W r +motorcycle policeman c4O BK +motorcyclist c5Y 2 +motorial c8B j +motoring c8k k +motorist c9I 4 +motorize c+A i +motorlaunch c6O y +motorway c+i BK +motto dCZ BT +mould dDs BZ +mouldy dFF BH +mouldy smell dGM o +mount dG0 w +mountable dHk h +mountain dKE X +mountain air dNv l +mountain chain dOU 3 +mountain climber dPL + +mountain hut dQJ i +mountain lion dQr j +mountain pass dRO w +mountain pasture dR+ 2 +mountain path dS0 y +mountain peak dTm k +mountain range dUK p +mountain ridge dUz Bi +mountain slope dWV p +mountain top dW+ i +mountainash dIF BC +mountainash berry dJH 9 +mountaineer dKb 1 +mountaineering dLQ BG +mountaineering boot dMW 1 +mountainous dNL k +mounted dXg a +mounting dX6 BA +mourn dY6 7 +mournful dZ1 BF +mourning da6 a +mouse dbU S +mousepad dbm e +mousetrap dcE f +moustache dcj l +mouth ddI 8 +mouthful deE l +move dep EK +movement diz v +movie dji + +movie theatre dkg z +moving dlT Bb +mow dmu a +mozaic floor dnI t +mr gm Q +mrs g2 S +mu dn1 M +much doB T +muckwater doU x +mucous dpF o +mucus dpt Y +mud dqw l +muddy drV a +mudguard drv 2 +mudstained dqF r +muezzin dsl n +mug dtM s +mulatto dt4 r +mulberrytree duj BA +mule dvj x +muleteer dwU p +mullein dw9 m +multi dxj c +multicoloured dx/ w +multinational dyv v +multiple dze d +multiply dz7 BM +multitasking d1H t +multitude d10 BZ +mummification d3N t +mummy d36 X +munition d4R r +muntjac d48 o +mural d5k z +mural painting d6X BE +murder d7b z +murderer d8O w +murderess d8+ k +murderous weapon d9i x +murk d+T q +murmur d+9 CH +muscatel eBE i +muscle eBm V +muscular eB7 g +muse eCb T +muser eCu k +museum eDS b +mush eDt d +mushroom eEK 2 +music eIz Y +musical eJ9 2 +musical box eLe o +musical club eMG v +musical evening eM1 w +musical instruction eNl 9 +musical instrument eOi BG +musical performance ePo + +musical society eQm 5 +musical time eRf 3 +musicalbox eJL y +musicality eKz r +musicbook eFA t +musicbox eFt t +musician eSW BE +musiclesson eGa x +musiclover eHL 2 +musicology eTa y +musicstand eIB y +musk eWI U +muskdeer eUM o +musket eWc Y +musketeer eW0 i +muskox eU0 k +muskrat eVY w +musky smell eXW n +muslin eX9 m +musquash eYj q +mussel ean W +musselbank eZN u +musselbed eZ7 s +must ea9 / +mustard ecp b +mustard pot edE m +mustard sauce edq r +mustard seed eeV p +mustardgas eb8 t +musterroll ee+ v +musty eft o +mutation egV h +mute eg2 s +mutineer ehi y +mutiny eiU x +mutter ejF BH +mutton ekM b +mutual ekn 4 +mutual understanding emG BO +mutually elf n +muzzle enU BA +my eoU X +myriad eor Z +myrrh epE V +myself epZ h +mysterious ep6 BC +mysteriousness eq8 0 +mystery erw z +mystic esj n +mystical etK b +mysticism etl j +mystification euI BD +mystify evL BF +myth ewQ S +mythical ewi c +mythologist ew+ o +mythology exm n +myxomatosis eyN p +nabob ey2 W +nadir ezM h +nag ezt P +naiad ez8 h +nail e39 BA +nail clipper e49 o +nail clippers e5l p +nailbed e0d l +nailbrush e1C u +nailfile e1w r +nailscissors e2b z +nailvarnish e3O v +naked e6O y +nakedness e7A h +name e8w m +nameday e7h k +nameless e9W m +namely e98 u +nameplate e8F r +namesake e+q f +nandu e/J Y +nanometre e/h j +nap fAE m +nape fAq Q +naphthalene fA6 m +naphthaline fBg o +naphthol fCI c +napkin fCk Y +narcissus fC8 f +narrate fDb x +narrative fEM 9 +narrow fFJ x +narrow space fF6 v +nasal fGp e +nasturtium fHH k +nasty fHr Gz +nation fOe h +national fO/ r +nationality fPq t +nationalization fQX x +nationalize fRI 1 +native fR9 By +natural fTv g +natural gas fVL l +natural law fVw o +naturally fUP 8 +nature fWY BE +naught fXc b +naughty boy fX3 BQ +nausea fZH BK +nauseate faR BM +nauseous fbd BS +naval cadet fcv m +nave fdV Z +navel fdu W +navigate feE r +navigation fev BB +navy ffw g +navy blue fgQ l +naïf fg1 5 +naïve fhu 8 +near fjr Bn +near to frD 0 +nearby flS Cv +nearer foB n +nearest foo m +nearly fpO BX +nearness fql e +nearsighted fiq BB +neat fr3 s +necessaries fsj o +necessary ftL BI +necessity fuT y +neck fvF V +necklace fva 9 +necktie fwX f +nectar fw2 Y +need fxO Bm +needle fy0 5 +needless fzt q +needlewoman f0X k +needlework f07 BR +needy f2M x +negative f29 3 +negatively f30 l +neglect f4Z Ca +neglectful f6z 8 +negligence f7v BX +negligent f9G BJ +negotiate f+P 8 +neigh f/L V +neighborhood f/g l +neighbour gAF BJ +neighbour on the lower storey gDp BK +neighbourhood gBO BQ +neighbouring gCe BL +neither gEz BO +neither gGB j +neither nor gGk t +nematode gHR p +neodymium gH6 i +neologism gIc p +neon gJF i +nephew gJn h +neptunium gKI k +nerve gKs V +nervous gLB 2 +nest gL3 w +net gMn 1 +nettle gNc g +network gN8 h +neutral gOd 4 +never gPV d +never mind gQ+ BK +nevertheless gPy BM +new gSI c +newness gSk e +news gTC BC +newspaper gUE 9 +next gVB Ch +next of kin gXi 8 +next to gYe BM +next week gZq 5 +nibble gaj j +nice gbG C8 +nice guy geC n +nice smell gep l +niche gfO S +nickel gfg V +nickname gf1 b +niece ggQ U +niggard ggk 4 +nigger ghc 2 +niggler giS BP +night gvN T +night club g0y h +night flight g1T l +night is falling g14 x +night prayers g2p n +night rate g3Q i +night spot g3y h +night tariff g4T m +nightattire gjh w +nightblind gkR t +nightblindness gk+ 5 +nightdress gl3 s +nightduty gmj w +nightfrost gnT t +nightgown goA r +nightie gvg d +nightingale gv9 l +nightjar gwi y +nightlamp gor 4 +nightmare gxU BI +nightmarish gyc u +nightmoth gpj 5 +nights rest g0P j +nightschool gqc u +nightservice grK y +nightshade gzK j +nightshift gr8 + +nightshirt gs6 7 +nighttrain gt1 t +nightwatch gui r +nightwatch gzt i +nimbus g45 m +nine g5f S +nineteen g5x f +nineteenth g6Q l +ninety g61 b +ninth g7Q X +niobium g7n b +nip g8C c +nipple g8e g +nipplewort g8+ j +nitpicker g9h Bc +nitrogen g+9 i +no hBG e +no doubt iAP w +no longer iA/ 1 +nobelium hBk f +nobility hCD / +noble hDC a +nobleman hDc d +nobleness hD5 f +nobody hEY 7 +nocturnal hFT j +nocturnal animal hF2 x +nod hGn f +node hHG 2 +noise hH8 z +noiseless hIv 9 +noisy hJs BB +nomad hKt i +nomadic hLP o +nominate hL3 e +nomination hMV BS +nonalcoholic hNn 2 +nonattendance hOd 0 +noncom hS/ g +noncommissioned officer hPR BP +none hTf z +nonmilitary hQg 6 +nonsense hUS B1 +nonskid hRa r +nonskid chain hSF 6 +noodles hWH Z +noon hWg a +noone g/f BB +noones hAg m +nor hW6 Z +norm hXT p +normal hX8 q +north hYm q +northern hZQ p +northward hZ5 h +northwards haa j +nose ha9 R +nostalgia hbO i +nostril hbw u +not hce Q +not an ace ht2 6 +not at all huw B7 +not easily hwr z +not fitting hxe u +not on any account hyM Ba +not quite hzm k +not well h0K BN +not yet h1X b +notary hcu c +notch hdK s +note hd2 Cs +notebook hgi Be +notepad hiA d +noteworthy hid 1 +nothing hjS x +notice hk1 D5 +noticeboard hkD y +notification hou BV +notify hqD BJ +notion hrM BF +notwithstanding hsR Bl +nougat h1y Y +nought h2K g +noun h2q v +nourish h3Z Z +nourishment h3y BQ +novel h5C s +novelist h5u l +novelty h6T 0 +novice h7H j +now h7q BU +now and then h+W Bk +nowadays h8+ j +nowhere h9h 1 +nozzle h/6 V +nu iB0 O +nuance iCC 0 +nuclear iC2 o +nucleus iDe u +nude iEM 1 +nudge iFB z +nudism iF0 3 +nudist iGr m +nudity iHR f +null iHw X +numbed iIH Y +number iIf BO +number of eight iKi p +number of the house iLL z +number sign iL+ o +numberplate iJt 1 +numeral iMm 5 +numismatics iNf 1 +numismatist iOU Bb +nun iPv f +nurse iQO Do +nursery school iT2 z +nut iUp q +nutmeg iVT z +nuts iWG CS +nutty iYY BM +nyctalopia iZk q +nylon iaO l +nymph iaz X +négligé ibK BG +oak idE 8 +oaken ieA r +oakwood icQ 0 +oar ier m +oasis ifR V +oath ifm b +oath of office igB n +oats igo S +obedient ig6 BW +obeisance iiQ 9 +obey ijN Z +obituary ijm l +object ikL BQ +objection ilb BB +objectionable imc BL +obligation inn w +obliging ioX CG +oblique iqd i +oboe iq/ S +obscene irR t +obscure ir+ y +observation isw Bv +observe iuf Cs +obsess ixL l +obsession ixw g +obstacle iyQ Bm +obstetrician iz2 7 +obstinate i0x Bp +obstruct i2a B5 +obstruction i4T BC +obtain i5V 8 +obtainable i6R m +obtuse i63 BJ +obvious i8A BX +obviously i9X / +occasion i+W Bc +occasional i/y 0 +occiput jAm f +occult jBF Y +occupant jBd g +occupation jB9 Bg +occupy jDd BS +occur jEv BP +occur intermittently jHZ BG +occurence jF+ Bb +ocean jIf i +oceanic jJB f +oclock nbN W +octagon jJg e +octagonal jJ+ j +octal jKh g +octopus jLB d +octuple jLe g +oculist jL+ c +odd jMa Bb +ode jN1 O +odor jOD r +odour jOu q +odourous jPY e +of jP2 BH +of a battle jro l +of a beaver jsN l +of a beet jsy h +of a bird jtT n +of a cedar jt6 x +of a deer jur r +of a duck jvW q +of a horse jwA v +of a limetree jwv + +of a maple jxt j +of a pig jyQ r +of a spider jy7 y +of a star jzt 5 +of a tree j0m f +of a wild boar j1F t +of actium jnB j +of all sorts jov 1 +of an alder jpk 3 +of an ass jqb f +of an elephant jq6 u +of course j1y BK +of fantasy j28 / +of good repute j37 x +of high stature j4s 3 +of ill repute j5j u +of lamb j6R a +of long standing j6r BH +of noble birth j7y w +of ones own accord j8i 9 +of paramount importance j9f BD +of sand j+i k +of silk j/G Z +of steal j/f c +of the j/7 f +of the body kAa y +of the coast kBM i +of the hague jnk f +of the same age kBu BB +of the sea kCv o +of the sun kDX c +of the winter kDz 1 +of the year kEo f +of to joD s +of tomorrow kFH 8 +of two colours kGD s +of use kGv p +of water kHY u +of which kIG BJ +of yesterday kJP q +offal jQ9 Z +offence jRW 2 +offend jSM BN +offended jTZ m +offensive jT/ BS +offer jVR Da +offer a toast jYr BA +offer of marriage jZr BA +offer of parriage jar BA +office jbr BZ +officer jdE BG +official jeK BU +official residence jg5 y +official secret jhr 8 +officialdom jfe z +officially jgR o +offset jin e +offset printing jjF o +offspring jjt CL +often jl4 BJ +ogle kJ5 T +oh kKM h +oh dear kK7 g +ohm kKt O +oil kLb Q +oil of olives kMl o +oilcloth kLr 6 +ointment kNN l +okay kNy B6 +old kRM p +old man kSL BB +old materials kTM q +old peoples home kT2 BJ +old wives tale kU/ r +old woman kVq w +older kR1 W +oldfashioned kPs Bg +olive kXu U +oliveoil kWa p +olivetree kXD r +olympic kYC d +omega kYf W +omelette kY1 h +omen kZW z +omicron kaJ c +omit kal Br +omitted kcQ d +omnibus kct v +omnipotence kdc k +omnipotent keA l +omnipresent kel s +omniscient kfR i +on kfz Cz +on account k0A n +on account of k0n B6 +on board k2h g +on end k3B Bq +on every side k4r v +on foot k5a a +on occasion k50 BD +on ones back k63 p +on purpose k7g / +on that account k8f BW +on the analogy of k91 + +on the contrary k+z BQ +on the left lAD f +on the occasion of lAi BJ +on the other hand lBr Bc +on the other side of lDH Bf +on the recommendation of lEm BI +on the right lFu BK +on the whole lG4 BV +on time lIN BO +on top lJb r +on top of lKG g +onager kim b +once kjB 5 +once more kj6 Bk +one kmf BN +one and a half kop s +one another kpV 2 +one at a time kqL BF +one hundred krQ k +one more kr0 3 +one more time ksr t +one only ktY x +one person kuJ o +one thousand kux j +one time kvU u +onerous kns 9 +oneway traffic kle BB +onion kwC a +only kwc Bb +only just kx3 BF +only one ky8 x +onyx kzt T +opal lKm S +open lLt 1 +open ones mouth wide lPD BD +open up lQG w +opening lMi z +openly lNV BR +openness lOm d +openwork lK4 1 +opera lQ2 X +operate lRN Bh +operating system lSu 5 +operation lTn 3 +operative lUe BN +ophtalmologist lVr t +opiate lWY Y +opine lWw 4 +opinion lXo BL +opium lYz W +opossum lZJ p +opponent lZy w +opportune lai BN +opportunist lbv z +opportunity lci Bh +oppose leD BB +opposed to lfE BI +opposite lgM Cr +opposite side li3 x +opposition ljo BX +oppress lk/ 8 +oppressed ll7 c +oppressing lmX i +oppression lm5 w +oppressive lnp BH +opprobrious low x +optician lph f +optimism lqA h +optimist lqh e +optimistic lq/ m +option lrl r +or lsQ M +or not mUZ w +or not mVJ x +orache lsc V +oracle lsx Y +oral ltJ h +oral sex luJ u +orally ltq f +orange lwu r +orange hawkweed lxZ 5 +orange juice lyS u +orangecoloured lu3 y +orangetree lvp BF +orator lzA c +oratorical lzc z +oratory l0P w +orbit l0/ d +orchard l1c o +orchestra l2E y +orchestrate l22 n +orchestration l3d t +orchid l4K c +ordain l4m o +ordeal l5O e +order l67 FS +order a fresh supply of mAN BA +orderform l5s BP +ordinarily mBN BM +ordinary mCZ d +ore mC2 R +organ mEB k +organ grinder mHZ v +organgrinder mDH 6 +organic mEl p +organism mFO j +organization mFx u +organize mGf 6 +orgiastic mII n +orgy mIv 8 +orient mJr q +origin mKV w +original mLF 9 +originally mMC + +originate mNA Bm +ornament mOm Co +ornamental mRO m +orphan mR0 z +orthodox mSn v +orthography mTW BD +oscillate mV6 3 +oscillation mWx z +oscillator mXk k +oscilloscope mYI p +osmium mYx X +ostrich mZI o +other mZw W +other peoples mc9 q +other than mdn BV +otherwise maG CM +otherwise called mcS r +ouch me8 Q +ought to mfM 7 +ounce mgH R +our mgY V +ours mgt f +out mhM Ba +out of mxV t +out of courtesy myC 3 +out of date my5 BT +out of order m0M y +out of politeness m0+ 4 +out of the way m12 m +outer mim BH +outer cover mjt n +outer space mkU v +outfit mlD Bo +outing mmr 3 +outlet moQ c +outletpipe mni u +outline mos Bl +output mqR p +outrage mq6 c +outset mrW W +outside mrs CD +outside of mtv e +outskirts muN BW +outstanding mvj 0 +outward mwX + +oval m2c f +ovation m27 c +oven m3X n +over m3+ c +over m4a Bf +over there nTZ 4 +overall m55 Bk +overalls m7d 7 +overbearingness m8Y Bo +overcoat m+A l +overdrive m+l 5 +overdue m/e u +overestimate nAM 6 +overflow nBG f +overflowing nBl x +overground nCW BB +overgrow nDX f +overgrown nD2 g +overhaul nEW BL +overhead nFh Bb +overjoyed nG8 m +overlay nHi 6 +overlook nIc BF +overpower nJh CG +override nLn 3 +overshoe nMe h +overtake nM/ B1 +overthrow nO0 CK +overtone nQ+ o +overture nRm 5 +overwhelm nSf 6 +ow nUR i +owe nUz + +owing to nVx B2 +owl nXn O +own nX1 5 +owner nYu Y +ownership nZG v +ox nZ1 N +oxygen naC e +oyster nag Z +ozone na5 U +pace nbj Bj +pacifier ndG n +pacifism ndt h +pacifist neO g +pack neu BP +package nf9 BC +packages ng/ l +packet nhk W +pad nh6 x +paddle nir Bf +paddyfield nkK q +padre nk0 t +paean nlh h +pagan nmC v +paganism nmx i +page nnT 0 +paid up nou f +paidup noH n +pail npN S +pain npf c +pain in the throat nwT t +painful np7 4 +pains of childbirth nqz 4 +paint nrr BU +paint over nvt m +paintbrush ns/ o +painter ntn BG +painting nut BA +pair nxA BO +pair of pincers nyO 6 +pal nzI r +palace nzz X +pale n0K 1 +palet n0/ U +palisade n1T / +palladium n2S i +palm n20 x +palm off on n4L x +palmtree n3l m +pamper n48 BA +pamphlet n58 B3 +pancake n7z d +pancreas n8Q t +pane n89 s +panel n9p BH +panic n+w W +pansy n/G m +pant for breath oFs z +pantechnicon n/s 6 +pantechnicon van oAm BC +panther oBo l +panties oCN d +pantomime oCq BH +pantry oDx BP +pants oFA s +paparazzo oGf j +papaw oHC a +papaya oHc Z +paper oJs BS +paperback oK+ BI +paperbacked oMG k +paperbasket oH1 BK +paperer oMq e +paperhanger oI/ t +paprika oNI c +parachute oNk 8 +parade oOg CU +paradise oQ0 f +paradox oRT e +paradoxical oRx o +paraffin oTR f +paraffinoil oSZ 4 +paragraph oTw BO +parallel oU+ q +paralyse oVo r +paralysed oWT g +paralysis oWz k +parameter oXX j +paranoia oX6 h +paranoid oYb i +parantheses oY9 n +parapet oZk 2 +parasite oaa + +parcel obY s +parcel out odr s +parcels delivery ocE 3 +parcels service oc7 w +parchment oeX k +pardon oe7 Bp +parent ogk a +parental og+ e +parenthesis ohc BV +parents ojt o +parentsinlaw oix 8 +parings okV p +parish ok+ v +parishioner olt n +parity omU c +park omw 2 +parking bay onm 5 +parking garage oof BY +parking place op3 9 +parliament oq0 + +parliamentary ory u +parlour osg g +parochial otA 1 +parrot ot1 p +parry oue Y +parsley ou2 g +part ovW Bn +parterre ow9 g +partial oxd BF +partially oyi q +participate ozM BK +participle o0W i +particle o04 BG +particular o1+ BT +particularly o3R BQ +partition o4h 6 +partly o5b k +partner o5/ v +partridge o6u g +parturition o7O 0 +party o8C Bl +party concerned o9n 2 +party interested o+d 2 +party members o/T 0 +pasqueflower pAH x +pass pA4 Et +pass away pNq Br +pass by pPV Co +pass on pR9 q +pass the night pSn q +pass through pTR BD +passable pFl y +passage pGX BV +passageway pHs 1 +passenger pIh v +passenger train pJQ BD +passerby pKT r +passion pK+ Bd +passionate pMb p +passport pNE m +past pUU BK +paste pVe z +paste up pXA f +pastel pWR v +pastor pXf B0 +pat pZT S +patch pZl CI +patch up pbt BM +pate pc5 f +patent pdY g +paternal aunt pd4 9 +paternal grandfather pe1 BE +paternal grandmother pf5 BC +paternal grandparents pg7 BO +paternal uncle piJ 6 +path pjD m +patience pjp q +patient pkT 9 +patriarch plQ u +patriot pl+ p +patriotic pmn q +patriotism pnR 7 +patrol poM 4 +patrolman ppE BB +patron pqF CN +patronage psS / +pattern ptR BL +pauper puc BJ +pause pvl q +pave pwP g +pavement pwv BS +pavilion pyB BL +paving pzM c +paw pzo i +pawn p0K BS +pawning p1c d +pawnshop p15 w +pay p2p BC +pay attention p57 BW +pay attention to p7R CN +pay homage to p9e z +pay off p+R y +pay on account p/D q +pay out p/t BE +pay the expenses of qAx z +pay tribute qBk t +paying off p3r 1 +payment p4g Bb +pea qCR Q +peace qCh U +peaceful qC1 6 +peaceloving qDv 0 +peach qEj X +peacock qE6 Y +peak qFS 2 +peal qGI BB +peanut qHJ r +pear qIb S +pearl qIt V +peartree qH0 n +peasant qJC s +peat qJu S +peculiar qKA BS +pedagogue qLS u +pedal qMA 3 +peddle qM3 6 +pedestal qNx y +pedestal cupboard qOj v +pedestrian qPS k +pedicab qP2 d +pedigree qQT + +peel qRR BJ +peel off qSa x +peep qTL Bk +peep at qUv c +peep upon qVL BF +peer qWQ m +peevish qW2 Bl +peg qYb c +pelican qY3 c +pelvis qZT i +pen qaZ z +penal law qbM 9 +pencil qcJ X +pencil sharpener qcg BB +pending qdh c +penetrate qd9 9 +penicillin qe6 j +peninsula qfd m +penis qgD W +penitent qgZ s +penknife qZ1 k +penny qhF e +pension qhj c +pensioner qh/ 4 +pensive qi3 c +penthouse qjT BK +penury qkd v +people qlM 5 +pepper qmF k +pepsin qmp Y +per qnB CO +perceive qpP CQ +percent qrf q +percentage qsJ x +percentage sign qs6 9 +perchance qt3 BN +peregrine qvE g +peregrine falcon qvk x +peremptoriness qwV w +peremptory qxF 8 +perfect qyB Bp +perfection qzq / +perform q0p E5 +perfume q5i 5 +perhaps q6b BH +peril q7i t +perimeter q8P BD +period q9S BD +periodical q+V BM +periosteum q/h o +peripheral rAJ t +periphery rA2 BX +periscope rCN g +perish rCt BQ +perishable rD9 k +periwinkle rEh z +permanent rFU Bd +permission rGx Ba +permit rIL Bi +perpendicular rJt 0 +perpetuation rKh t +perplexed rLO CA +perplexity rNO BP +persecute rOd 7 +persecution rPY 9 +perseverance rQV Bg +persevere rR1 CA +persist rT1 Cw +persistent rWl k +person rXJ BM +personal rYV u +personal number raU 0 +personality rZD BR +personnel rbI i +persons rbq s +perspective rcW BS +perspiration rdo n +persuade reP BF +persuasion rfU j +perturb rf3 o +perverse rgf o +pessimism rhH BF +pessimist riM s +pessimistic ri4 BX +pestilence rkP d +pestle rks l +pet rlR 4 +petal rmJ i +peter rmr t +petition rnY BK +petitioner roi k +petrified rpG g +petrol rpm Z +petrol can rqn l +petrol engine rrM s +petrol gauge rr4 q +petrol tank rsi o +petroleum rp/ o +petticoat rtK e +pettifogger rto z +pettiness rub z +pettish rvO y +petty rwA l +petulant rwl Bo +pfennig ryN Y +phallus ryl Z +phantom ry+ BF +pharmaceutical r0D BE +pharmaceutical chemist r1H BG +pharmacist r2N v +pharmacy r28 2 +phase r3y s +pheasant r4e Y +pheasants eye r42 9 +phenomenal r5z v +phenomenon r6i BH +phi r7p O +philately r73 6 +philosopher r8x u +philosophic r9f m +philosophize r+F o +philosophy r+t y +phiz r/f s +phlebitis sAL n +phlegm sAy h +phobia sBT p +phoenix sB8 a +phone booth sD3 l +phonetic sCW 3 +phonetics sDN q +phonograph sEc m +phosphorescent sFC t +phosphorus sFv g +photograph sGP BR +photographer sHg o +photography sII o +photomontage sIw r +photoprint sJb j +physical sJ+ BN +physician sLL 4 +physicist sMD s +physics sMv l +physiognomy sNU r +physiotherapy sN/ x +pi sOw N +pianist sO9 b +piano sPY f +pianoforte sP3 z +pick sRY CT +pick out sVq BP +pick up sW5 Dy +pickaxe sQq u +pickle sTr B/ +picnic sar q +picometre sbV i +picture sc2 CM +picture postcard sf5 BJ +picture writing shC 8 +pictureframe sb3 / +picturesque sfC 3 +pie sh+ e +piece sic Bf +piece of furniture sj7 w +piece of mail skr k +piece of music slP 0 +pier smD BF +pig snI o +pig snw 1 +pigeon sol BG +pigeonhole spr 2 +piglet sqh U +pigmy sq1 e +pike srT S +pile srl By +pile ointment stX s +pile powder suD p +pile up sus Bl +pilfer swR BF +pilgrim sxW r +pilgrimage syB BB +pill szC P +pillar szR 6 +pillow s0L o +pilot s0z Bc +pimple s2P f +pin s2u j +pincers s3R BO +pinch s4f B2 +pine s7N l +pineapple s7y c +pinetree s6V 4 +pink s8O BC +pinnacle s9Q b +pioneer s9r Be +pious s/J 3 +pip tAA i +pipe tAi BD +pirate tCc u +piratechief tBl 3 +pistol tDK X +piston tDh Y +pit tEh BG +pitch tFn S +pitch black tGX i +pitcher tF5 e +pitiable tG5 BB +pitiful tH6 5 +pitprops tD5 o +pitwood tIz a +pity tJN B4 +pivot tLF BA +pixel tMF U +pizza tMZ X +placard tMw BP +place tN/ Cw +place of birth tRQ 4 +place of refuge tSI Bk +place of worship tTs BA +place to sit tUs t +placenta tQv h +plague tVZ h +plaice tV6 V +plain tWP BK +plaintain tXZ f +plait tX4 X +plaited mat tYP p +plan tY4 DU +plane tc1 Cf +planet tfU k +planetary tf4 i +planetree tcM p +plank tga k +plant tg+ BF +plantation tiD Ba +planting tjd 0 +plash tkR + +plasma tlP Z +plaster tlo CL +plastic tnz BC +plate to1 BX +plateau tqM u +platform tq6 Dc +platinum tuW e +platitude tu0 BG +platter tv6 j +plausible twd BH +play tyf BN +play a small part t1Z y +play on t2L c +playful tzs 7 +playground t0n y +playoff txk 7 +plaza t2n Y +plea t2/ 9 +plead t38 1 +plead for t4x j +pleasant t5U BM +pleasantly t6g i +pleasantness t7C BI +please t8K B0 +pleased t9+ w +pleasing t+u BX +pleasurable uAF 4 +pleasure uA9 Bh +pledge uCe 4 +plentiful uDW Bl +plenty uE7 o +plenty of uFj t +plot uGQ BY +plough uHo 4 +pluck uIg Ba +plug uJ6 Bg +plug in uLa o +plug up uMC BU +plum uNW T +plume uNp V +plunder uN+ 6 +plunge uO4 Z +pluperfect uPR BI +plus uQZ S +plus sign uQr g +plutonium uRL k +plywood uRv c +pneumonia uSL o +pocket uSz U +podium uTH i +poem uTp m +poet uUP V +poetic uUk o +poetry uVM n +point uVz BR +point of contact uXl 1 +point out uYa Cd +point out to be ua3 3 +pointed uXE h +poise ubu BJ +poison uc3 Bl +poisonous uec BA +poker ufc W +polar ufy X +pole ugJ Bn +police ui2 a +police motorcyclist uj9 BH +policeman ujQ t +policestation uhw BG +policy ulE BM +polish umQ CH +polite uoX Bb +politeness upy BV +politeness particle Bnxs BR +political urH s +political meeting urz u +politician ush v +politics utQ y +polka uuC W +pollinate uuY g +pollination uu4 n +polonium uvf g +polyp uv/ W +polyvinyl chloride uwV BD +pomegranate uxY p +pomp uyB t +pond uyu l +pony uzT e +pooh uzx S +pool u0D Bi +poop u1l n +poopdeck u2M t +poor u25 CJ +poor devil u5C 6 +poor man u58 BL +pop in u+G a +pope u7H R +poplar u7Y j +poppy u77 n +popular u8i z +population u9V x +porch u+g BJ +porcupine u/p m +pork vAP b +pornographic vAq t +pornography vBX BH +porpoise vCe f +port vC9 v +port of call vKr r +port side vLW g +portable vDs q +portal vEW 1 +portent vFL 6 +porter vGF BU +portfolio vHZ l +porthole vH+ y +portico vIw v +portrait vJf BM +pose vL2 Br +poseur vNh l +position vOG u +positive vO0 BB +positively vP1 w +possess vQl 0 +possession vRZ BG +possessions vSf BB +possibility vTg 1 +possible vUV q +possibly vU/ BL +post vXM Cd +post office vh+ l +post up vij e +postage vZp s +postage stamp vaV 5 +postal code vbO i +postal rates vbw m +postcard vcW i +poster vc4 7 +posterity vdz k +postman veX v +postpaid vWK BC +postpone vfG Bc +postulate vgi Bc +pot vjq i +pot marigold vq0 8 +potassium vkM f +potato vkr l +potato blight vlQ v +potato disease vl/ y +potato flour vmx u +potato peeler vnf 2 +potato rot voV r +potpourri vjB p +potpourri vpA g +potter vpg e +pottery vp+ 2 +poultry vrw e +pounce upon vsO BL +pound vtZ / +pound sign vuY k +pound sterling vu8 v +pour vvr Bj +pour in vxO o +pour off vx2 5 +pour out vyv Bc +poverty v0L l +powder v0w BS +powdered milk v2C n +powdery v2p Z +power v3C v +power station v4O p +powerful v3x d +practicable v43 3 +practical v5u BS +practice v7A DY +practice of medicine v+Y 0 +practise v/M 4 +practised wAE p +practitioner wAt q +prairie wBX d +praise wB0 BY +praseodymium wDM p +prawn wD1 m +pray wEb T +prayer wEu X +preach wFF j +preacher wFo x +precede wGZ BO +precious wHn d +precipice wIE BH +precise wJL B2 +precision wLB Bq +precursor wMr BG +predisposition wNx BJ +predominant wO6 y +predominating wPs w +prefabricated house wQc 6 +prefabrication wRW x +preface wSH o +prefer wSv BN +preferably wT8 BK +prefix wVG f +pregnant wVl 8 +prehistory wWh 5 +prejudice wXa Bn +prejudicially wZB t +preliminary wZu BF +prelude waz m +premier wbZ 0 +premium wcN 2 +première wdD l +preparation wdo BY +preparatory wfA BF +prepare wgF Bp +prepay whu a +preposition wiI p +presage wix 6 +prescription wjr k +presence wkP BG +present wm1 Dv +present one wsp 5 +present with wti BT +presentation wqk Bd +presentday wlV Bg +presentiment wsB o +preservation wu1 BQ +preservative wwF v +preserve ww0 CS +preside wzG p +president wzv + +press w0t CT +press firmly w47 p +press hard w5k h +pressing w3A 7 +pressure w37 BA +prestige w6F y +prestigious w63 n +presume w7e Br +presumption w9J CT +pretence w/c Bh +pretend xA9 BX +pretentious xCU x +pretext xDF BH +pretty xEM BF +prevail over xFR BN +prevent xGe Bw +previous xIO BH +previous to xKx BP +previously xJV Bc +prey xMA 2 +price xNi U +priceless xN2 y +pricelist xM2 s +pricey xOo v +prick xPX Ba +pride xQx U +priest xRF BZ +priestly xSe k +primary xTC e +primary school xTg BE +prime minister xVS + +primeval forest xUk u +primitive xWQ f +primrose xWv q +prince xXZ c +princes son xYg BB +princess xX1 r +principal xZh v +principality xaQ 0 +principally xbE BL +principle xcP 4 +print xdH Bi +printed matter xep p +printer xfS o +prior xf6 Bi +prism xhc X +prison xhz q +prisoner xid + +private xjb BS +private talk xkt m +privet xlT Z +privilege xls BA +privileged xms 0 +prize xng c +probable xpk k +probably xqI BH +problem xrP 7 +proboscis xsK 6 +procedure xtE BB +proceed xuF h +proceed with xum Ba +process xwA Bu +procession xxu 7 +proclaim xyp BI +proclamation xzx DK +procrastination x27 9 +procure x34 Bg +produce x5Y B/ +product x7X BC +production x8Z 0 +proenglish xn8 1 +profane x9N BQ +profess x+d v +profession x/M 3 +professional yAD 2 +professor yA5 h +profile yBa BS +profit yCs CB +profound yEt a +profuse yFH BV +progeny yGc j +progerman xox z +prognosis yG/ 8 +programme yH7 z +programme item yIu 0 +progress yJi CP +prohibit yLx f +project yMQ BS +projectionist yNi 7 +projector yOd 2 +proletarian yPT s +proletariat yP/ s +prologue yQr m +prolonged yRR 5 +promenade ySK BV +promethium yTf m +promise yUF Bg +promote yVl q +promotion yWP v +promotor yW+ g +prompt yXe B3 +prompter yZV g +promulgate yZ1 z +pronounce yao h +pronunciation ybJ s +proof yb1 5 +prop ycu q +propaganda ydY 1 +propeller yeN BK +proper yfX Bu +properly yhF BO +property yiT B/ +prophecy ykS 7 +prophesy ylN BU +prophet ymh 8 +proportion ynd BL +proportional yoo BL +proportional to ypz 8 +proposal yqv v +proprietary law yre 4 +prose ysW U +prosecute ysq B8 +proselyte yum z +prospector yvZ 1 +prospectus ywO l +prosper ywz BP +prosperity yyC BW +prostitute yzY BC +prostitution y0a t +protactinium y1H s +protect y1z BJ +protect from y6z 0 +protection y28 B3 +protectionist y4z BH +protective cover y56 5 +protein y7n l +protest y8M Bv +protocol y97 BG +proton y/B Z +prototype y/a i +protracted y/8 8 +protégé zA4 3 +protégée zBv 7 +proud zCq g +prove zDK BR +proverb zEb BE +provide zFf BN +provided that zGs + +province zHq / +provincial zIp x +provision zJa z +provisional zKN w +provoke zK9 CW +provost zNT BB +prow zOU o +proximity zO8 w +prude zPs o +prudence zQU 7 +prudent zRP e +prudish zRt q +prune zSX X +pruningknife zSu x +psalm zTf V +pseudonym zUv v +pseudoscience zT0 7 +psi zVe O +psyche zVs Y +psychiatric zWE o +psychiatrist zWs n +psychiatry zXT m +psychic zX5 b +psychological zYU u +psychologist zZC 3 +psychology zZ5 0 +pub zat 1 +puberty zbi h +public zcD 7 +public prosecutor ziY BL +public square zjj m +public tender zkJ s +publication zc+ BK +publicity zeI Bh +publicity material zfp BN +publicize zg2 Bi +publish zk1 Bl +publisher zma y +publishing house znM u +pudding zn6 Z +puff zoT W +puff out zop c +puff up zpF k +pug zq6 a +pugdog zpp r +pugnose zqU m +pull zrU BF +pull down zuX x +pull out zvI BO +pull someones leg zwW 4 +pull to pieces zxO / +pull up zyN j +pulley zsZ BJ +pullover sweater zti 1 +pulmonaria zyw o +pulpit zzY + +pulsate z0W l +pulse z07 i +pulverize z1d Bb +puma z24 W +pump z3O p +pumpkin z33 b +pun z4S Y +punch z4q k +punctual z5O BU +punctuate z6i BT +punctuation z71 5 +punish z8u BP +punishment z99 BR +punk z/O v +pupil z/9 z +puppet 0Aw t +purchase 0Bd CD +purchase money 0ER s +purchaser 0Dg x +pure 0E9 j +purgatory 0Fg w +purge 0GQ BC +purify 0HS b +puritan 0Ht v +purity 0Ic Bh +purl 0J9 BE +purple 0LB n +purpose 0Lo 5 +purse 0Mh u +purser 0NP e +pursue 0Nt BD +pursue ones point 0Ow BH +pursuit 0P3 x +pus 0Qo W +push 0Rq Bf +push along 0TJ i +push down 0Tr e +push off 0UJ c +push on 0Ul f +pushbutton 0Q+ s +pussy 0VE a +put 0Wh BO +put a cross against 0cr z +put away 0Z+ Ct +put down 0de BG +put forward 0ek BO +put in 0fy BB +put in finished form 0gz BM +put in order 0h/ Bc +put off 0jb B7 +put on 0lW CC +put on airs 0oB 6 +put on makeup 0o7 7 +put on stamps 0p2 p +put on the map 0qf t +put on the stage 0rM Bk +put on weight 0sw 2 +put onto 0nY p +put out 0tm BJ +put out of countenance 0uv Bi +put out to tender 0wR x +put right 0xC B3 +put to bed 0z+ 3 +put to shame 001 2 +put to sleep 01r x +put together 0y5 BF +put up 02c BF +put up with 03h Cn +putandtake top 0Ve BD +putrefy 0Xv 7 +puttee 0Yq d +putty 0ZH 3 +puzzle 06I Ch +puzzle over 08p 6 +pyjamas 09j g +pyramid 0+D c +quack 0+f 9 +quadrangle 0/c j +quail 0// W +quaint 1AV 4 +qualification 1BN 7 +qualify 1CI t +quality 1C1 4 +quantity 1Dt 9 +quarrel 1Eq DR +quarter 1H7 s +quarter of an hour 1JQ 0 +quarters 1In p +quash 1KE Bs +quay 1Lw 1 +queen 1Ml t +quell 1NS BF +quest 1OX v +question 1PG CS +question mark 1SQ s +question particle Bny9 BE +questionable 1RY 4 +quibble 1S8 BM +quick 1UI 5 +quickly 1VB BC +quicksand 1WD g +quicksands 1Wj i +quicksilver 1XF r +quiet 1Xw B3 +quietly 1Zn y +quietness 1aZ + +quilt 1bX W +quince 1bt Y +quince jam 1cF m +quinine 1cr a +quinsy 1dF p +quip 1du Bd +quit 1fL BZ +quite 1gk Ct +quiver 1jR Bn +quivering 1k4 8 +quotation 1l0 r +quotation mark 1mf 0 +quotation marks 1nT 3 +quote 1oK + +quotes 1pI h +rabbi 1pp e +rabbit 1qH X +rabble 1qe BQ +rabid 1ru l +rabies 1sT y +raccoon 1tF b +race 1uR Bd +racecourse 1tg x +racing driver 1vu r +racing motorist 1wZ w +racism 1xJ b +rack 1xk i +rack ones brains 1yG BE +racoon 1zK a +radar 1zk j +radiate 10H 3 +radiation 10+ z +radiator 11x g +radical 12R BS +radically 13j t +radio 14Q j +radish 14z Y +radium 15L Z +radius 15k x +radon 16V W +raffle 16r i +raft 17N U +rag 17h y +ragout 18T Z +ragpicker 18s 8 +ragwort 19o d +rail 1+F d +rail in 2Dz c +rail off 2EP e +railing 1+i 0 +railroad 1/W k +railway 1/6 i +railway carriage 2Ac 1 +railway platform 2BR 0 +railway station 2CF BD +railway ticket 2DI r +rain 2Et g +rain cats and dogs 2Hg BF +rainbow 2FN c +raincoat 2Fp g +raindrop 2GJ i +rainy season 2Gr 1 +raise 2Il Di +raise the alarm 2MH BC +rake 2NJ + +ram 2OH P +rambutan 2OW h +rampart 2O3 BC +ranch 2P5 BD +rancher 2Q8 c +rancid 2RY v +rancour 2SH BX +rand 2Te i +random 2UA p +range 2Up x +rank 2Va BZ +ransom 2Wz / +rap 2Xy S +rap at the door 2aC t +rapid 2YE 7 +rapier 2Y/ k +rapsody 2Zj f +rare 2av t +rarefy 2bc r +rasp 2cH W +raspberry 2cd j +rat 2ds U +rate 2eA CG +rate of exchange 2gu BV +ratepayer 2gG o +rather 2iD EO +ratification 2mR BG +ratify 2nX s +rational 2oD p +ratpoison 2dA s +rattle 2os BD +rattle off 2qT g +rattlesnake 2pv k +ravage 2qz p +rave 2rc d +raven 2r5 T +ravine 2sM w +raw 2s8 BZ +ray 2uV 9 +razor 2wC a +razorblade 2vS w +re 2wc x +reach 2zg Bn +reach for 21H k +reach forward 21r w +react 22b Y +reaction 22z e +reactionary 23R p +read 236 / +read again 29E 1 +read out 295 w +read over again 2+p BA +reader 245 Y +readiness 25R 4 +readiness to help 26J BE +reading matter 27N p +ready 272 BO +real 2/p BZ +realist 3BC b +reality 3Bd u +realization 3CL + +realize 3DJ B0 +really 3E9 Bk +realm 3Gh Z +rear 3I/ Bb +rear axle 3LA g +rear platform 3Lg u +rear seat 3MO i +rear wheel 3Mw j +rear window 3NT l +rearexit 3G6 x +rearguard 3Ka m +rearlamp 3Hr p +rearlight 3IU r +reason 3N4 Bc +reason about 3RC o +reason upon 3Rq n +reasonable 3PU Bu +rebate 3SR BZ +rebel 3Tq Bh +rebellion 3VL y +rebellious 3V9 r +rebound 3Wo BK +rebuff 3Xy b +rebuke 3YN CV +recall 3ai CH +recapture 3cp l +recede 3dO BG +receipt 3eU Bq +receive 3f+ B6 +recent 3h4 x +recently 3ip BT +reception room 3lg BN +receptionist 3k1 r +receptionroom 3j8 5 +recess 3mt o +recipe 3nV a +recipient 3nv h +reciprocal 3oQ 6 +reciprocal impedance 3p2 BN +reciprocally 3pK s +reciprocate 3rD + +recite 3sB BB +reciter 3tC r +reckoning 3tt d +reclaim 3uK e +recline 3uo Z +recognizable 3vB p +recognize 3vq Bt +recollect 3xX BY +recollection 3yv Bm +recommend 30V 8 +recommendable 31R BD +recommendation 32U Bs +recommended 34A l +recommended price 34l x +record 36K DH +recordplayer 35W 0 +records 39R c +recover 39t BN +recovery 3+6 BZ +recreate 2xN v +recreation 4AT Bf +recruit 4By Bk +rector 4DW Y +recuperate 4Du 4 +red 4Em q +red admiral 4OW BA +red currant 4PW 4 +red deer 4QO d +red herring 4Qr 6 +red of dawn 4Rl m +redeem 4FQ BF +redeemable 4GV j +redemption 4G4 BY +redemption money 4IQ y +reduce 4JC BK +reduce the price 4LV BN +reduced hours 4KM BJ +redundancy pay 4Mi 3 +redundancy scheme 4NZ 9 +reed 4SL S +reedmace 4Sd e +reef 4S7 X +reek 4TS / +reel off 4UR e +reelect 2x8 p +refashioning 4Uv 7 +referee 4Vq s +reference 4WW s +refine 4XC w +refined 4Xy BY +refinement 4ZK 5 +refinery 4aD l +reflect 4ao Bl +reflect on 4c+ BT +reflection 4cN x +reform 4eR 5 +reformed 4fK e +refractory 4fo m +refresh 4gO BF +refreshing 4hT k +refrigerate 4h3 k +refrigerator 4ib z +refuge 4jO e +refugee 4js v +refusal 4kb p +refuse 4lE CP +refuse dump 4nT o +refute 4n7 p +regain 4ok j +regal 4pH o +regard 4pv DA +regeneration 4sv Bi +regiment 4uR g +region 4ux + +regional 4vv 5 +register 4wo Bj +registered 4yL 5 +registered letter 4zE 5 +registered share 4z9 2 +registrar 40z BI +regret 417 Cc +regrettable 44X 0 +regrettably 45L BK +regular 46V BA +regularly 47V Bw +regulate 49F BD +regulation 4+I 9 +regulations 4/F 1 +rehabilitation 4/6 x +reign 5Ar 1 +reign of terror 5Bg 2 +reindeersledge 5CW 3 +reindeersleigh 5DN 1 +reject 5EC Cs +rejection 5Gu 4 +rejoice 5Hm BN +relate 5Iz Bw +related 5Kj n +related by marriage 5LK 3 +relation 5MB Bv +relations 5Nw 7 +relationship 5Or + +relative 5Pp CB +relatively 5Rq r +relatives 5SV 5 +relax 5TO q +relay racer 5T4 n +relay rider 5Uf n +release 5VG Cz +relevance 5X5 i +reliable 5Yb s +relief 5ZH BN +relieved 5aU r +religion 5a/ y +religious 5bx 4 +relinquish 5cp Bw +relinquishment 5eZ q +relish 5fD Y +rely on 5fb BS +remain 5gt Bq +remain in office 5k5 s +remainder 5iX Bd +remaining 5j0 BF +remark 5ll BY +remarkable 5m9 z +remedy 5nw BS +remember 5pC BX +remind 5qZ c +remiss 5q1 y +remissness 5rn z +remit 5sa BH +remittance 5th o +remittance of money 5uJ 7 +remorse 5vE a +remote 5ve Bq +remote control 5x6 BL +remotely 5xI y +removable 5zF j +removal 5zo g +remove 50I BS +remove the cloth 51a 1 +render 52P p +rendezvous 524 w +renegade 53o e +renegate 54G e +renew 54k m +rennetstomach 55K x +renounce 557 Bm +renown 57h CL +rent 59s h +rent money 5/d p +rent out 6AG c +rental 5+N U +rented house 5+h j +renter 5/E Z +renunciation 6Ai 3 +repair 6BZ Bc +reparation 6C1 r +repay 6Dg BB +repayable 6Eh g +repayment 6FB 2 +repeat 6F3 0 +repeat parrotlike 6IQ + +repeated 6Gr e +repeatedly 6HJ BH +repel 6JO X +repellent 6Jl BO +repelling 6Kz u +repent 6Lh BU +repent of 6Oq 3 +repentance 6M1 BH +repentant 6N8 u +repertoire 6Ph l +repetition 6QG u +replace 6Q0 BC +replacement 6R2 BO +replenishment 6TE 2 +replete 6T6 Bd +reply 6VX Br +reply coupon 6Xl t +replying 6XC j +report 6YS Ef +repose 6cx i +reprehensible 6dT n +represent 6d6 Bt +representation 6fn 8 +representative 6gj Bx +reprint 6iU BM +reproach 6jg DN +reproduce 6mt z +reproduction 6ng 3 +reproof 6oX BM +reprove 6pj CJ +reptile 6rs a +republic 6sG q +republican 6sw 5 +repulse 6tp y +repulsive 6ub v +reputation 6vK 3 +repute 6wB BK +request 6xL Bh +require 6ys CE +requisite 60w 2 +requisites 61m l +requisition 62L 8 +reread 2yl 7 +rescue 63H r +research 63y B9 +resemblance 65v z +resemble 66i v +resent 67R 4 +resentment 68J B0 +reserve 699 Bp +reservoir 6/m 7 +residence 7Ah BX +resign 7B4 Cd +resign oneself 7FW p +resignation 7EV BB +resin 7F/ T +resist 7GS BI +resistance 7Ha BE +resolute 7Ie 2 +resolution 7JU / +resonance 7LG BT +resonancebox 7KT z +resound 7MZ Ba +resources 7Nz 0 +respect 7On CJ +respectability 7Qw y +respectable 7Ri BV +respective 7S3 i +respiration 7TZ o +resplendant 7UB BC +respond 7VD BZ +responsibility 7Wc Bg +responsible 7X8 BQ +rest 7ZM BZ +rest of 7lC h +restaurant 7al 4 +restingplace 7bd BH +restrain 7ck C8 +restrained 7fg g +restraint 7gA y +restraints 7gy u +restrict 7hg BQ +restricted 7iw y +restriction 7ji x +restrictive 7kT v +result 7lj Dc +resume 7o/ BM +resumé 7qL BQ +retailer 7rb m +retain 7sB BJ +retardation 7tK p +retarded 7tz h +retention 7uU BJ +retire 7vd x +retired 7wO 0 +retired person 7xC 7 +retiree 7x9 2 +retirement 7yz j +retouch 7zW s +retreat 70C Cm +retrenchment 72o 3 +retrograde 73f m +return 747 EN +returnticket 74F 2 +reunite 79I h +reveal 79p CO +revenge 7/3 Z +revenue agent 8AQ u +reverie 8A+ x +reverse 8Bv CC +reverse side 8Ep BX +reversed 8Dx 4 +review 8GA Bb +revise 8Hb 6 +revive 8IV t +revolt 8JC BY +revolution 8Ka z +revolutionary 8LN x +revolver 8L+ f +revue 8Md u +reward 8NL Bo +rezignation 8Oz x +rhenium 8Pk b +rhetoric 8P/ v +rheumatism 8Qu l +rhino 8RT k +rhinoceros 8R3 w +rho 8Sn O +rhodium 8S1 a +rhododendron 8TP q +rhombus 8T5 n +rhyme 8Ug BJ +rhythm 8Vp X +rhythmic 8WA c +rib 8Wc b +ribbon 8W3 b +rice 8Yr S +rice plant 8Y9 l +ricefarmer 8XS u +ricefield 8YA r +rich 8Zi r +rich man 8aN l +rickety 8ay BO +rid 8cA x +riddle 8cx e +ride 8dP t +ride a horse 8d8 o +ride over 8ek g +ridicule 8fE CW +ridiculous 8ha BL +riffraff 8il Be +rifle 8kD d +rig 8kg m +right 8oZ DO +right away 8uZ Bd +right now 8v2 BY +rightangle 8lG BJ +righteous 8rn y +righteousness 8sZ BL +righthand 8tk 1 +righthand side 8nT BG +righthander 8mP BE +rigid 8xO z +rigor 8yB Z +rigour 8ya BA +rigourous 8za 5 +rill 80T d +rim 80w z +ring 81j Cg +ring binder 84D k +ring the bell 84n + +rinse 85l q +riot 86P BQ +riotous 87f 4 +rip 88X b +ripe 88y k +ripen 89W k +rise 896 Br +rise to the bait 8/l 2 +rising 9Ab c +risk 9A3 B0 +risky 9Cr 8 +rite 9Dn l +ritual 9EM p +rival 9E1 BY +rivalry 9GN x +river 9G+ e +rivet 9Hc / +rivulet 9Ib l +road 9Jt i +roadmetal 9JA t +roam 9KP Bo +roar 9L3 x +roar with laughter 9Mo BD +roast 9Nr s +roastbeef 9OX f +roasted 9O2 n +rob 9Pd Bu +robber 9RL X +robbery 9Ri e +robe 9SA e +robes of office 9Se 5 +robin 9TX b +robot 9Ty W +robust 9UI BS +rock 9XT BZ +rockbottom prize 9Va / +rockcrystal 9WZ 6 +rocket 9Ys g +rod 9ZM BZ +rodent 9al a +roe 9a/ Y +rogue 9bX B+ +role 9dV Q +roll 9et CO +roll off 9jr e +roll up 9kJ 5 +rollcall 9dl BI +roller 9h5 f +rollerblind 9g7 + +rollerskate 9iY l +rolling in money 9i9 u +romance 9lC b +romantic 9ld h +romanticism 9l+ o +roof 9mm j +room 9nJ BO +rooster 9oX Z +root 9ow 6 +rope 9pq 2 +rosary 9qg 2 +rose 9sB R +rosebush 9rW r +rostrum 9sS c +rot 9su w +rotation 9te BB +rotten 9uf BB +rottenness 9vg f +rouble 9v/ X +rough 9wW C/ +rough draft 9zV o +round 9z9 Bs +round dance 922 u +round off 93k p +roundabout 91p BN +rouse 94N DK +route 97X BA +routine 98X j +row 99i BB +rowan 9+j u +rowan berry 9/R m +rowboat 986 o +rower 9/3 W +rowingboat +AN v +royal +A8 n +royal household +CF u +royalty +Bj i +rub +Cz BF +rubber +D4 Bd +rubber tree +FV m +rubbish +F7 Co +rubbish tip +Ij l +rubble +JI BZ +rubidium +Kh g +ruble +LB W +ruby +LX X +rudder +Lu g +ruddle +MO Z +rude +Mn 6 +rudiments +Nh BB +ruff +Oi V +ruffian +O3 q +ruin +Ph B9 +rule +Re Bz +ruler +TR 8 +rules +UN n +rum +U0 P +ruminant +VD h +rumor +Vk BX +rumour +W7 BY +rump +YT 9 +run +ZQ C+ +run across +eL BD +run after +fO x +run amuck +f/ 5 +run away +g4 5 +run down +hx z +run for election +ik BK +run into +ju w +run over +ke r +run up +lJ i +rung +cO 2 +runner +dE b +running track +df s +rural +lr i +ruse +mN 4 +rush +nF Bs +rush at +ox h +rush towards +pS BA +rust +qS t +rustle +q/ w +rusty +rv Z +ruthenium +sI l +rye +st R +régime +s+ 1 +rôle +tz W +sack +uJ BR +sacrament +va j +sacred +v9 0 +sacred object +wx v +sacrilege +xg n +sad +yH Cm +saddle +0t b +sadism +1I b +sadist +1j Y +sadistic +17 g +sadly +2b w +sadness +3L Bu +safe +45 t +safety +7y r +safety pin +8d q +safetybelt +5m x +safetylamp +6X q +safetypin +7B x +sagacious +9H Be +sage ++l 6 +sail +/f w +sailor /AP BJ +sailplane /BY BC +saint /Ca W +saints day /Cw g +sake /DQ d +saki /Dt g +saké /EN i +salad /Ev g +salamander /FP n +salami /F2 d +salary /GT BU +sale /Hn BF +sales activity /J/ 1 +salesman /Is e +saleswoman /JK 1 +saliva /K0 x +salivate /Ll BF +sallow /Mq 5 +salmon /Nj W +salon /N5 c +salt /OV h +salt meat /Qy v +salt water /Rh p +salted meat /O2 z +saltshaker /Pp x +salty /Qa Y +salutation /SK BJ +salute /TT + +salvage /UR Bk +salvage company /V1 8 +salvage money /Wx q +salvage vessel /Xb y +salvation /YN Ba +salvor /Zn j +samarium /aK g +same /aq p +samovar /bT f +sample /dW BH +sample book /ed m +samplebottle /by 0 +samplecard /cm w +samurai /fD c +sanctify /ff g +sanctifying /f/ q +sanction /gp Bt +sanctuary /iW n +sanctum /i9 f +sand /j+ p +sand /jc i +sandal /kn Y +sandbank /k/ 4 +sandwich /l3 f +sandy /mW y +sap /oH P +sapwood /nI / +sarcasm /oW g +sarcastic /o2 l +sardine /pb d +sarong /p4 Z +satang /qR s +satellite /q9 q +satire /rn 2 +satisfaction /sd s +satisfactory /tJ t +satisfied /t2 BP +satisfy /vF BU +saturate /wZ w +sauce /xJ e +saucepan /xn u +saucer /yV 0 +sauna /zJ h +sausage /zq i +savage /0M e +save /0q CF +saving /2v BF +saw /30 d +saxifrage /4R k +saxophone /41 h +say /5W BE +say goodbye /6a BL +say goodbye to /7l BR +say yes /82 7 +scabbard /9x b +scabious /+M e +scaffold /+q d +scald //H BH +scale BAAO Cd +scale off BADU v +scales BACr p +scamp ones work BAED w +scan BAEz X +scandal BAFK Bm +scandium BAGw f +scanty BAHP 0 +scar BAID j +scarce BAIm y +scarcely BAJY BD +scare BAKb m +scatter BALB Be +scene BAMf w +scenery BANP g +scent BANv o +sceptre BAOX m +schedule BAO9 t +scheme BAPq BI +schism BAQy z +scholar BARl Ba +scholary report BAS/ BB +school BAUA 4 +school desk BAU4 u +school holidays BAVm y +school of motoring BAWY BI +school of music BAXg y +science BAYS a +scientific BAYs q +scientist BAZW v +scissors BAaF Z +scold BAae C6 +scooter BAdY i +score BAd6 c +scorpion BAeW i +scoundrel BAe4 BK +scourge BAgC Y +scout BAga j +scrabble BAg9 d +scrap BAha BF +scrape BAif BI +scrape off BAjn h +scratch BAkI CJ +scratch all over BAmR t +scratch off BAm+ k +scratch over BAni o +scream BAoK BP +screechowl BApZ s +screen BAqF / +screw BArE 5 +screw home BAsp l +screw up BAtO BX +screwdriver BAr9 s +script BAul BH +scrupulous BAvs z +scuffle BAwf Bd +sculptor BAx8 i +sculpture BAye Bh +scythe BAz/ U +sea BA0T h +sea BA4G m +sea pink BBCE h +seaanemone BA00 v +seabottom BA1j p +seadog BA2M BA +seagull BA4s j +seal BA5P BQ +seam BA6f BL +seamless BA7q e +seamonster BA3M 6 +seamstress BA8I h +search BA8p Ba +seasickness BA+D k +seaside BA+n 0 +season BA/b BQ +seat BBAr x +seaweed BBBc o +secede BBCl q +secession BBDP s +seclude BBD7 o +secluded BBEj w +second BBFT q +second cousin BBJg 5 +second hand BBKZ m +secondary BBF9 B1 +secondhand BBHy m +secondhand dealer BBIY BI +secret BBK/ B6 +secret code BBQO x +secretary BBM5 + +secrete BBN3 r +secretion BBOi l +secretly BBPH BH +sect BBQ/ S +section BBRR BR +sector BBSi Y +secure BBS6 CT +security BBVN Bd +security officer BBWq 9 +seduce BBXn y +see BBYZ Cm +see again BBfv 2 +see as BBgl 4 +see on television BBhd 7 +seed BBa/ S +seek BBbR BF +seem BBcW BB +seemingly BBdX BR +seemly BBeo BH +seize BBiY B3 +seized with emotion BBkP B2 +seizure BBmF 5 +seldom BBm+ X +selenium BBnV g +self BB2h h +selfassurance BBn1 Bf +selfassured BBpU / +selfcommand BBqT / +selfconfidence BBrS BK +selfconscious BBsc BQ +selfcontrol BBts BE +selfevident BBuw 2 +selfheal BBvm u +selfinterest BB3C BH +selfinterested BBwU BS +selfish BB4J 4 +selfishness BB5B BE +selfless BB6F BM +selflessly BB7R n +selfpossessed BBxm v +selfpossession BByV BG +selfreliance BBzb BI +selfsufficiency BB0j BI +selftaught man BB1r 2 +sell BB74 BJ +sell doortodoor BB9B BP +semantics BB+Q w +semi BB/A a +semicolon BB/a i +send BB/8 BJ +send about his business BCB3 Bb +send for BCDS 9 +send in morse code BCEP 8 +send off BCFL 0 +sender BCBF y +seniority BCF/ 1 +sensation BCG0 9 +sensational BCHx 3 +sense BCIo B7 +sense of taste BCKj z +sensible BCLW f +sensitive BCL1 BW +sensual BCNL z +sensuous BCN+ 0 +sentence BCOy BZ +sentiment BCQL 3 +sentimental BCRC m +sentry BCRo l +separate BCSN Dt +separately BCV6 BQ +separation BCXK Bl +separatrix BCYv i +sepia BCZR 2 +septic BCaH u +serenade BCa1 d +serene BCbS r +serf BCb9 v +serfdom BCcs x +sergeant BCdd h +serial BCd+ 8 +series BCe6 u +serious BCfo Cl +sermon BCiN u +serpent BCi7 b +serum BCjW p +servant BCj/ BS +serve BClR CL +server BCnc a +service BCn2 BV +service charge BCpL z +servitude BCp+ 2 +sessile oak BCq0 l +session BCrZ z +set BCsM DG +set a trap BCyv g +set a trap for BCzP o +set conditions BCz3 Bd +set in BC1U r +set out BC1/ r +set straight BC2q n +setting BCvS i +settle BCv0 Bj +settlement BCxX BY +seven BC3R T +seventeen BC3k g +seventeenth BC4E m +seventh BC4q Z +seventy BC5D c +several BC5f 4 +several times BC6X BC +severance scheme BC7Z 5 +severe BC8S 6 +severity BC9M 2 +sew BC+C 4 +sew on BDEJ y +sew together BDE7 q +sewer BC+6 m +sewingbasket BC/g z +sewingbox BDAT s +sewingclass BDA/ v +sewingmachine BDBu 3 +sewingthings BDCl y +sewingthread BDDX y +sex BDFl x +sexual BDGW BA +sexual desire BDHW 5 +sexual love BDIP + +sexual pleasure BDJN 8 +shack BDKJ 6 +shackle BDLD 9 +shade BDMA Bl +shadow BDNl BH +shaft BDOs 4 +shaggy BDPk p +shah BDQN T +shake BDQg CO +shake hands BDSu r +shake off BDTZ g +shake ones head BDT5 BF +shall BDU+ b +shallop BDVZ Z +shallow BDVy u +shallowly BDWg v +shaman BDXP v +shame BDX+ 6 +shameful BDY4 h +shameless BDZZ v +shampoo BDaI y +shamrock BDa6 c +shanty BDbW u +shape BDcE 9 +share BDd4 DG +share to bearer BDig 6 +sharecapital BDdB 3 +shareholder BDg+ r +shareholdership BDhp 3 +shark BDja V +sharp BDlL Bg +sharpedged BDjv q +sharpen BDmr BG +sharpness BDnx BX +sharptoned BDkZ y +shatter BDpI BG +shave BDqO m +shave off BDq0 f +shavingbrush BDrT BA +shawl BDsT w +she BDvF i +sheaf BDvn z +shear BDwa p +sheass BDtD e +shebear BDth g +shed BDxD D2 +shed tears BD05 x +sheen BD1q y +sheep BD3H W +sheepdog BD2c r +sheet BD3d 8 +sheet metal BD4Z / +shegoat BDuB i +sheikh BD5Y V +shelf BD5t b +shell BD6I CH +shelling BD8P g +shelter BD8v DT +shepherd BEAC 2 +sheriff BEA4 m +sherry BEBe Y +shewolf BDuj i +shield BEB2 BF +shift BEC7 b +shift on to BEEK 7 +shifting spanner BEDW 0 +shilling BEFF c +shinbone BEFh y +shine BEGT Ba +shine upon BEHt BN +shingle BEI6 d +ship BEJX BJ +shipping share BELT v +shippingdate BEKg z +ships boat BEMh e +shipwreck BEMC f +shirt BEM/ Z +shiver BENY 8 +shock BEPJ Bo +shock absorber BEQx v +shockabsorber BEOU 1 +shoe BEUY i +shoehorn BERg 4 +shoelace BESY BJ +shoelift BETh 3 +shoemaker BEU6 l +shogun BEVf b +shoo BEV6 4 +shoot BEWy Ba +shoot dead BEYM z +shoot off BEY/ h +shop BEZg 8 +shopkeeper BEac z +shopping street BEcH v +shoppingcentre BEbP 4 +shore BEc2 x +short BEfa n +short circuit BEoR t +short pants BEo+ 9 +short story BEp7 o +shortage BEgB BP +shortcoming BEhQ BV +shorten BEil BT +shortening of working hours BEj4 Bl +shorthand BEld + +shortlived BEdn u +shortness of breath BEmb BD +shorts BEne z +shortsighted BEeV BF +should BEqj 1 +shoulder BEsX p +shoulderbelt BErY / +shoulderblade BEtA r +shout BEtr BN +shove BEu4 X +shove on BEwP h +shovel BEvP BA +show BEww Dg +show off BE23 s +show window BE3j BT +showcase BE0Q c +shower BE0s BC +showerhead BE1u h +showerstall BE2P o +shrapnel BE42 t +shrew BE5j BP +shrewd BE6y BY +shrewish BE8K h +shrill BE8r BK +shrimp BE91 Y +shrink BE+N Be +shrivel up BE/r BD +shrub BFAu t +shrubbery BFBb t +shrug BFCI 8 +shuffle BFDE BH +shut BFEL BQ +shut off BFFz Br +shut up BFHe / +shutter BFFb Y +shy BFId BF +shyness BFJi t +shyster BFKP t +sibling BFK8 u +siblings BFLq l +sick BFMP W +sickle BFMl f +side BFQc B2 +side with BFVp o +sideboard BFSS c +sidebranch BFNE q +sideissue BFNu BO +sideissue BFSu i +sideline BFTQ a +sideral BFTq 0 +sideshow BFUe c +sidewalk BFU6 v +sideway BFO8 w +sidewhiskers BFPs w +siege BFWR i +sieve BFWz X +sift BFXK a +sigh BFXk c +sight BFYA CV +sightless person BFaV q +sightseeing trip BFa/ BK +sigma BFcJ V +sign BFdg Cc +sign language BFla s +signal BFf8 Bl +signalman BFhh 0 +signature BFiV 1 +signboard BFce BC +significant BFjK BK +signify BFkU n +signpost BFk7 f +silence BFmG BG +silent BFnM v +silently BFn7 l +silhouette BFog t +silicon BFpN k +silk BFpx Z +silk BFqK k +silken BFqu Y +silkworm BFrG r +sill BFrx b +silliness BFsM s +silt up BFs4 d +silver BFuL n +silver fir BFuy BE +silvercoloured BFtV 2 +similar BFv2 BU +similarity BFxK 0 +similarly BFx+ r +simmer BFyp a +simple BFzD BE +simplify BF0H z +simultaneous BF06 BA +sin BF16 s +since BF2m By +sincere BF4Y BQ +sincerity BF5o BZ +sinew BF7B b +sinful BF7c Y +sing BF70 d +singer BF8R n +singing BF9o o +singingbird BF84 w +single BF+Q Bz +single file BGAD m +single man BGAp m +singly BGBP 5 +sink BGCI CI +sip BGEQ 0 +siphon BGFE p +sir BGFt e +sirocco BGGL b +sister BGH0 d +sisterinlaw BGGm BO +sit BGIR 2 +sit at table BGL2 l +sit down BGMb 8 +sit down to table BGNX BC +site BGJH U +sittingroom BGJb BW +situation BGKx BF +six BGOZ P +sixteen BGOo c +sixteenth BGPE i +sixth BGPm V +sixtieth BGP7 g +sixty BGQb Y +sizable BGQz 1 +size BGRo BE +skate BGSs BK +skeleton BGT2 9 +skeptic BGUz c +skeptical BGVP v +sketch BGV+ BZ +ski BGXX d +skid BGX0 BB +skilful BGY1 m +skilfulness BGZb BW +skill BGax BI +skilled BGb5 j +skillful BGcc BQ +skillfulness BGds BX +skim BGfD Bb +skimpy BGge r +skin BGhJ Bj +skinflint BGis 9 +skinny BGjp q +skip rope BGkT m +skirt BGk5 g +skull BGlZ W +skunk BGlv a +sky BGmJ Z +sky blue BGn6 BH +skyjacker BGmi o +skylight BGnK w +slab BGpB h +slam BGpi a +slam shut BGp8 x +slander BGqt Bb +slanting BGsI m +slap BGsu s +slash BGta l +slat BGt/ R +slate BGuQ h +slaughter BGux s +slaughterhouse BGvd BA +slave BGwd h +slay BGw+ o +sledge BGxm t +sleep BGyT q +sleep heavily BG2u BC +sleep on BG3w f +sleepingaccomodation BGy9 BV +sleepingcar BG0S / +sleepingplace BG1R BB +sleepy BG2S c +sleeve BG4P V +sleigh BG4k r +slender BG5P BU +slice BG6j BV +slighting BG74 BD +slim BG87 w +slink off BG9r g +slip BG+L Bl +slipper BG/w c +slippery BHAM 2 +slippery as an eel BHBC BH +slobber BHCJ b +slogan BHCk BK +sloop BHDu V +slope BHED 2 +slope down BHE5 x +sloping BHFq 3 +slot BHGh 7 +sloth BHHc 3 +slothful BHIT a +slow BHJX h +slow train BHK6 j +slowly BHJ4 BC +slowworm BHIt q +slug BHLd d +sluice BHL6 3 +slum BHMx Z +slumber BHNK v +slut BHN5 t +sly BHOm 7 +sly joke BHQM y +slyness BHPh r +smack BHQ+ W +small BHUO y +small ball BHVf k +small basket BHWD n +small bench BHWq j +small letter BHXN 1 +small plate BHYC i +small room BHYk 9 +small woodpecker BHZh y +smallminded BHRU 9 +smallmindedness BHSR BN +smallpox BHVA f +smalltime BHTe w +smart BHaT / +smash BHbS BC +smear BHcU 0 +smell BHdI Bs +smell at BHe0 p +smell bad BHfd q +smell of BHgH s +smile BHgz o +smith BHhb e +smock BHh5 j +smoke BHic t +smoke screen BHlP w +smoked BHjJ Y +smokers BHjh e +smokestack BHj/ BQ +smooth BHl/ CL +smuggle BHoK b +smuggler BHol w +snack BHpV i +snail BHqj y +snailshell BHp3 s +snake BHrV U +snap at BHsJ d +snappy BHrp g +snare BHsm + +snarl at BHtk g +sneer BHuE 1 +sneeze BHu5 0 +sniff at BHvt p +snifter BHwW l +snob BHw7 S +snobbish BHxN g +snore BHxt y +snorter BHyf n +snot BHzG S +snow BHzY i +snow white BH2X 0 +snowball BHz6 j +snowdrop BH0d i +snowflake BH0/ h +snowman BH1g d +snowy BH19 a +snub BH3L X +snuffle BH3i 0 +so BH4W Bs +so as BJNq s +so long BJOW x +so so BJPH o +so that BJPv Z +so to speak BJQI BM +soak BH6C BS +soap BH7U m +soapwort BH76 e +sob BH8Y T +sober BH8r + +sobriquet BH9p e +soccer BH+H Z +soccer ball BH+g k +social BH/E s +socialism BH/w l +socialist BIAV i +society BIA3 CK +sociologist BIDB q +sociology BIDr 7 +sock BIEm Q +socket BIE2 p +sod BIFf a +sod of grass BIHJ t +sodium BIF5 a +sodomize BIGT 2 +sofa BIH2 o +soft BIIe 7 +soften up BIJZ BJ +softness BIKi z +soil BILV C0 +soiled BIOJ z +solair BIO8 a +solder BIPW 1 +soldier BIQL c +sole BIQn Br +sole agency BIUC t +sole agent BIUv z +sole sale BIVi j +solemn BISS w +solemnity BITC BA +solicitor BIWF r +solid BIWw BJ +solidarity BIX5 BM +solidus BIZF b +soliloquy BIZg x +solitary BIaR BT +solo BIbk T +soloist BIb3 b +solution BIcS x +solve BIdD l +somber BIdo 9 +some BIel C3 +some kind of BItB BD +some one BIuE + +somebody BIhc BB +somehow BIid BF +someone BIji 9 +someone of the upperclass BIk9 BR +someones BIkf e +something BImO e +something new BIms BA +sometime BIns z +sometimes BIof BU +sometimes sometimes BIpz BE +somewhat BIq3 BM +somewhere BIsD + +son BIw8 Q +sonata BIxM a +song BIyP g +songbird BIxm p +songbook BIyv 3 +soninlaw BIvC v +sonofabitch BIvx BL +sonorous BIzm v +sonourous BI0V u +sons and daughters BI1D 6 +soon BI19 CC +soot BI3/ Q +soothe BI4P x +sophisticated BI5A s +soprano BI5s f +sorcerer BI6L 0 +sorcery BI6/ f +sore BI7e U +sore throat BI7y k +sorrel BI8W o +sorrow BI8+ Be +sorrowful BI+c i +sort BI++ g +soul BI/e g +sound BI/+ BT +sound the alarm BJBR BD +soup BJCU S +sour BJCm CU +source BJE6 o +source of infection BJFi BK +south BJGs BE +south wind BJJu j +southern BJHw e +southward BJIO v +southwards BJI9 x +souvenir BJKR Ba +sovereign BJLr BH +sow BJMy 4 +spa BJRU V +space BJRp / +spaceman BJSo u +spacious BJTW BV +spade BJUr BV +spades BJWA y +spanish mayor BnoU BE +spanner BJWy v +spare BJXh CL +spare time BJZs i +spare tyre BJaO n +spark BJa1 0 +spark plug BJcv y +sparkling BJbp BG +sparrow BJdh W +spasm BJd3 X +spatter BJeO r +spawn BJe5 q +speak BJfj f +speakers platform BJgC y +spear BJg0 w +special BJhk BK +specialist BJiu BN +speciality BJj7 4 +specially BJkz BN +species BJmA c +specific BJmc u +specifications BJnK q +specify BJn0 g +specimen BJoU BJ +spectacle BJpd BB +spectacles BJqe d +spectator BJq7 7 +speculate BJr2 t +speculation BJsj 2 +speculative BJtZ 1 +speech BJuO Br +speechless BJv5 r +speed BJxW BO +speed limit BJ0H p +speed up BJ0w BG +speedlimit BJwk y +speedwell BJyk f +speedy BJzD BE +spell BJ12 7 +spelt BJ2x U +spend BJ3F B0 +spend the night BJ45 q +sperm BJ5j g +sperm whale BJ6D t +sphere BJ6w 0 +spice BJ7k 3 +spider BJ8b i +spiderweb BJ89 2 +spiked BJ9z e +spill BJ+R U +spin BJ+l U +spinach BJ+5 c +spindle BJ/V p +spine BJ/+ v +spinningwheel BKAt y +spinster BKBf e +spiral BKB9 c +spirit BKCZ Bc +spirits BKD1 BD +spiritual BKE4 k +spiritualism BKFc s +spit BKGI o +spite BKGw v +spittoon BKHf y +splash BKIR Be +splender BKJv 1 +splinter BKKk BI +split BKLs Bq +split hairs BKNW 1 +split off BKOL g +spoil BKOr Ck +spoiled BKRP 1 +sponge BKSE o +sponge down BKTM l +sponge over BKTx n +sponger BKSs g +spongy BKUY 1 +spontaneous BKVN 1 +spool BKWC j +spoon BKWl u +sporadic BKXT t +sport BKYA W +sports ground BKZR BL +sports shirt BKac p +sportsman BKYW 7 +spot BKbF C/ +spouse BKeE y +spray BKe2 k +spray gun BKfa e +spread BKf4 B/ +spread out BKjG BR +spreadsheet programme BKh3 BP +spring BKkX Ci +spring crocus BKnh 3 +spring snowflake BKoY v +spring upon BKpH BM +springtime BKm5 o +sprinkle BKqT Bh +sprout BKr0 x +spruce BKti s +sprucefir BKsl 9 +spur BKuO 2 +spur on BKxi BJ +spurge BKvE d +spurrey BKvh c +spurt BKv9 v +spurt out BKws 2 +spy BKyr Ck +spy on BK1P z +spy upon BK2C BG +squabble BK3I e +squad BK3m BF +square BK4r BP +square decametre BK56 BA +square metre BK66 w +square mile BK7q q +square up BK8U i +squash BK82 m +squat BK9c o +squatter BK+E c +squeeze BK+g 9 +squeeze out BK/d BD +squint BLAg y +squire BLBS g +squirrel BLBy d +squirt BLCP 8 +stab BLDL u +stable BLD5 BT +stableman BLFM BQ +stack BLGc Cj +stadium BLI/ Ba +staff BLKZ V +stag BLKu b +stage BLML DU +stagemanager BLLJ BC +stagnate BLPf q +staid BLQJ Bb +stain BLRk BN +stair BLSx 5 +staircase BLTq k +stairs BLUO e +stake BLUs / +stale BLVr Bx +stalk BLXc Bv +stalk of cabbage BLZL x +stall BLZ8 f +stallion BLab c +stammer BLa3 x +stamp BLcz B9 +stampcollecting BLbo BL +stamped BLew 0 +stanchion BLfk 0 +stand BLgY B3 +stand guard BLl+ x +stand in the way of BLmv Bc +stand up BLoL 9 +stand up to BLpI Bo +standard BLiP Bs +standing on end BLj7 BS +standing together BLlN x +staple BLqw t +star BLrd z +star BLs8 BG +starboard BLuC i +starch BLuk n +stare BLvL p +stare at BLv0 d +starfruit BLsQ s +starling BLwR e +start BLyh E0 +start off BL7D r +start out BL7u / +start running BL8t 3 +starter BL3V BA +starting point BL4V BQ +startled BL5l p +startling BL6O 1 +startup cost BLwv 4 +startup costs BLxn 6 +starvation wage BL9k y +state BL+W CZ +statement BMAv BO +statement of policy BMB9 BM +station BMD/ BA +stationers shop BME/ 3 +stationmaster BMDJ 2 +statistics BMF2 k +statue BMGa m +stature BMHA BG +statute BMIG e +stay BMJo Bs +stay for BMLU e +stay on BMLy BO +stay over BMNA BS +stay with BMOS r +stayathome BMIk BE +steady BMO9 l +steak BMPi d +steal BMP/ BD +stealthily BMRC 5 +steam BMS1 i +steamboiler BMR7 6 +steamship BMTX h +steel BMT4 i +steep BMUa V +steepness BMUv q +steer BMVZ 3 +steering BMXn r +steeringwheel BMWQ BX +stem BMYS / +stench BMZR X +stencil BMZo u +stenography BMaW 3 +stenotypist BMbN o +step BMgb CD +step on BMiz / +stepbrother BMb1 w +stepchild BMcl v +stepdaughter BMdU y +stepfather BMeG v +stepmother BMe1 u +steppe BMie V +stepsister BMfj 4 +stereotype BMjy BZ +sterile BMlL 3 +sterilize BMmC k +stern BMmm p +sterness BMnP 0 +stevedore BMoD u +stew BMox k +steward BMpV BT +stewardess BMqo w +stewardship BMrY t +stichwort BMsF j +stick BMso Br +stick to the pan BMvh s +sticker BMuT m +sticky BMu5 o +stiff BMwN Bl +stiffling BMxy BG +stiletto heel BMy4 n +still BMzf BC +stimulate BM0h D+ +stimulus BM4f BH +sting BM5m B2 +stinginess BM7c BQ +stingray BM8s Y +stingy BM9E BN +stink BM+R k +stinking BM+1 e +stipulate BM/T BT +stipulation BNAm 8 +stir BNBi CU +stir up BND2 EX +stitch BNIN k +stock BNIx s +stock exchange BNKq BE +stocked BNJd 0 +stocking BNKR Z +stodgy BNLu Bg +stoic BNNO 0 +stoical BNOC n +stoke BNOp g +stomach BNPJ Y +stomach ache BNPh z +stone BNUG Ba +stone jar BNWE 4 +stonechippings BNQU 2 +stonecutter BNRK x +stonedead BNR7 p +stonefalcon BNSk v +stonemarten BNTT z +stonemason BNVg k +stool BNW8 r +stoop BNXn BN +stop BNY0 F6 +stop up BNfs BU +stopper BNeu + +storage battery BNhA 9 +storage room BNh9 Bb +store BNkL Bx +storecupboard BNjY z +storey BNl8 m +stork BNmi Z +storksbill BNm7 u +storm BNnp x +storming BNoa 0 +story BNpO Bs +stout BNq6 s +stove BNrm b +stow BNsB B+ +straggler BNt/ l +straigh ahead BNz3 2 +straight BNuk 0 +straight ahead BNxR 8 +straight along BNyN 9 +straight past BNzK t +straightedge BNvY i +straightforward BNv6 BX +strain off BN16 g +strained BN0t w +strainer BN1d d +strait BN2a 7 +straitened BN3V BV +strand BN4q 5 +strange BN5j Bq +stranger BN7N BL +strangle BN8Y s +strangulated hernia BN9E / +strap BN+D U +stratagem BN+X BC +strategic BN/Z 1 +strategy BOAO x +straw BOA/ V +strawberry BOBU i +strawberry tree BOB2 w +stray from ones subject BODE + +stray off BOEC BW +straying BOCm e +streak BOFY 3 +stream BOGP BL +stream towards BOID BE +streamlined BOHa p +strech BOJH BH +strech out BOKy BV +strecher BOKO k +street BOM6 Y +streetcar BONS f +streetcorner BOMH z +streetlamp BONx p +streetlight BOOa p +strength BOPD w +stress BOQk Be +stressmark BOPz x +stretcher BOSC 4 +strew BOS6 a +strict BOTU 5 +stride BOUN Bd +strike BOVq ER +strike a balance BOZ7 BE +strike off BOa/ 6 +strike out BOb5 BQ +strike up an acquaintance BOdJ BP +striking BOeY Bw +string BOgI B7 +stringent BOiD 8 +strip BOi/ CA +stripe BOk/ BD +striped snakehead fish BOmC BY +strive for BOna g +stroke BOn6 Ce +stroke of apoplexy BOqY 1 +stroll BOrN BW +stroller BOsj f +strong BOt0 BT +strong drink BOvt BO +strongbox BOtC y +strongly BOvH m +strontium BOw7 i +strop BOxd a +structure BOx3 BF +struggle BOy8 CY +strut around BO1U m +stub BO16 a +stubborn BO2U Bm +student BO36 r +studfarm BO4l BE +studio BO5p r +studs BO6U W +study BO6q Bg +stuff BO8K B0 +stuffing BO9+ u +stuffy BO+s Z +stumble BO/F u +stun BO/z X +stupefy BPAK g +stupid BPAq Bz +stupidly BPCd d +sturdy BPC6 BU +sturgeon BPEO e +stutter BPEs x +sty BPFd BF +style BPGi b +stylus BPG9 y +subdue BPHv s +subject BPIb BD +subject to BPKD BD +subject to tax BPLG v +subjective BPJe l +subjugate BPL1 y +subjunction BPMn 5 +subjunctive BPNg BN +subjunctive mood BPOt BX +submission BPQE j +submit BPQn + +subordinate BPRl BJ +subscribe BPSu By +subscribe to BPVD BT +subscriber BPUg j +subscription BPWW BF +subsequent BPXb k +subsequently BPX/ B1 +subside BPZ0 BR +subsidiary subject BPbF 1 +subsidize BPb6 k +subsidy BPce BD +subsistence minimum BPdh 7 +substance BPec BH +substantive BPfj + +substitute BPgh Bc +substitution BPh9 3 +subterfuge BPi0 BR +subtle BPkF q +subtlety BPkv t +subtract BPlc g +subtraction BPl8 o +subtraction sum BPmk x +subtrahend BPnV h +suburb BPn2 c +subversion BPoS p +subversive BPo7 z +subvert BPpu u +subway BPqc X +succeed BPqz BA +success BPrz Bl +successfully BPtY + +successor BPuW 4 +succumb BPvO c +such BPvq Ba +such a BPxE CV +such as BPzZ BC +suck BP0b l +suckle BP1A o +suction apparatus BP1o 0 +sudden BP2c a +suddenly BP22 w +sue BP3m B4 +suet BP5e y +suffer BP6Q B3 +suffer damage BP8H / +suffer from BP9G m +suffice BP9s BR +sufficient BP+9 r +sufficiently BP/o BE +suffix BQAs n +suffocate BQBT BP +sugar BQEq X +sugarbowl BQCi t +sugarbowl BQFB j +sugarcane BQDP t +sugarpalm BQD8 u +sugary BQFk d +suggest BQGB B2 +suggestion BQH3 x +suit BQIo C8 +suitability BQLk r +suitable BQMP CT +suitcase BQOi w +suite BQPS W +sulfuric BQPo s +sullen BQQU 8 +sulphur BQRQ a +sulphureous BQRq v +sulphuric BQSZ r +sultan BQTE b +sultry BQTf BE +sum BQUj BL +sum up BQcW c +summarize BQVu u +summer BQXV i +summerhouse BQWc 5 +summery BQX3 BL +summit BQZC Bm +summon BQao r +summons BQbT BD +sun BQcy X +sun BQd2 BL +sun oneself BQi0 s +sunbeam BQfB g +sundew BQfh d +sunflower BQf+ j +sunglasses BQdJ t +sunlight BQgh p +sunrise BQhK e +sunset BQho f +sunshine BQiH t +super highway BQvh 1 +superb BQjg / +superficial BQkf BG +superfluous BQll 0 +superimpose BQmZ u +superintendant BQnH BX +superior BQoe Bf +superman BQp9 l +supermarket BQqi p +superscription BQrL 0 +supersign BQr/ z +superstition BQsy r +superstitious BQtd t +supervise BQuK BX +supper BQwW m +supplement BQw8 w +supplementary BQxs q +supplication BQyW u +supply BQzE DQ +support BQ2U DL +supporter BQ5f BP +supporters BQ6u 2 +supporting actor BQ7k w +supporting base BQ8U 0 +supporting wall BQ9I v +suppose BQ93 BH +supposing that BQ++ BQ +supposition BRAO Ba +suppress BRBo Bz +sure BRDb BG +surely BREh q +surface BRFL BT +surgeon BRGe r +surgery BRHJ BA +surgical BRIJ j +surgical operation BRIs BL +surly BRJ3 BS +surmise BRLJ BW +surname BRMf x +surpass BRNQ Bo +surplus BRO4 y +surprise BRPq B4 +surprising BRRi k +surrender BRSG BB +surround BRTH x +surroundings BRT4 7 +survive BRUz w +susceptibility BRVj 0 +suspect BRWX u +suspenders BRXF h +suspicion BRXm BK +suspicious BRYw BN +sustain BRZ9 Bg +sustained BRbd CG +suture BRdj + +swaddling cloth BReh u +swallow BRfP BI +swallow up BRgX 6 +swamp BRhR t +swan BRh+ T +swap BRiR BM +swarm BRjd BT +swarm of bees BRkw r +swathe BRlb Z +sway BRl0 x +swear BRml Ba +swear off BRn/ g +sweat BRof u +sweep BRpN Bj +sweeper BRqw e +sweet BRs2 Bj +sweet potato BRyY 3 +sweet smell BRzP o +sweet william BRz3 s +sweetandsour BRrO 0 +sweetheart BRuZ B9 +sweetness BRwW CC +sweetsmelling BRsC 0 +swell BR0j BN +swell into a roar BR2N x +swelling BR1w d +swift BR2+ BY +swiftly BR4W BD +swim BR5Z d +swim away BR8i j +swimming trunks BR72 s +swimmingbath BR52 9 +swimmingpool BR6z BD +swindle BR9F CH +swindler BR/M e +swindling BR/q h +swine BSAL c +swing BSAn CS +swing open BSC5 l +swirl BSDe 5 +swish BSEX v +switch BSFG B7 +switch off BSHB Bu +switch on BSIv BI +swoon BSJ3 B1 +sword BSLs i +swotch on BSMO 8 +sycamore BSNK BL +sycamore fig BSOV m +syllable BSO7 o +symbol BSPj j +symbolize BSQG k +symmetric BSQq t +symmetry BSRX f +sympathetic BSR2 + +sympathize BSS0 j +sympathy BSTX + +symphonic BSUV h +symphony BSU2 f +symptom BSVV x +synagogue BSWG q +synchronous BSWw o +syndicate BSXY 4 +syntax BSYQ v +syphilis BSY/ b +syringe BSZa t +syrup BSaH e +system BSal q +system of taxation BScU 9 +systematic BSbP BF +tabernacle BSdR k +table BSev l +tablecloth BSd1 6 +tablet BSfU l +tabulation BSf5 w +tackle BSgp BD +taco BShs T +tact BSh/ n +tactic BSim Z +tactics BSi/ b +tadpole BSja f +tail BSkk j +taillight BSj5 r +tailor BSlH BT +tails BSma S +taint BSms V +take BSnB Cw +take a break BS1g k +take a rest BS2E i +take a shower BS2m m +take a sunbath BS3M 0 +take a switch to BS4A 2 +take account of BSsU BM +take action BStg BW +take after BSu2 n +take aim BSvd d +take along BSv6 BX +take an interest BSxR 1 +take an interest in BSyG 6 +take apart BSzA BE +take away BS0E Bc +take care BS42 BZ +take care of BS6P BC +take down BS7R x +take exception BS8C v +take exception to BS8x 5 +take fire BS9q BD +take in BS+t CC +take into account BTAv B0 +take leave BTCj BK +take leave from BTDt BU +take note BTFB 4 +take off BTF5 BP +take off makeup BTK1 9 +take offence BTHI BT +take offence at BTIb BK +take offense BTJl BQ +take ones measure for BTLy BB +take over BTMz o +take part BTNb BC +take refuge BTOd y +take somebodys name BTPP BN +take steps BTQc BV +take the bait BTRx w +take the place of BTSh Ba +take up BTT7 Bi +taken aback BSpx B9 +taken in BSru m +taking BTVd Y +taking over BTV1 l +tale BTWa z +talent BTXN 3 +talented BTYE BF +talisman BTZJ d +talk BTZm e +talkative BTaE j +talkativeness BTan s +tall BTbT BP +tallow BTci 0 +talon BTdW W +tamarisk BTds f +tambon BTeL Z +tambourine BTek BA +tame BTfk 4 +tampon BTgc Z +tan BTg1 l +tangerine BTha z +tangle BTiN BX +tango BTjk g +tank BTkE BA +tannin BTlE s +tantalum BTlw g +tap BTmQ BU +tap at BTrr b +tape BTpe BK +taper BTqo Z +taperecorder BTnk BD +taperecording BTon 3 +tapestry BTrB q +tar BTsG e +tarantula BTsk k +tard BTtI 0 +tardy BTt8 l +target BTuh 5 +tart BTva BH +tartness BTwh f +task BTxA q +taskmaster BTxq BE +taste BTyu 9 +tasteless BTzr / +tasty BT0q BE +tattered BT1u p +tattler BT2X BH +tattoo BT3e Y +tau BT32 O +taunt BT4E l +tavern BT4p m +tax BT7S BZ +tax abatement BT/D 0 +tax burden BT/3 o +tax collector BUAf q +tax consultant BUBJ 2 +tax deduction BUB/ x +tax form BUCw m +tax hike BUDW o +tax increase BUD+ w +tax reduction BUEu 0 +tax relief BUFi t +tax return BUGP t +tax system BUG8 r +tax with BUHn m +taxcollectors office BT5P BK +taxfree BT6Z 5 +taxi BT9d V +taxidriver BT8r y +taxidriver BT9y p +taxpayer BT+b o +tea BUKM Q +teach BUKc Be +teacher BUL6 By +teahouse BUIN m +teak tree BUNs u +team BUOa h +team of three horses BUO7 3 +teapot BUIz i +teapot BUPy m +tear BUQY Bn +tear off BUR/ BI +tease BUTH V +teaspoon BUTc j +teat BUT/ e +teatowel BUJV 3 +technetium BUUd j +technical BUVA e +technics BUVe c +technique BUV6 e +technology BUWY p +teeth BUXB V +teetotalism BUXW 9 +teetotaller BUYT 2 +teetotum BUZJ p +telegram BUZy e +telegraph BUaQ BB +telemetry BUbR k +telephone BUb1 6 +telephone booth BUcv t +telephone kiosk BUdc v +telescope BUeL 8 +television BUfH h +television aerial BUfo BG +television antenna BUgu BG +television film BUh0 q +television movie BUie v +television set BUjN 6 +tell BUkH Ck +tell a lie BUoT e +telltale BUmr BH +tellurium BUny h +temper BUox BL +temperament BUp8 n +temperate BUqj BA +temperature BUrj o +template BUsL x +temple BUs8 2 +templet BUty v +temporarily BUuh BZ +temporary BUv6 Bo +tempt BUxi BO +temptation BUyw BV +tempting BU0F p +ten BU0u O +ten thousand BVGE l +tenant BU08 Z +tench BU1V V +tend to BVAu 0 +tendencious BU1q l +tendency BU2P C+ +tendentious BU5N m +tender BU5z EL +tenderness BU9+ CU +tendon BVAS c +tennis BVBi W +tenor BVB4 g +tenor violin BVCY z +tension BVDL 4 +tent BVED k +tented camp BVEn 2 +tenth BVFd n +terbium BVGp a +term BVHD c +term of abuse BVNz 7 +term of office BVOu t +terminal BVHf e +terminate BVH9 B3 +terminology BVJ0 BQ +termite BVLE y +terms BVL2 v +terms of employment BVMl BO +terrace BVPb Y +terrace house BVQc n +terraced house BVPz p +terrain BVRD Y +terrestrial BVRb t +terrible BVSI BW +terrify BVTe BA +territorial BVUe q +territory BVVI BH +terror BVWP BR +terrorism BVXg j +terrorist BVYD g +tertian fever BVYj 2 +test BVZZ DX +testament BVcw BK +testicle BVd6 0 +testify BVeu q +testimony BVfY Bb +text BVgz T +textbook BVhG o +textile BVhu 3 +thallium BVil g +than BVjF R +thank BVjW BC +thank for BVnG z +thank you BVn5 n +thank you very much BVog / +thankful BVkY w +thankless BVlI j +thanks BVlr 6 +thanks to BVml h +that BVpf BJ +that is BVvh h +that kind of BVwC Bc +that much BVxe 1 +that one BVyT k +that one over there BVzt Bj +that ones BVy3 2 +that over there BV1Q BG +that over there BVt1 Bs +that way BV2W BP +thats all right BVqo BQ +thats okay BVr4 BO +thats too bad BVtG v +thaw BV3l 3 +the BV4c BP +the antarctic BWXa BF +the arctic BWYf z +the day after tomorrow BWe1 8 +the day before yesterday BWfx BM +the dustman BWZS l +the far east BWZ3 o +the netherlands BWaf r +the power of suggestion BWg9 BZ +the proletariat BWiW y +the same BWjI m +the sandman BWbK l +the sleeping beauty BWbv 3 +the the BWeT i +the transvaal BWcm p +the ukraine BWdP h +the vatican BWdw j +theatre BV5r 9 +theatre play BV6o u +theatrical BV7W 9 +theatrical tour BV8T 0 +thee BV9H BG +thee and thou BV+N 7 +theft BV/I l +their BV/t l +theirs BWAS l +them BWA3 5 +theme BWBw v +then BWCf BS +thence BWDx z +theocracy BWEk l +theologian BWFJ l +theology BWFu 0 +theorem BWGi n +theory BWHJ b +theory of music BWHk y +therapy BWIW e +there BWI0 Bo +there are BWP5 m +there is BWQf i +thereabout BWKc BO +thereabouts BWLq BQ +thereafter BWM6 w +thereby BWNq l +therefore BWOP BK +therein BWPZ g +thermometer BWRB 1 +thermos BWR2 h +thermos bottle BWS/ t +thermos flask BWTs v +thermostat BWSX o +these BWUb o +these days BWVD l +thesis BWVo + +theta BWWm W +they BWW8 e +thick BWju v +thicken BWkd n +thickness BWlE n +thief BWlr r +thigh BWmW c +thimble BWmy q +thin BWnc Bn +thing BWpD BQ +thingamajig BWqT x +things BWrE g +think BWrk CC +think about BWuF BV +think ahead BWva BW +think to oneself BWww BK +think well of BWx6 BY +thinking BWtm f +third BWzS W +thirst BWzo Y +thirst after drinking to excess BW0e BN +thirsty BW0A e +thirteen BW1r f +thirteenth BW2K l +thirty BW2v b +this BW3K m +this afternoon BW42 u +this evening BW5k y +this here BW6W m +this morning BW68 1 +this way BW7x Bo +thisle BW4g W +thislefield BW3w w +thither BW9Z c +thorium BW91 c +thorn BW+R W +thorn bush BW+n l +thoroughgoing BW/M x +thoroughly BW/9 8 +those BXA5 7 +thou BXB0 l +though BXCZ y +thought BXDL b +thoughtful BXDm BC +thoughtfulness BXEo BP +thousand BXF3 b +thrash BXGS z +thread BXHF z +threat BXH4 w +threaten BXIo z +threatening BXJb t +three BXMP U +three times BXMj u +threepiece suite BXKI 6 +threetoed sloth BXLC BN +thresh BXNR 5 +threshold BXOK o +thrice BXOy j +thrifty BXPV e +throat BXPz l +throb BXQY h +throes BXQ5 b +throne BXRU W +through BXRq Ef +throughout BXWJ Ba +throughout the BXXj Bu +throw BXZ6 w +throw away BXaq 6 +throw off BXbk z +throw snowballs BXcX + +throw up BXdV / +throwback BXZR p +thrush BXeU Z +thrust BXet w +thrust down BXfd j +thrust out BXgA v +thulium BXgv d +thumb BXhM T +thunder BXhf 9 +thurible BXic i +thus BXi+ C0 +thwart BXly f +tibia BXmR i +tic BXmz e +tic douloureux BXqv 1 +tick BXnR Q +tick off BXqB u +ticket BXoP BQ +ticketwindow BXnh u +tickle BXpf i +tidbit BXrk 6 +tide BXse X +tidy BXs1 B5 +tie BXuu C1 +tie on BXxj Bi +tie up BXzF Bg +tiger BX0l X +tight BX08 3 +tighten BX1z BB +tightly BX20 Z +tightness of the chest BX3N BE +tilde BX4R T +tile BX4k v +till BX5T BA +tillage BX6T BO +tiller BX7h Z +tilt BX76 s +timber BX8m i +timbrel BX9I 5 +time BX+7 v +time off BX/q c +time to consider BYAG z +timetable BX+B 6 +timid BYA5 BL +timidity BYCE w +tin BYDs Bm +tin can BYKD 6 +tin plate BYK9 8 +tinder BYFS y +tinker BYGE e +tinkle BYGi BJ +tinopener BYC0 4 +tint BYHr BK +tiny BYI1 BO +tip BYL5 CI +tipsy BYOB 7 +tire BYO8 T +tire lever BYRd o +tire out BYSF 0 +tire tread BYS5 h +tired BYPP i +tired out BYPx u +tiresome BYQf + +titanic BYTa n +titanium BYUB g +title BYUh BS +titmouse BYVz Y +to BYW1 BN +to a certain degree BZeB / +to be continued BZfA u +to both sides BZfu BB +to her BZgv BP +to him BZh+ 8 +to it BZi6 BM +to me BZkG 5 +to my thinking BZk/ w +to some extent BZlv Bz +to some place BZni p +to tell the truth BZoL Bi +to the BZpt 7 +to the east of BZss 4 +to the end BZtk z +to the left BZuX 1 +to the letter BZvM 3 +to the point BZwD s +to the right BZwv 5 +to the side BZxo p +to thee BZqo BM +to them BZr0 4 +to us BZyR e +to what extent BZyv s +to you BZzb Br +toad BYYC Q +toast BYYS B3 +tobacco BYaJ a +tobacconists BYaj t +today BYbQ e +todo BYWL q +toe BYbu P +toga BYb9 T +together BYcQ 8 +together with BYdM CE +toilet BYgf 4 +toilet brush BYhX 3 +toiletpaper BYfQ BP +token BYiO BY +tolerant BYjm 6 +tolerate BYkg BV +tolling BYl1 r +tomato BYnU c +tomato juice BYnw s +tomatosoup BYmg 0 +tomb BYoc a +tomorrow BYo2 c +tomorrow afternoon BYpS 5 +tomorrow evening BYqL x +tomorrow morning BYq8 0 +ton BYrw P +tone BYr/ c +tone down BYsb f +tongs BYs6 BC +tongue BYt8 f +tonight BYub b +tonsil BYu2 h +too BYvX BL +too much BY0A 1 +tool BYwi h +tooth BYyg U +toothache BYy0 p +toothbrush BYxD x +toothpaste BYx0 s +toothpick BYzd j +top BY01 Bm +top of the head BY6C l +topaz BY2b X +topgallant mast BY2y w +topic BY3i BQ +topical BY4y o +topicality BY5a o +torch BY6n q +torment BY7R B8 +torn BY9N Y +torpedo BY9l 7 +torrent BY+g t +tortoise BY/N g +torture BY/t BZ +torturer BZBG f +toss BZBl d +toss off BZCC 7 +total BZC9 5 +total abstainer BZEu + +total abstinence BZFs BC +totalitarianism BZD2 4 +totem BZGu W +toucan BZHE Z +touch BZHd BZ +touch lightly BZKU 4 +touch lightly on BZLM x +touch on BZL9 h +touch up BZMe s +touch upon BZNK v +touching BZI2 Be +tour BZN5 f +tourism BZOY e +tourist BZO2 b +tourist agency BZPR x +tourist bureau BZQC y +tournament BZQ0 v +tousle BZRj BO +tow BZSx z +toward BZTk CG +towards BZVq C2 +towel BZYg Y +tower BZY4 V +towingline BZZN BF +town BZbI k +town hall BZca 4 +townhall BZaS 2 +township BZbs u +toy BZdS v +trace BZ1G 3 +trace out BZ19 f +track BZ2c 8 +tractability BZ3Y BH +tractable BZ4f x +tractor BZ5Q l +trade BZ7X CJ +trade and industry BZ9g BG +tradeunion BZ51 Bi +trading BZ+m s +tradition BZ/S v +traditional BaAB o +traffic BaAp BG +traffic block BaBv / +traffic congestion BaCu BO +traffic jam BaD8 + +traffic rules BaE6 t +traffic tieup BaFn BN +tragedy BaG0 7 +tragic BaHv c +trail BaIL s +trailer BaI3 g +train BaJX Bn +train ticket BaK+ n +trait BaLl u +trajectory BaMT u +tram BaNB S +tramping BaNT o +trample on BaN7 w +tranquil BaOr z +transact money BaQG 2 +transaction BaPe o +transfer BaQ8 CP +transform BaTL CF +transformation BaVQ D5 +transgress BaZJ t +transgression BaZ2 l +transistor Baab q +transitive BabF z +translate Bab4 6 +translation Bacy BL +transliteration Bad9 BM +transmit BafJ BS +transparant Bagb 2 +transport BahR Bo +transporter Bai5 BO +transverse BakH g +transvestite Bakn o +trap BalP h +travel Balw 7 +travel agency BaoQ w +travel as passenger BapA BD +travelled Bamr e +traveller BanJ f +travelling Bano o +travesty BaqD i +tray Baql BB +treacherous Barm BF +treachery Basr h +tread BatM B/ +treasure BavL a +treat Bavl CK +treat as Ba0P k +treat to Ba0z v +treatise Baxv h +treatment BayQ BM +treaty Bazc z +tree Ba1i b +tree Ba2v g +treetrunk Ba19 y +trefoil Ba3P a +tremble Ba3p 8 +trench Ba4l b +tressle Ba5A BL +trial Ba6L BE +triangle Ba7P p +triangular Ba74 o +tribal Ba8g Y +tribe Ba84 r +tribunal Ba9j BM +tribune Ba+v c +tribute Ba/L l +trick Ba/w C6 +trickery BbCq BL +trickle down BbD1 w +tricycle BbEl f +tried BbFE X +trifle BbFb Bo +trifling BbHD BO +trigger BbIR v +trigonometry BbJA BA +trill BbKA q +trillion BbKq d +trilogy BbLH g +trim BbLn BR +trimming BbM4 n +trip BbNf k +triple BbOD m +trishaw BbOp e +trite BbPH BO +triteness BbQV w +triumph BbRF BU +triviality BbSZ 1 +trolley BbT6 j +trolleybus BbTO s +trollop BbUd z +trombone BbVQ t +troop BbV9 v +tropical BbWs d +tropics BbXJ d +trot BbXm f +trouble BbYF DY +troublesome Bbbd BL +trough Bbco 8 +troupe Bbdk d +trousers BbeB x +trousers wearing Bbey y +trout Bbfk U +truce Bbf4 n +truck Bbgf w +truculent BbhP 9 +true BbiM Ba +truly Bbjm Bi +trump BblI u +trumpet Bbl2 Bp +truncate Bbnf 7 +trunk Bboa B0 +trust BbqO Cf +trust in Bbtj BD +trustworthy Bbst 2 +truth Bbum s +try BbvS Bu +try on BbxA o +tub Bbxo i +tube BbyK Bp +tuberculosis Bbzz BG +tuft Bb05 x +tufted lark Bb1q q +tug Bb2U t +tugboat Bb3B d +tulip Bb3e W +tumble down Bb30 + +tummy Bb4y V +tummy ache Bb5H h +tumor Bb5o q +tumour Bb6S r +tumult Bb69 BX +tumulus Bb8U i +tuna Bb9e X +tunafish Bb82 o +tune Bb91 By +tuneful Bb/n BC +tungsten BcAp f +tunic BcBI g +tunnel BcBo W +tunny BcB+ X +tup BcCV R +turf BcCm d +turkey BcDD b +turmoil BcDe 6 +turn BcEY GW +turn around BcOq B6 +turn away BcQk CP +turn back BcSz BF +turn off BcT4 B1 +turn on BcVt Cj +turn over BcYQ B8 +turn round BcaM B3 +turn to account BccD B0 +turn to good account Bcd3 CT +turnedin legs BcKu 0 +turnip BcMs 0 +turniprooted celery BcLi BK +turnover BcNg e +turnpike BcN+ s +turret BcgK u +turtledove Bcg4 2 +tussle Bchu 8 +tutor Bciq BK +twaddle Bcj0 v +twelfth Bckj b +twelve Bck+ W +twentieth BclU i +twenty Bcmj a +twentyone Bcl2 t +twice Bcm9 n +twich Bcnk j +twig BcoH e +twill Bcol T +twin Bco4 z +twine Bcpr X +twins BcqC X +twist BcqZ CQ +twitter Bcsp 2 +two Bcvl Q +two hundred Bcv1 o +two weeks Bcwd y +twofooted Bctf r +twoyear BcvA l +twoyearold BcuK 2 +type BcxP BF +typeset BcyU c +typewriter Bcyw o +typewriter carriage BczY BF +typhoon Bc0d a +typhus Bc03 X +typical Bc1O m +typist Bc10 Z +tyrannize Bc2N v +tyranny Bc28 r +tyrant Bc3n w +tyre Bc4X t +tyre lever Bc5E o +ubiquitous Bc5s s +udder Bc6Y a +ugly Bc6y t +ulcer Bc7f W +ultimately Bc71 / +ultimatum Bc80 j +umbrella Bc9X d +umpire Bc90 r +un Bc+f n +unabbreviated Bc/G s +unanimous Bc/y v +unarmed BdAh f +unattached man BdBA w +unbaptized BdBw k +unbearable BdCU 1 +uncertain BdDJ z +uncharted BdD8 x +uncivilized BdEt n +uncle BdFU BD +unclean BdGX 3 +unconscious BdHO BS +uncontrollable BdIg w +uncooked BdJQ j +uncouple BdJz 1 +uncover BdKo f +undecided BdLH l +under BdLs f +under age Bdfu v +under the circumstances Bdgd Be +underestimate BdML + +undergarment BdNJ t +underground BdN2 / +underhand BdO1 s +underhanded BdPh 4 +underline BdQZ k +undermine BdQ9 v +underneath BdRs B0 +underpants BdTg l +underscore BdUF p +understand BdUu BT +understandable BdWB BY +understandably BdXZ 4 +understanding BdYR B5 +understood BdaK h +undertake Bdar Bm +undertaker BdcR w +undertakers business BddB BD +undertakers man BdeE / +underwater BdfD r +undoubtedly Bdh7 5 +undress Bdi0 B2 +undue Bdkq q +undulate BdlU d +unemployed Bdlx t +unemployment Bdme 7 +unexpectedly BdnZ 3 +unfaithful BdoQ 4 +unfit for work BdpI 3 +unfortunate Bdp/ r +unfortunately Bdqq B5 +unfounded Bdsj h +unfruitful BdtE o +ungrateful Bdts l +unhappy BduR g +unharness Bdux i +unhook BdvT i +unicorn Bdv1 g +unified BdwV h +uniform Bdw2 BE +unilateral Bdx6 o +unimportant Bdyi 1 +unintelligible BdzX BD +unintentional Bd0a 3 +union Bd1R o +unique Bd15 f +unit Bd2Y g +unite Bd24 BS +united Bd4K d +unity Bd4n x +universal Bd5Y v +universality Bd6H BE +universe Bd7L 1 +university Bd8A 2 +university graduate Bd82 + +unkempt Bd90 c +unkind Bd+Q BS +unknown Bd/i b +unlearn Bd/9 BQ +unleavened bread BeBN x +unless BeB+ Y +unload BeCW r +unlock BeDB c +unmarried BeDd r +unmarried woman BeEI r +unoccupied BeEz 0 +unordinary BeFn w +unpack BeGX b +unpleasant BeGy BX +unreliable BeIJ w +unrest BeI5 Z +unrig BeJS v +unripe BeKB l +unripe fruit BeKm s +unroll BeLS 3 +unrolling BeMJ j +unseemly BeMs t +unseen BeNZ b +unsocial BeN0 x +unsound BeOl z +unthankful BePY n +untidiness BeP/ 7 +untidy BeQ6 BC +untie BeR8 u +until BeSq p +untrodden BeTT h +untroubled BeT0 y +untrue BeUm Z +unusual BeU/ x +unwell BeVw j +unwind BeWT d +unwinding BeWw k +up BeYN q +uphill BeY3 x +upholster BeZo 0 +upload Beac a +upon Bea2 B+ +upon which Bec0 g +upper Bed9 n +upper arm Beek h +upper hand BefF BJ +upper side BegO u +upperarm BedU p +upset Beg8 D4 +upsilon Bek0 i +upstairs BelW 0 +uptodate BeXU 5 +upwards BemK 0 +uranium Bem+ d +urban Benb s +urchin BeoH l +urge Beos CE +urge on BetR BG +urgency Beqw 4 +urgent Bero 9 +urgently Besl s +urinate BeuX BU +urine Bevr h +us BewM m +use Bewy Bc +use up Be3U CO +used BeyO i +used to Beyw p +used up BezZ BJ +useful Be0i y +useless Be1U Bm +user Be26 a +usual Be5i BB +usually Be6j + +usurp Be7h BJ +usury Be8q u +uterus Be9Y g +utility Be94 f +utilize Be+X Bg +utopian Be/3 t +utter BfAk BK +vacant BfBu BH +vacation BfC1 g +vaccinate BfDV r +vaccine BfEA s +vacuum BfFg v +vacuum cleaner BfGP v +vacuumcleaner BfEs 0 +vagabond BfG+ p +vagina BfHn k +vague BfIL x +vain BfI8 BP +valerian BfKL i +valiant BfKt 2 +valid BfLj z +validate BfMW m +valise BfM8 t +valley BfNp d +valuable BfOG BH +value BfPN BL +valve BfQY 8 +vampire BfRU 1 +van BfSJ j +vanadium BfSs g +vandal BfTM o +vanilla BfT0 b +vanity BfUP p +vanity bag BfU4 w +vanity case BfVo q +vapor BfWS j +vapour BfW1 0 +variable BfXp 8 +variation BfYl 0 +varied BfZZ 5 +variety BfaS 5 +variety entertainment BfbL 9 +various BfcI 8 +varnish BfdE z +vary Bfd3 v +vase Bfem i +vaseline BffI g +vassal Bffo g +vast BfgI BP +vat BfhX i +vault Bfh5 c +vaulted ceiling BfiV w +veal BfjF Y +vegetable Bfjd g +vegetarian Bfj9 8 +vegetate Bfk5 p +vegetation Bfli BU +vehicle Bfm2 0 +veil Bfnq 9 +veiled Bfon BJ +vein Bfpw 0 +velvet Bfqk w +vend BfrU BK +venerability Bfse v +venereal BftN w +venereal disease Bft9 3 +vengeance Bfu0 d +venison BfvR c +ventilate Bfvt BL +ventilator Bfw4 q +venture Bfxi By +veranda BfzU d +verb Bfzx Y +verbatim Bf0J y +verdict Bf07 7 +verge Bf12 W +verge of a road Bf2M p +verify Bf21 BQ +vermin Bf4F d +vermouth Bf4i e +verse Bf5A BB +version Bf6B o +vertebra Bf6p e +vertical Bf7H BE +vertigo Bf8L t +verve Bf84 BO +very Bf+G 7 +very ancient Bf/B 4 +very best Bf/5 h +very much BgAa BG +very well BgBg v +vessel BgCP Bv +vest BgD+ n +vestal BgEl o +vestal virgin BgFN 5 +vetch BgGG U +vetchling BgGa f +veteran BgG5 q +veterinarian BgHj 4 +vex BgIb BC +vibrate BgJd k +vibration BgKB BN +vicar BgLO X +vice BgOL 3 +vicepresident BgLl Bg +viceversa BgNF BG +vicinity BgPC s +vicious BgPu Br +victim BgRZ v +victor BgSI d +victory BgSl x +video recorder BgVu y +videorecorder BgTW 9 +videotape BgUT 5 +videotape BgVM i +view BgWg D+ +viewpoint Bgae w +vigour BgbO BW +viking Bgck Y +vile Bgc8 9 +villa Bgd5 3 +village Bgew f +villager BgfP g +villain Bgfv t +vinagerbottle Bggc 3 +vine BghT 4 +vinegar BgiL f +vineyard Bgiq d +viola BgjH m +violate Bgjt B2 +violence Bglj s +violently BgmP k +violet Bgmz BT +violin BgoG Y +violoncello Bgoe o +viper BgpG W +virgin Bgpc 1 +virginal BgqR s +virgule Bgq9 d +virility Bgra z +virtual BgsN g +virtue Bgst BP +virtuoso Bgt8 j +virus Bguf Y +visa Bgu3 V +visible BgvM m +vision Bgvy 6 +visit Bgws + +visit a person BgzD 1 +visit a place Bgz4 x +visit regularly Bg0p BA +visitor Bgxq c +visitors register BgyG 9 +visual acuity Bg1p 2 +visé Bg2f Y +vital Bg23 q +vitamin Bg3h c +vitamin c Bg39 w +vivacious Bg4t 6 +vivacity Bg5n BW +vixen Bg69 Bo +viz Bg8l n +vocabulary Bg9M BK +vodka Bg+W W +voice Bg+s 0 +void Bg/g q +volcano BhAK w +volley BhA6 r +voltage BhBl m +volume BhCL BN +voluntarily BhDY BN +voluntary BhEl z +volunteer BhFY x +voluptuous BhGJ + +vomit BhHH 6 +vote BhIB 1 +voting by ballot BhI2 6 +vow BhJw p +vowel BhKZ s +voyage BhLF q +vulgar BhLv BW +vulture BhNF o +wadding BhNt Z +wade BhOG m +wafer BhOs Z +waffle BhPF c +wage BhPh BO +wage war BhSr s +wage war against BhTX v +wage war on BhUG n +wager BhQv r +wages BhRa BR +waggon BhUt j +wah BhVQ P +wail BhVf s +wainscot BhWL Br +waist BhX2 k +waistcoat BhYa l +waistline BhY/ s +wait BhZr BW +wait for Bhd7 Be +waiter BhbB Y +waiting BhcK c +waiting room Bhcm n +waitingroom BhbZ x +waitress BhdN u +waive BhfZ s +wake BhgF BJ +wake up BhhO BP +walk Bhid Bw +walk back BhkN m +walk backwards Bhkz w +walk upon Bhlj z +wall BhoI BC +wall covering BhrS 0 +wallet BhpK BC +wallflower BhqM l +wallpainting BhmW BJ +wallpaper Bhqx h +walltile Bhnf p +walnut BhtO n +walnuttree BhsG BI +waltz Bht1 V +wand BhuK t +wander Bhu3 B6 +wander about Bhxv BI +wander from ones subject Bhy3 BC +wandering from the point Bhwx + +wane Bhz5 BF +want Bh0+ Bp +want of civilization Bh3q / +want to have Bh4p y +want to know Bh5b t +wanton Bh2n e +wantonness Bh3F l +wapiti Bh6I Z +war Bh6h Y +war of aggression BiFx z +ward off Bh7j x +wardrobe Bh65 q +warehouse Bh8U r +wares Bh8/ BB +warlike Bh+A x +warlock Bh+x w +warm Bh/h q +warmly BiAL p +warmth BiA0 Z +warn BiBN a +warning BiBn 2 +warrant BiCd CR +warrior BiEu w +wart BiFe T +wash BiGk 4 +wash clothes BiK6 q +wash off BiLk s +wash up BiMQ 9 +washable BiHc w +washingbear BiIM s +washingup bowl BiI4 BD +washingup liquid BiJ7 / +wasp BiNN S +waste BiOK Cl +waste product BiRJ 4 +wasted BiQv a +wastepipe BiNf r +watch BiSB Ch +watch out for BiXr BW +watch over BiZB BQ +watchmaker BiUi BE +watchman BiVm 0 +watchword BiWa BR +water BiaR 7 +water Bif1 Ca +water buffalo Bimr v +waterbottle BibM v +waterbuffalo Bib7 5 +watercolour Bic0 BV +watercourse BiiP 0 +watercress BijD k +waterfall Bijn k +watering Bik6 BL +wateringcan BikL v +waterlily BimF m +watermelon BieJ x +waterplaintain Bie6 7 +watt Bina R +wave Binr Bs +wave about BirX 0 +waver BipX BB +wavering BiqY / +wax BisL w +wax candle Bis7 i +way Bitd BV +way out Biuy o +we Biva Z +weak Bivz Z +weaken BiwM BL +weakly BixX y +wealth BiyJ X +wealthy Biyg x +weapon BizR W +wear Bizn BM +wear away Bi1O BS +wear down Bi2g r +wear off Bi3L Bc +wear out Bi4n B1 +weary Bi0z b +weasel Bi6c W +weather Bi6y z +weather report Bi7l 8 +weave Bi8h U +weaverbird Bi81 u +wed Bi9j 6 +wedding BjA2 Bn +weddingfeast Bi+d 1 +weddingparty Bi/S Bk +wedge BjCd BH +weed BjDk g +weed out BjEE n +week BjFa S +weekend BjEr v +weekly BjFs o +weep BjGU BG +weever BjHa d +weigh BjH3 BB +weighing machine BjI4 BN +weight BjKF r +weightlessness BjKw u +weighty BjLe f +weird BjL9 BS +welcome BjNP Ba +weld BjOp b +well BjY9 CF +well then BjbC BF +well up BjcH BH +wellbeing BjPE Bv +wellbeloved BjQz Bc +wellinformed BjSP BA +wellknown BjTP x +wellmannered BjUA Bs +welloff BjVs 4 +wellread BjWk m +welltodo BjXK BK +welltried BjYU p +wench BjdO c +west Bjdq 7 +western Bjel u +westward BjfT w +westwards BjgD y +wet Bjg1 e +wet season BjhT l +whack Bjh4 Y +whale BjiQ T +whalebone Bjij f +wharf BjjC 1 +what Bjj3 e +what a BjnN BO +what a pity Bjob q +what for BjpF y +what kind of Bjp3 Bb +what kind of BjrS BH +what number BjsZ m +what sort of Bjs/ Bc +what time Bjub e +what time is it Bju5 x +whatchamacallit BjkV 2 +whatever BjlL 8 +whats more BjmH BG +wheat Bjvq a +wheel BjwE Y +wheelbarrow Bjwc n +wheeziness BjxD x +wheezy Bjx0 1 +when Bjyp j +whence BjzM 0 +where Bj0A BF +where to Bj5c BH +whereabouts Bj1F 9 +whereas Bj2C BH +whereby Bj3J m +wherefore Bj3v h +wherein Bj4Q o +wherever Bj44 k +which Bj6j f +which ones Bj74 BA +whichever Bj7C 2 +while Bj84 BQ +whilst Bj+I BB +whim Bj/J 1 +whimstone Bj/+ c +whinny BkAa Z +whip BkAz Bn +whipped cream BkCa k +whirl BkC+ s +whirlwind BkDq BG +whiskers BkEw e +whiskey BkFO Z +whisky BkFn Y +whisper BkF/ BP +whist BkHO T +whistle BkHh 8 +white BkKp d +white man BkLv n +white waterlily BkMW BC +whiten BkLG p +whitetailed eagle BkId 8 +whitewash BkJZ BQ +whither BkNY 9 +who BkOV v +whoever BkPE z +whole BkQq BR +wholehearted BkP3 z +wholesale BkR7 i +wholly BkSd BJ +whom BkTm j +whore BkUJ BQ +whorehouse BkVZ 9 +whose BkWW 1 +whose BkXL x +why BkX8 p +why BkYl f +wick BkZE n +wide BkZr BM +widely Bkbq t +widelytravelled Bka3 z +widow BkcX V +widower Bkcs d +width BkdJ z +wife Bkd8 n +wig Bkej Q +wild Bkez Z +wild animal Bkf2 BL +wild boar BkhB 0 +wild card Bkh1 v +wild duck Bkik h +wild goat BkjF h +wildebeest BkfM q +will Bkku Bc +willing BkmK BI +willingly BknS z +willingness BkoF h +willlessness Bkjm BI +willow Bkom U +willowherb Bko6 l +willy Bkql r +willynilly Bkpf BG +win BkrQ l +win back Bk7W m +win over Bk78 BA +wind Bksy CW +wind around Bkzt w +wind instrument Bk0d z +wind off Bk1Q f +wind up Bk1v CO +windfall BkvI q +windinstrument Bkr1 9 +windlessness Bkvy m +window Bkyl q +windowframe BkwY BW +windowglass Bkxu 3 +windpipe BkzP e +wine Bk39 R +wing Bk4O t +winged Bk47 e +winkle Bk5Z Z +winter Bk5y u +winter Bk6g 2 +wipe Bk88 3 +wipe off Bk9z + +wipe out Bk+x o +wire BlAR + +wireless BlBP m +wireless telegraph BlB1 BH +wireshears Bk/Z 4 +wiring BlC8 g +wisdom BlDc a +wise BlD2 k +wisely BlEa e +wisent BlE4 W +wish BlFO B6 +wit BlHI d +witch BlHl u +witchcraft BlIT j +with BlI2 BG +with difficulty BlYm 7 +with effort BlZh 3 +with one accord BlaY Bf +with reference to Blb3 Bj +with the exception of Blda BB +with wisdom Bleb k +with young Ble/ p +withdraw BlJ8 Bd +withdraw ones name BlLZ BO +withdraw ones subscription BlMn Bg +wither BlOH BG +withhold BlPN h +within BlPu 4 +without BlQm BR +without a name BlR3 z +without delay BlSq Bl +without fail BlUP Bu +without prejudice BlV9 y +withstand BlWv B3 +witness Blfo BL +witticism Blgz 3 +witty Blhq u +wizard BliY s +wizardry BljE e +woe Blji T +wolf Blj1 R +wolverine BlkG g +woman BllW V +woman writer Bllr x +womanchaser Blkm w +womb Blmc Y +wonder Blm0 CG +wonderful Blo6 BN +wonted BlqH m +woo Blqt t +wood Blsg Q +wooddye Blra h +wooden Blsw V +wooden cloth BltF g +woodpecker Bltl e +woodpile BluD v +woods Bluy X +woodstain Blr7 l +wool BlvJ c +word Blws g +wordforword Blvl BH +work Blyi Cx +work hard BmBm z +work of art BmCZ BB +work out BmDa Bi +workbasket BlxM u +workbench Bl1T BU +worker Bl2n BK +workers Bl3x x +workhouse Bl4i BC +working capital Bl5k BE +working class Bl6o BB +working classes Bl7p BF +working man Bl8u BR +workman Bl9/ 7 +workmen Bl+6 x +workplace Bl/r s +workroom Blx6 o +works BmAX f +workshop BmA2 w +world BmE8 h +worldglobe BmFd 1 +worldwar BmGS k +worldwide BmG2 + +worm BmI2 Z +wormeaten BmH0 BC +worn BmJ2 c +worn out BmKS t +wornout BmJP n +worries BmK/ 8 +worry BmL7 CA +worry oneself BmN7 t +worse BmOo Y +worship BmPA Bp +worship service BmR1 BW +worshipper BmQp BM +worst BmTL Z +worsted BmTk n +worth BmUL BK +worth reading BmW3 u +worth seeing BmXl t +worthless BmVV 3 +worthy BmWM r +wound BmYS Bj +wounded BmZ1 t +woundwort Bmai f +wrangle BmbB BS +wrap up Bmd0 u +wrapper BmcT u +wrappingpaper BmdB z +wreath Bmei BL +wreathe Bmft a +wreck BmgH h +wren Bmgo a +wrench BmhC Y +wrest Bmha r +wrestle BmiF h +wretched Bmim BP +wring Bmj1 r +wrinkle Bmkg BV +wrist Bmms h +wristwatch Bml1 3 +writ BmnN t +write Bmn6 BW +write down BmqO Br +write off Bmr5 g +write shorthand BmsZ x +write upon BmtK y +writer BmpQ + +writhe Bmt8 z +writing BmxJ BN +writing desk BmyW / +writingdesk Bmuv BK +writingpaper Bmv5 BQ +written BmzV c +wrong Bmzx BY +xenon Bm1J V +xerographic Bm1e q +xerographic copy Bm2I z +xerography Bm27 4 +xi Bm3z O +xylophone Bm4B g +yacht Bm4h T +yam Bm40 6 +yard Bm5u + +yarrow Bm6s c +yawn Bm7I BB +ye Bm8J l +year Bm9b T +yearbook Bm8u t +yearly Bm9u u +yearn Bm+c BQ +yeast Bm/s U +yell BnAA 6 +yellow BnA6 U +yellow fever BnBO p +yen BnB3 O +yes BnCF U +yesterday BnCZ z +yet BnDM B1 +yewtree BnFB o +yield BnFp BE +yodel BnGt W +yoga BnHD T +yoghourt BnHW k +yoghurt BnH6 j +yoke BnId z +yon BnJQ q +yonder BnJ6 BA +you BnK6 Bw +young BnMq Bz +young of a wild boar BnTI BI +young woman BnUQ k +younger brother BnOd BW +younger sibling BnPz BP +younger sister BnRC BT +youngster BnSV z +your BnU0 o +youre welcome BnYt Bu +yours BnVc BA +yourself BnWc k +youth BnXA BE +youth hostel BnYE p +ytterbium Bnab f +yttrium Bna6 c +zap BnbW S +zeal Bnbo i +zealous BncK + +zebra BndI i +zen Bndq N +zenith Bnd3 i +zephyr BneZ l +zero Bne+ e +zest Bnfc BM +zeta Bngo T +zigzag Bng7 BO +zilch BniJ a +zinc Bnij S +zipper Bni1 x +zirconium Bnjm k +zither BnkK X +zodiac Bnkh l +zone BnlG 3 +zoo Bnl9 W +zoologist BnmT y +zoology BnnF v +zucchini Bnn0 g diff --git a/apps/readest-app/src/__tests__/services/dictionaries/_dictFixtures.ts b/apps/readest-app/src/__tests__/services/dictionaries/_dictFixtures.ts new file mode 100644 index 00000000..d947ec0c --- /dev/null +++ b/apps/readest-app/src/__tests__/services/dictionaries/_dictFixtures.ts @@ -0,0 +1,28 @@ +/** + * Shared DICT (dictd) test fixture loader. + * + * Points at the real FreeDict English-Dutch bundle in + * `src/__tests__/fixtures/data/dicts/`. 7,720 entries, dictzip-compressed + * body, plain UTF-8 plain-text definitions — small enough for fast tests + * but large enough to exercise multi-chunk reads. + */ +import { readFile } from 'node:fs/promises'; +import path from 'node:path'; + +const FIXTURES_DIR = path.resolve(__dirname, '../../fixtures/data/dicts'); + +export const INDEX_FIXTURE_PATH = path.join(FIXTURES_DIR, 'freedict-eng-nld.index'); +export const DICT_FIXTURE_PATH = path.join(FIXTURES_DIR, 'freedict-eng-nld.dict.dz'); + +export const INDEX_FIXTURE_NAME = 'freedict-eng-nld.index'; +export const DICT_FIXTURE_NAME = 'freedict-eng-nld.dict.dz'; + +async function readAsFile(filePath: string, name: string): Promise { + const bytes = await readFile(filePath); + const buf = new Uint8Array(bytes.length); + buf.set(bytes); + return new File([buf], name); +} + +export const readIndexFile = () => readAsFile(INDEX_FIXTURE_PATH, INDEX_FIXTURE_NAME); +export const readDictFile = () => readAsFile(DICT_FIXTURE_PATH, DICT_FIXTURE_NAME); diff --git a/apps/readest-app/src/__tests__/services/dictionaries/_slobFixtures.ts b/apps/readest-app/src/__tests__/services/dictionaries/_slobFixtures.ts new file mode 100644 index 00000000..d0314310 --- /dev/null +++ b/apps/readest-app/src/__tests__/services/dictionaries/_slobFixtures.ts @@ -0,0 +1,24 @@ +/** + * Shared Slob (Aard 2) test fixture loader. + * + * Points at the real FreeDict English-Dutch slob in + * `src/__tests__/fixtures/data/dicts/`. ~7,700 refs, zlib-compressed bins, + * `text/html;charset=utf-8` content for headwords and `text/css` for the + * bundled stylesheet (`~/css/default.css`). + */ +import { readFile } from 'node:fs/promises'; +import path from 'node:path'; + +const FIXTURES_DIR = path.resolve(__dirname, '../../fixtures/data/dicts'); + +export const SLOB_FIXTURE_PATH = path.join(FIXTURES_DIR, 'eng-nld.slob'); +export const SLOB_FIXTURE_NAME = 'eng-nld.slob'; + +async function readAsFile(filePath: string, name: string): Promise { + const bytes = await readFile(filePath); + const buf = new Uint8Array(bytes.length); + buf.set(bytes); + return new File([buf], name); +} + +export const readSlobFile = () => readAsFile(SLOB_FIXTURE_PATH, SLOB_FIXTURE_NAME); diff --git a/apps/readest-app/src/__tests__/services/dictionaries/dictProvider.test.ts b/apps/readest-app/src/__tests__/services/dictionaries/dictProvider.test.ts new file mode 100644 index 00000000..09f1c89c --- /dev/null +++ b/apps/readest-app/src/__tests__/services/dictionaries/dictProvider.test.ts @@ -0,0 +1,348 @@ +import { describe, it, expect, beforeEach } from 'vitest'; +import { gzipSync } from 'node:zlib'; + +import { createDictProvider } from '@/services/dictionaries/providers/dictProvider'; +import { decodeDictBase64, parseDictIndex } from '@/services/dictionaries/dictReader'; +import type { ImportedDictionary } from '@/services/dictionaries/types'; +import type { BaseDir } from '@/types/system'; + +import { + INDEX_FIXTURE_NAME, + DICT_FIXTURE_NAME, + readIndexFile, + readDictFile, +} from './_dictFixtures'; +import { makeReadCounter, withReadCounting } from './_countingFs'; + +// --------------------------------------------------------------------------- +// Base64 alphabet decoder unit tests. +// --------------------------------------------------------------------------- + +describe('decodeDictBase64', () => { + it('decodes single-character tokens', () => { + expect(decodeDictBase64('A')).toBe(0); + expect(decodeDictBase64('B')).toBe(1); + expect(decodeDictBase64('Z')).toBe(25); + expect(decodeDictBase64('a')).toBe(26); + expect(decodeDictBase64('z')).toBe(51); + expect(decodeDictBase64('0')).toBe(52); + expect(decodeDictBase64('9')).toBe(61); + expect(decodeDictBase64('+')).toBe(62); + expect(decodeDictBase64('/')).toBe(63); + }); + + it('decodes multi-character big-endian tokens', () => { + // 'BA' = 1·64 + 0 = 64 + expect(decodeDictBase64('BA')).toBe(64); + // 'Bn0B' = 1·64³ + 39·64² + 52·64 + 1 = 262144+159744+3328+1 = 425217 + expect(decodeDictBase64('Bn0B')).toBe(425217); + }); + + it('rejects characters outside the alphabet', () => { + expect(() => decodeDictBase64('A!B')).toThrow(/Invalid DICT base64/); + }); +}); + +// --------------------------------------------------------------------------- +// Synthetic-bundle tests — minimal DICT bundle exercising parser edge cases. +// --------------------------------------------------------------------------- + +const A64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + +function encodeDictBase64(n: number): string { + if (n === 0) return 'A'; + let s = ''; + while (n > 0) { + s = A64[n & 63] + s; + n = Math.floor(n / 64); + } + return s; +} + +interface SynEntry { + word: string; + text: string; +} + +function buildBundle( + entries: SynEntry[], + meta: { short?: string; info?: string; url?: string } = {}, +) { + // Concatenate bodies and remember offsets. + const enc = new TextEncoder(); + const bodyParts: Uint8Array[] = []; + const lines: string[] = []; + let pos = 0; + + const push = (word: string, text: string) => { + const data = enc.encode(text); + lines.push(`${word}\t${encodeDictBase64(pos)}\t${encodeDictBase64(data.length)}`); + bodyParts.push(data); + pos += data.length; + }; + + if (meta.short) push('00databaseshort', meta.short); + if (meta.info) push('00databaseinfo', meta.info); + if (meta.url) push('00databaseurl', meta.url); + push('00databaseutf8', ''); + for (const e of entries) push(e.word, e.text); + + // Concatenate body and gzip it as a (non-DictZip) gzip stream — the + // reader's whole-file gunzip fallback handles that. + const body = new Uint8Array(bodyParts.reduce((n, p) => n + p.length, 0)); + let off = 0; + for (const p of bodyParts) { + body.set(p, off); + off += p.length; + } + const dictDz = new Uint8Array(gzipSync(Buffer.from(body))); + + // .index: deliberately keep the original input order (FreeDict files in + // the wild are mostly sorted by `dictsort`, but the parser must still + // re-sort defensively before binary search). + const indexBytes = enc.encode(lines.join('\n') + '\n'); + + return { index: indexBytes, dictDz }; +} + +describe('parseDictIndex', () => { + it('handles CRLF and trailing whitespace', () => { + const text = ['hello\tA\tB', '00databaseshort\tA\tA', 'world\tB\tA', ''].join('\r\n'); + const parsed = parseDictIndex(text); + expect(parsed.words).toEqual(['hello', 'world']); + expect(parsed.meta['00databaseshort']).toEqual({ offset: 0, size: 0 }); + }); + + it('sorts entries case-insensitively', () => { + const text = ['Banana\tA\tA', 'apple\tB\tA', 'Cherry\tC\tA'].join('\n'); + const parsed = parseDictIndex(text); + expect(parsed.words).toEqual(['apple', 'Banana', 'Cherry']); + }); +}); + +describe('dictProvider — synthetic bundle', () => { + let bundleFiles: { index: Uint8Array; dictDz: Uint8Array }; + + beforeEach(() => { + bundleFiles = buildBundle( + [ + { word: 'apple', text: 'a fruit' }, + { word: 'banana', text: 'another fruit' }, + { word: 'cherry', text: 'a small red fruit' }, + ], + { short: 'Test Dict', info: 'A tiny test dictionary.' }, + ); + }); + + const buildDict = (): ImportedDictionary => ({ + id: 'dict:test', + kind: 'dict', + name: 'Test Dict', + bundleDir: 'test-bundle', + files: { index: 'test.index', dict: 'test.dict.dz' }, + addedAt: 1, + }); + + const makeFs = (files = bundleFiles) => ({ + openFile: async (path: string, _base: BaseDir) => { + const base = path.split('/').pop()!; + let bytes: Uint8Array; + if (base === 'test.index') bytes = files.index; + else if (base === 'test.dict.dz') bytes = files.dictDz; + else throw new Error(`Unknown fixture file: ${base}`); + const buf = new Uint8Array(bytes.length); + buf.set(bytes); + return new File([buf], base); + }, + }); + + it('initializes lazily and looks up a headword', async () => { + const provider = createDictProvider({ dict: buildDict(), fs: makeFs() }); + const container = document.createElement('div'); + const outcome = await provider.lookup('banana', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(true); + if (outcome.ok) { + expect(outcome.headword).toBe('banana'); + expect(outcome.sourceLabel).toBe('Test Dict'); + } + expect(container.querySelector('h1')?.textContent).toBe('banana'); + expect(container.querySelector('pre')?.textContent).toBe('another fruit'); + }); + + it('case-insensitive lookup', async () => { + const provider = createDictProvider({ dict: buildDict(), fs: makeFs() }); + const container = document.createElement('div'); + const outcome = await provider.lookup('APPLE', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(true); + if (outcome.ok) expect(outcome.headword).toBe('apple'); + }); + + it('returns empty when the headword does not exist', async () => { + const provider = createDictProvider({ dict: buildDict(), fs: makeFs() }); + const container = document.createElement('div'); + const outcome = await provider.lookup('zzzz', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(false); + if (!outcome.ok) expect(outcome.reason).toBe('empty'); + }); + + it('reports `error` on init failure', async () => { + const failingFs = { + openFile: async () => { + throw new Error('disk gone'); + }, + }; + const provider = createDictProvider({ dict: buildDict(), fs: failingFs }); + const container = document.createElement('div'); + const outcome = await provider.lookup('apple', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(false); + if (!outcome.ok) { + expect(outcome.reason).toBe('error'); + expect(outcome.message).toContain('disk gone'); + } + }); + + it('shares the parsed instance across lookups', async () => { + const fs = makeFs(); + let openCount = 0; + const wrappedFs = { + openFile: async (path: string, base: BaseDir) => { + openCount += 1; + return fs.openFile(path, base); + }, + }; + const provider = createDictProvider({ dict: buildDict(), fs: wrappedFs }); + const container = document.createElement('div'); + await provider.lookup('apple', { signal: new AbortController().signal, container }); + const opensAfterFirst = openCount; + container.replaceChildren(); + await provider.lookup('banana', { signal: new AbortController().signal, container }); + expect(openCount).toBe(opensAfterFirst); + }); +}); + +// --------------------------------------------------------------------------- +// Real-fixture tests — the FreeDict English-Dutch bundle. +// --------------------------------------------------------------------------- + +describe('dictProvider — real freedict-eng-nld fixture', () => { + const realDict: ImportedDictionary = { + id: 'dict:freedict-eng-nld', + kind: 'dict', + name: 'FreeDict eng-nld', + bundleDir: 'freedict-eng-nld-bundle', + files: { index: INDEX_FIXTURE_NAME, dict: DICT_FIXTURE_NAME }, + addedAt: 1, + }; + + const makeRealFs = () => ({ + openFile: async (p: string, _base: BaseDir) => { + const base = p.split('/').pop()!; + if (base === INDEX_FIXTURE_NAME) return readIndexFile(); + if (base === DICT_FIXTURE_NAME) return readDictFile(); + throw new Error(`Unknown fixture file: ${base}`); + }, + }); + + it('looks up a real headword and renders a definition', async () => { + const provider = createDictProvider({ dict: realDict, fs: makeRealFs() }); + const container = document.createElement('div'); + const outcome = await provider.lookup('hello', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(true); + if (outcome.ok) { + expect(outcome.headword).toBe('hello'); + // 00databaseshort exists in this fixture and is used as the source label. + expect(outcome.sourceLabel).toBeTruthy(); + } + expect(container.querySelector('h1')?.textContent).toBe('hello'); + const def = container.querySelector('pre')?.textContent ?? ''; + expect(def.length).toBeGreaterThan(0); + }); + + it('finds several common headwords', async () => { + const provider = createDictProvider({ dict: realDict, fs: makeRealFs() }); + for (const word of ['hello', 'world', 'reveal']) { + const container = document.createElement('div'); + const outcome = await provider.lookup(word, { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(true); + if (outcome.ok) expect(outcome.headword).toBe(word); + expect(container.querySelector('pre')?.textContent?.length ?? 0).toBeGreaterThan(0); + } + }); + + it('returns empty for non-existent words', async () => { + const provider = createDictProvider({ dict: realDict, fs: makeRealFs() }); + const container = document.createElement('div'); + const outcome = await provider.lookup('zzznonsenseword', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(false); + if (!outcome.ok) expect(outcome.reason).toBe('empty'); + }); + + it('caches the reader instance — second lookup opens no extra files', async () => { + const realFs = makeRealFs(); + let opens = 0; + const wrappedFs = { + openFile: async (p: string, base: BaseDir) => { + opens += 1; + return realFs.openFile(p, base); + }, + }; + const provider = createDictProvider({ dict: realDict, fs: wrappedFs }); + const c1 = document.createElement('div'); + await provider.lookup('hello', { signal: new AbortController().signal, container: c1 }); + const opensAfterInit = opens; + expect(opensAfterInit).toBe(2); // .index, .dict.dz + const c2 = document.createElement('div'); + await provider.lookup('world', { signal: new AbortController().signal, container: c2 }); + expect(opens).toBe(opensAfterInit); + }); + + // ------------------------------------------------------------------------- + // Per-lookup .dict.dz reads should be small (lazy chunk decompression). + // ------------------------------------------------------------------------- + it('per-lookup .dict.dz reads are bounded by the chunk size', async () => { + const counter = makeReadCounter(); + const fs = withReadCounting(makeRealFs(), counter); + const provider = createDictProvider({ dict: realDict, fs }); + + // Prime init. + await provider.lookup('hello', { + signal: new AbortController().signal, + container: document.createElement('div'), + }); + + let dictLast = counter.perFile.get(DICT_FIXTURE_NAME) ?? 0; + for (const word of ['world', 'reveal', 'vital']) { + await provider.lookup(word, { + signal: new AbortController().signal, + container: document.createElement('div'), + }); + const dictNow = counter.perFile.get(DICT_FIXTURE_NAME) ?? 0; + const delta = dictNow - dictLast; + // The freedict bundle's dictzip chunks are ~8 KB compressed; bound + // generously at 64 KB to absorb format variance. + expect(delta).toBeLessThanOrEqual(64 * 1024); + dictLast = dictNow; + } + }); +}); diff --git a/apps/readest-app/src/__tests__/services/dictionaries/registry.test.ts b/apps/readest-app/src/__tests__/services/dictionaries/registry.test.ts index 43513c2d..7c89f1ef 100644 --- a/apps/readest-app/src/__tests__/services/dictionaries/registry.test.ts +++ b/apps/readest-app/src/__tests__/services/dictionaries/registry.test.ts @@ -1,7 +1,11 @@ import { describe, it, expect, beforeEach } from 'vitest'; import { getEnabledProviders, __resetRegistryForTests } from '@/services/dictionaries/registry'; -import { BUILTIN_PROVIDER_IDS } from '@/services/dictionaries/types'; -import type { DictionarySettings, ImportedDictionary } from '@/services/dictionaries/types'; +import { BUILTIN_PROVIDER_IDS, BUILTIN_WEB_SEARCH_IDS } from '@/services/dictionaries/types'; +import type { + DictionarySettings, + ImportedDictionary, + WebSearchEntry, +} from '@/services/dictionaries/types'; const baseSettings: DictionarySettings = { providerOrder: [BUILTIN_PROVIDER_IDS.wiktionary, BUILTIN_PROVIDER_IDS.wikipedia], @@ -58,6 +62,56 @@ describe('dictionary registry', () => { expect(a[0]).toBe(b[0]); }); + it('dispatches built-in web-search ids to a web provider', () => { + const settings: DictionarySettings = { + providerOrder: [BUILTIN_WEB_SEARCH_IDS.google, BUILTIN_WEB_SEARCH_IDS.urban], + providerEnabled: { + [BUILTIN_WEB_SEARCH_IDS.google]: true, + [BUILTIN_WEB_SEARCH_IDS.urban]: true, + }, + }; + const providers = getEnabledProviders({ settings, dictionaries: [] }); + expect(providers.map((p) => p.id)).toEqual([ + BUILTIN_WEB_SEARCH_IDS.google, + BUILTIN_WEB_SEARCH_IDS.urban, + ]); + expect(providers.every((p) => p.kind === 'web')).toBe(true); + }); + + it('resolves custom web-search ids from settings.webSearches', () => { + const customEntry: WebSearchEntry = { + id: 'web:custom123', + name: 'My Site', + urlTemplate: 'https://example.com/?q=%WORD%', + }; + const settings: DictionarySettings = { + providerOrder: ['web:custom123'], + providerEnabled: { 'web:custom123': true }, + webSearches: [customEntry], + }; + const providers = getEnabledProviders({ settings, dictionaries: [] }); + expect(providers).toHaveLength(1); + expect(providers[0]!.label).toBe('My Site'); + expect(providers[0]!.kind).toBe('web'); + }); + + it('drops custom web-search ids whose entries are missing or soft-deleted', () => { + const settings: DictionarySettings = { + providerOrder: ['web:gone', 'web:dead'], + providerEnabled: { 'web:gone': true, 'web:dead': true }, + webSearches: [ + { + id: 'web:dead', + name: 'Dead', + urlTemplate: 'https://example.com/?q=%WORD%', + deletedAt: 1, + }, + ], + }; + const providers = getEnabledProviders({ settings, dictionaries: [] }); + expect(providers).toEqual([]); + }); + it('skips imported dictionaries that are unavailable, deleted, or unsupported', () => { const fs = { openFile: async () => new File([], '') }; const dicts: ImportedDictionary[] = [ diff --git a/apps/readest-app/src/__tests__/services/dictionaries/slobProvider.test.ts b/apps/readest-app/src/__tests__/services/dictionaries/slobProvider.test.ts new file mode 100644 index 00000000..ee108356 --- /dev/null +++ b/apps/readest-app/src/__tests__/services/dictionaries/slobProvider.test.ts @@ -0,0 +1,186 @@ +import { describe, it, expect } from 'vitest'; + +import { createSlobProvider } from '@/services/dictionaries/providers/slobProvider'; +import { SlobReader, cleanTag } from '@/services/dictionaries/slobReader'; +import type { ImportedDictionary } from '@/services/dictionaries/types'; +import type { BaseDir } from '@/types/system'; + +import { SLOB_FIXTURE_NAME, readSlobFile } from './_slobFixtures'; +import { makeReadCounter, withReadCounting } from './_countingFs'; + +// --------------------------------------------------------------------------- +// Real-fixture tests — the FreeDict English-Dutch slob (zlib-compressed). +// --------------------------------------------------------------------------- + +describe('slobReader — real eng-nld.slob fixture', () => { + it('parses the header and exposes metadata', async () => { + const file = await readSlobFile(); + const reader = new SlobReader(); + await reader.load({ slob: file }); + expect(reader.header.encoding).toBe('utf-8'); + expect(reader.header.compression).toBe('zlib'); + // FreeDict bundles ship 7,717 refs (3 resource refs + 7,714 headwords). + expect(reader.refCount).toBe(7717); + expect(reader.header.contentTypes).toContain('text/html;charset=utf-8'); + expect(reader.header.contentTypes).toContain('text/css'); + expect(cleanTag(reader.header.tags['label'] ?? '')).toBe('English-Dutch FreeDict Dictionary'); + }); + + it('finds a known headword case-insensitively', async () => { + const file = await readSlobFile(); + const reader = new SlobReader(); + await reader.load({ slob: file }); + const ref = await reader.findRef('hello'); + expect(ref).toBeDefined(); + if (ref) { + expect(ref.key).toBe('hello'); + expect(ref.binIndex).toBeGreaterThanOrEqual(0); + } + const refUpper = await reader.findRef('HELLO'); + expect(refUpper?.key).toBe('hello'); + }); + + it('decompresses a bin and reads the html blob', async () => { + const file = await readSlobFile(); + const reader = new SlobReader(); + await reader.load({ slob: file }); + const ref = await reader.findRef('hello'); + expect(ref).toBeDefined(); + if (!ref) return; + const blob = await reader.readBlob(ref); + expect(blob.contentType.startsWith('text/html')).toBe(true); + const html = new TextDecoder('utf-8').decode(blob.data); + expect(html.length).toBeGreaterThan(0); + // FreeDict slob entries are wrapped in HTML; just sanity-check there's tags. + expect(html).toMatch(/<\/?\w+/); + }); + + it('returns undefined for non-existent words', async () => { + const file = await readSlobFile(); + const reader = new SlobReader(); + await reader.load({ slob: file }); + expect(await reader.findRef('zzznonsenseword')).toBeUndefined(); + }); +}); + +describe('slobReader — error handling', () => { + it('rejects a wrong-magic file', async () => { + const file = new File([new Uint8Array([0xde, 0xad, 0xbe, 0xef, 0, 0, 0, 0])], 'bad.slob'); + const reader = new SlobReader(); + await expect(reader.load({ slob: file })).rejects.toThrow(/bad magic/); + }); +}); + +// --------------------------------------------------------------------------- +// Provider-level tests — full popup flow. +// --------------------------------------------------------------------------- + +describe('slobProvider — real eng-nld.slob fixture', () => { + const realDict: ImportedDictionary = { + id: 'slob:eng-nld', + kind: 'slob', + name: 'English-Dutch FreeDict Dictionary', + bundleDir: 'eng-nld-slob-bundle', + files: { slob: SLOB_FIXTURE_NAME }, + addedAt: 1, + }; + + const makeRealFs = () => ({ + openFile: async (p: string, _base: BaseDir) => { + const base = p.split('/').pop()!; + if (base === SLOB_FIXTURE_NAME) return readSlobFile(); + throw new Error(`Unknown fixture file: ${base}`); + }, + }); + + it('looks up a real headword and renders HTML', async () => { + const provider = createSlobProvider({ dict: realDict, fs: makeRealFs() }); + const container = document.createElement('div'); + const outcome = await provider.lookup('hello', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(true); + if (outcome.ok) { + expect(outcome.headword).toBe('hello'); + expect(outcome.sourceLabel).toBe('English-Dutch FreeDict Dictionary'); + } + expect(container.querySelector('h1')?.textContent).toBe('hello'); + // Body div must contain at least one element (the HTML body of the entry). + const body = container.querySelector('div'); + expect(body).toBeTruthy(); + expect((body?.innerHTML ?? '').length).toBeGreaterThan(0); + }); + + it('returns empty for missing headwords', async () => { + const provider = createSlobProvider({ dict: realDict, fs: makeRealFs() }); + const container = document.createElement('div'); + const outcome = await provider.lookup('zzznotaword', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(false); + if (!outcome.ok) expect(outcome.reason).toBe('empty'); + }); + + it('hides bundled resource keys (~/...)', async () => { + const provider = createSlobProvider({ dict: realDict, fs: makeRealFs() }); + const container = document.createElement('div'); + const outcome = await provider.lookup('~/css/default.css', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(false); + if (!outcome.ok) expect(outcome.reason).toBe('empty'); + }); + + it('caches the reader — second lookup opens no extra files', async () => { + const realFs = makeRealFs(); + let opens = 0; + const wrappedFs = { + openFile: async (p: string, base: BaseDir) => { + opens += 1; + return realFs.openFile(p, base); + }, + }; + const provider = createSlobProvider({ dict: realDict, fs: wrappedFs }); + await provider.lookup('hello', { + signal: new AbortController().signal, + container: document.createElement('div'), + }); + const opensAfterInit = opens; + expect(opensAfterInit).toBe(1); + await provider.lookup('world', { + signal: new AbortController().signal, + container: document.createElement('div'), + }); + expect(opens).toBe(opensAfterInit); + }); + + it('per-lookup reads are bounded (lazy bin decompression)', async () => { + const counter = makeReadCounter(); + const fs = withReadCounting(makeRealFs(), counter); + const provider = createSlobProvider({ dict: realDict, fs }); + + // Prime init + one lookup. + await provider.lookup('hello', { + signal: new AbortController().signal, + container: document.createElement('div'), + }); + + const sizes: number[] = []; + let last = counter.perFile.get(SLOB_FIXTURE_NAME) ?? 0; + for (const word of ['world', 'cat', 'apple', 'about']) { + await provider.lookup(word, { + signal: new AbortController().signal, + container: document.createElement('div'), + }); + const now = counter.perFile.get(SLOB_FIXTURE_NAME) ?? 0; + sizes.push(now - last); + last = now; + } + // Each subsequent lookup should be tiny — log2(7717)≈13 ref probes, + // each ≤4 KB, plus at most one new bin decompression. Bound at 256 KB. + for (const delta of sizes) expect(delta).toBeLessThanOrEqual(256 * 1024); + }); +}); diff --git a/apps/readest-app/src/__tests__/services/dictionaries/webSearchProvider.test.ts b/apps/readest-app/src/__tests__/services/dictionaries/webSearchProvider.test.ts new file mode 100644 index 00000000..22da8298 --- /dev/null +++ b/apps/readest-app/src/__tests__/services/dictionaries/webSearchProvider.test.ts @@ -0,0 +1,145 @@ +import { describe, it, expect } from 'vitest'; + +import { createWebSearchProvider } from '@/services/dictionaries/providers/webSearchProvider'; +import { + BUILTIN_WEB_SEARCHES, + getBuiltinWebSearch, + isValidUrlTemplate, + substituteUrlTemplate, +} from '@/services/dictionaries/webSearchTemplates'; +import type { WebSearchEntry } from '@/services/dictionaries/types'; + +describe('substituteUrlTemplate', () => { + it('replaces %WORD% (case-insensitive) with the URL-encoded word', () => { + expect(substituteUrlTemplate('https://x.com/?q=%WORD%', 'hello')).toBe( + 'https://x.com/?q=hello', + ); + expect(substituteUrlTemplate('https://x.com/?q=%word%', 'hello')).toBe( + 'https://x.com/?q=hello', + ); + }); + + it('URL-encodes spaces and special characters', () => { + expect(substituteUrlTemplate('https://x.com/?q=%WORD%', 'hello world')).toBe( + 'https://x.com/?q=hello%20world', + ); + expect(substituteUrlTemplate('https://x.com/?q=%WORD%', 'a&b?c')).toBe( + 'https://x.com/?q=a%26b%3Fc', + ); + }); + + it('handles double-encoded %25WORD%25', () => { + expect(substituteUrlTemplate('https://x.com/?q=%25WORD%25', 'hi')).toBe('https://x.com/?q=hi'); + }); + + it('replaces every occurrence', () => { + expect(substituteUrlTemplate('a/%WORD%/b/%WORD%', 'X')).toBe('a/X/b/X'); + }); +}); + +describe('isValidUrlTemplate', () => { + it('requires http(s):// + a placeholder', () => { + expect(isValidUrlTemplate('https://x.com/?q=%WORD%')).toBe(true); + expect(isValidUrlTemplate(' http://x.com/?q=%WORD% ')).toBe(true); + expect(isValidUrlTemplate('https://x.com/?q=%25WORD%25')).toBe(true); + }); + + it('rejects missing scheme or placeholder', () => { + expect(isValidUrlTemplate('https://x.com/?q=hi')).toBe(false); + expect(isValidUrlTemplate('//x.com/?q=%WORD%')).toBe(false); + expect(isValidUrlTemplate('ftp://x.com/?q=%WORD%')).toBe(false); + expect(isValidUrlTemplate('')).toBe(false); + }); +}); + +describe('getBuiltinWebSearch', () => { + it('returns each of the three built-ins by id', () => { + for (const tpl of BUILTIN_WEB_SEARCHES) { + const found = getBuiltinWebSearch(tpl.id); + expect(found).toBeDefined(); + expect(found?.urlTemplate).toContain('%WORD%'); + } + }); + + it('returns undefined for unknown ids', () => { + expect(getBuiltinWebSearch('web:builtin:nope')).toBeUndefined(); + expect(getBuiltinWebSearch('web:custom:abc')).toBeUndefined(); + }); +}); + +describe('webSearchProvider', () => { + const customEntry: WebSearchEntry = { + id: 'web:abc123', + name: 'Custom Site', + urlTemplate: 'https://example.com/?q=%WORD%', + }; + + it('renders headword + sub-label + open button + URL preview', async () => { + const provider = createWebSearchProvider({ template: customEntry }); + const container = document.createElement('div'); + const outcome = await provider.lookup('hello world', { + signal: new AbortController().signal, + container, + }); + expect(outcome.ok).toBe(true); + if (outcome.ok) { + expect(outcome.headword).toBe('hello world'); + expect(outcome.sourceLabel).toBe('Custom Site'); + } + expect(container.querySelector('h1')?.textContent).toBe('hello world'); + const link = container.querySelector('a'); + expect(link).toBeTruthy(); + expect(link?.getAttribute('href')).toBe('https://example.com/?q=hello%20world'); + expect(link?.getAttribute('rel')).toBe('noopener noreferrer'); + // URL preview rendered for transparency. + expect(container.textContent).toContain('https://example.com/?q=hello%20world'); + }); + + it('returns empty for a blank word', async () => { + const provider = createWebSearchProvider({ template: customEntry }); + const outcome = await provider.lookup(' ', { + signal: new AbortController().signal, + container: document.createElement('div'), + }); + expect(outcome.ok).toBe(false); + if (!outcome.ok) expect(outcome.reason).toBe('empty'); + }); + + it('respects abort signals', async () => { + const provider = createWebSearchProvider({ template: customEntry }); + const ac = new AbortController(); + ac.abort(); + const outcome = await provider.lookup('hello', { + signal: ac.signal, + container: document.createElement('div'), + }); + expect(outcome.ok).toBe(false); + if (!outcome.ok) expect(outcome.reason).toBe('error'); + }); + + it('uses a label override when provided', () => { + const provider = createWebSearchProvider({ + template: customEntry, + label: 'Override', + }); + expect(provider.label).toBe('Override'); + expect(provider.kind).toBe('web'); + }); + + it('opens each built-in URL with the headword substituted', async () => { + for (const tpl of BUILTIN_WEB_SEARCHES) { + const provider = createWebSearchProvider({ template: tpl }); + const container = document.createElement('div'); + await provider.lookup('hello', { + signal: new AbortController().signal, + container, + }); + const link = container.querySelector('a'); + expect(link).toBeTruthy(); + const href = link?.getAttribute('href') ?? ''; + expect(href).toContain('hello'); + expect(href.startsWith('https://')).toBe(true); + expect(href).not.toContain('%WORD%'); + } + }); +}); diff --git a/apps/readest-app/src/__tests__/store/custom-dictionary-store.test.ts b/apps/readest-app/src/__tests__/store/custom-dictionary-store.test.ts new file mode 100644 index 00000000..d6c05029 --- /dev/null +++ b/apps/readest-app/src/__tests__/store/custom-dictionary-store.test.ts @@ -0,0 +1,97 @@ +import { describe, it, expect, beforeEach } from 'vitest'; +import { useCustomDictionaryStore } from '@/store/customDictionaryStore'; +import { BUILTIN_WEB_SEARCH_IDS } from '@/services/dictionaries/types'; + +const ZERO = (s: string) => s.startsWith('web:builtin:'); + +describe('customDictionaryStore — web search CRUD', () => { + beforeEach(() => { + // Reset state to defaults so tests don't bleed. + useCustomDictionaryStore.setState({ + dictionaries: [], + settings: { + providerOrder: [ + BUILTIN_WEB_SEARCH_IDS.google, + BUILTIN_WEB_SEARCH_IDS.urban, + BUILTIN_WEB_SEARCH_IDS.merriamWebster, + ], + providerEnabled: { + [BUILTIN_WEB_SEARCH_IDS.google]: false, + [BUILTIN_WEB_SEARCH_IDS.urban]: false, + [BUILTIN_WEB_SEARCH_IDS.merriamWebster]: false, + }, + webSearches: [], + }, + }); + }); + + it('seeds the three built-in web ids in default order, all disabled', () => { + const { settings } = useCustomDictionaryStore.getState(); + const builtinWeb = settings.providerOrder.filter(ZERO); + expect(builtinWeb).toEqual([ + BUILTIN_WEB_SEARCH_IDS.google, + BUILTIN_WEB_SEARCH_IDS.urban, + BUILTIN_WEB_SEARCH_IDS.merriamWebster, + ]); + for (const id of builtinWeb) { + expect(settings.providerEnabled[id]).toBe(false); + } + }); + + it('addWebSearch appends to order, enables, returns the entry', () => { + const { addWebSearch } = useCustomDictionaryStore.getState(); + const entry = addWebSearch('My Site', 'https://example.com/?q=%WORD%'); + expect(entry.id.startsWith('web:')).toBe(true); + expect(entry.id.startsWith('web:builtin:')).toBe(false); + expect(entry.name).toBe('My Site'); + expect(entry.urlTemplate).toBe('https://example.com/?q=%WORD%'); + + const after = useCustomDictionaryStore.getState().settings; + expect(after.providerOrder.includes(entry.id)).toBe(true); + expect(after.providerEnabled[entry.id]).toBe(true); + expect((after.webSearches ?? []).map((w) => w.id)).toEqual([entry.id]); + }); + + it('addWebSearch trims whitespace from name and URL', () => { + const { addWebSearch } = useCustomDictionaryStore.getState(); + const entry = addWebSearch(' Spaced Name ', ' https://x.com/?q=%WORD% '); + expect(entry.name).toBe('Spaced Name'); + expect(entry.urlTemplate).toBe('https://x.com/?q=%WORD%'); + }); + + it('updateWebSearch updates name + URL of a custom entry', () => { + const { addWebSearch, updateWebSearch } = useCustomDictionaryStore.getState(); + const entry = addWebSearch('Old', 'https://old.com/?q=%WORD%'); + updateWebSearch(entry.id, { name: 'New', urlTemplate: 'https://new.com/?q=%WORD%' }); + const list = useCustomDictionaryStore.getState().settings.webSearches ?? []; + const updated = list.find((w) => w.id === entry.id); + expect(updated?.name).toBe('New'); + expect(updated?.urlTemplate).toBe('https://new.com/?q=%WORD%'); + }); + + it('updateWebSearch is a no-op for built-in ids', () => { + const { updateWebSearch, settings } = useCustomDictionaryStore.getState(); + updateWebSearch(BUILTIN_WEB_SEARCH_IDS.google, { name: 'Hijacked' }); + // No `webSearches` entry was added or modified. + const after = useCustomDictionaryStore.getState().settings; + expect(after.webSearches).toEqual(settings.webSearches ?? []); + }); + + it('removeWebSearch soft-deletes a custom entry and removes it from order/enabled', () => { + const { addWebSearch, removeWebSearch } = useCustomDictionaryStore.getState(); + const entry = addWebSearch('Tmp', 'https://tmp.com/?q=%WORD%'); + expect(removeWebSearch(entry.id)).toBe(true); + const after = useCustomDictionaryStore.getState().settings; + expect(after.providerOrder.includes(entry.id)).toBe(false); + expect(entry.id in after.providerEnabled).toBe(false); + const found = (after.webSearches ?? []).find((w) => w.id === entry.id); + expect(found?.deletedAt).toBeGreaterThan(0); + }); + + it('removeWebSearch refuses built-in ids', () => { + const { removeWebSearch } = useCustomDictionaryStore.getState(); + expect(removeWebSearch(BUILTIN_WEB_SEARCH_IDS.google)).toBe(false); + const after = useCustomDictionaryStore.getState().settings; + expect(after.providerOrder.includes(BUILTIN_WEB_SEARCH_IDS.google)).toBe(true); + }); +}); diff --git a/apps/readest-app/src/app/reader/components/annotator/Annotator.tsx b/apps/readest-app/src/app/reader/components/annotator/Annotator.tsx index 33d40bfb..96c15c8a 100644 --- a/apps/readest-app/src/app/reader/components/annotator/Annotator.tsx +++ b/apps/readest-app/src/app/reader/components/annotator/Annotator.tsx @@ -51,7 +51,8 @@ import ExportMarkdownDialog from './ExportMarkdownDialog'; const Annotator: React.FC<{ bookKey: string }> = ({ bookKey }) => { const _ = useTranslation(); const { envConfig, appService } = useEnv(); - const { settings } = useSettingsStore(); + const { settings, setSettingsDialogBookKey, setSettingsDialogOpen, setActiveSettingsItemId } = + useSettingsStore(); const { isDarkMode } = useThemeStore(); const { getConfig, saveConfig, getBookData, updateBooknotes } = useBookDataStore(); const { getProgress, getView, getViewsById, getViewSettings } = useReaderStore(); @@ -970,6 +971,15 @@ const Annotator: React.FC<{ bookKey: string }> = ({ bookKey }) => { popupWidth={dictPopupWidth} popupHeight={dictPopupHeight} onDismiss={handleDismissPopupAndSelection} + onManage={() => { + // Dismiss the popup so the user returns to the reader cleanly + // when they close settings; the dictionaries sub-page in the + // SettingsDialog is enough surface for managing providers. + handleDismissPopupAndSelection(); + setSettingsDialogBookKey(bookKey); + setActiveSettingsItemId('settings.language.dictionaries.manage'); + setSettingsDialogOpen(true); + }} /> )} {showDeepLPopup && trianglePosition && translatorPopupPosition && ( diff --git a/apps/readest-app/src/app/reader/components/annotator/DictionaryPopup.tsx b/apps/readest-app/src/app/reader/components/annotator/DictionaryPopup.tsx index add9f918..97e6b4ce 100644 --- a/apps/readest-app/src/app/reader/components/annotator/DictionaryPopup.tsx +++ b/apps/readest-app/src/app/reader/components/annotator/DictionaryPopup.tsx @@ -1,5 +1,5 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { MdArrowBack } from 'react-icons/md'; +import { MdArrowBack, MdSettings } from 'react-icons/md'; import clsx from 'clsx'; import { openUrl } from '@tauri-apps/plugin-opener'; @@ -22,6 +22,13 @@ interface DictionaryPopupProps { popupWidth: number; popupHeight: number; onDismiss?: () => void; + /** + * Invoked when the user clicks the bottom-right "Manage Dictionaries" + * icon. The host (Annotator) decides how to navigate — typically by + * opening the SettingsDialog and deep-linking to the dictionaries + * sub-page. + */ + onManage?: () => void; } interface TabState { @@ -45,6 +52,7 @@ const DictionaryPopup: React.FC = ({ popupWidth, popupHeight, onDismiss, + onManage, }) => { const _ = useTranslation(); const { envConfig, appService } = useEnv(); @@ -294,7 +302,11 @@ const DictionaryPopup: React.FC = ({ className='select-text' onDismiss={onDismiss} > -

+ {/* `overflow-hidden rounded-lg` clips child surfaces (the tab strip's + gray bg, the bottom footer divider, etc.) to the popup's rounded + shape — without it the tab bar's `bg-base-300/40` and `border-b` + paint into the corner area and break the rounded edge. */} +
{providers.length > 1 && (
= ({ }) )} - {sourceLabel && ( -
- {/* min-w-0 lets the truncate engage inside the flex parent — - without it the span sizes to its content and overflows. */} - Source: {sourceLabel} + {/* Footer always renders so the manage-dictionaries icon has a + consistent home at the bottom-right of every tab. The source + label fills the left side when present; otherwise the spacer + pushes the icon to the right. */} + {(sourceLabel || onManage) && ( +
+ {sourceLabel ? ( + + Source: {sourceLabel} + + ) : ( + + )} + {onManage && ( + + )}
)}
diff --git a/apps/readest-app/src/components/settings/CustomDictionaries.tsx b/apps/readest-app/src/components/settings/CustomDictionaries.tsx index f3d80e09..29cb18a0 100644 --- a/apps/readest-app/src/components/settings/CustomDictionaries.tsx +++ b/apps/readest-app/src/components/settings/CustomDictionaries.tsx @@ -27,7 +27,11 @@ import { useCustomDictionaryStore } from '@/store/customDictionaryStore'; import { eventDispatcher } from '@/utils/event'; import { evictProvider } from '@/services/dictionaries/registry'; import { BUILTIN_PROVIDER_IDS } from '@/services/dictionaries/types'; -import type { ImportedDictionary } from '@/services/dictionaries/types'; +import type { ImportedDictionary, WebSearchEntry } from '@/services/dictionaries/types'; +import { + getBuiltinWebSearch, + isValidUrlTemplate, +} from '@/services/dictionaries/webSearchTemplates'; interface CustomDictionariesProps { onBack: () => void; @@ -36,13 +40,23 @@ interface CustomDictionariesProps { interface ProviderRow { id: string; label: string; - kind: 'builtin' | 'stardict' | 'mdict'; + kind: 'builtin' | 'stardict' | 'mdict' | 'dict' | 'slob' | 'web'; badge: string; imported?: ImportedDictionary; + /** Set on `kind: 'web'` rows. The shape distinguishes deletable custom + * entries (when `builtinWeb` is false) from immutable built-ins. */ + webSearch?: WebSearchEntry; + builtinWeb?: boolean; disabled?: boolean; reason?: string; } +const builtinWebLabel = (id: string, _: (key: string) => string): string => { + const tpl = getBuiltinWebSearch(id); + if (!tpl) return id; + return _(tpl.nameKey); +}; + const builtinLabel = (id: string, _: (key: string) => string): string => { if (id === BUILTIN_PROVIDER_IDS.wiktionary) return _('Wiktionary'); if (id === BUILTIN_PROVIDER_IDS.wikipedia) return _('Wikipedia'); @@ -55,6 +69,7 @@ interface SortableRowProps { isDeleteMode: boolean; onToggle: (id: string, next: boolean) => void; onDelete: (row: ProviderRow) => void; + onEditWebSearch?: (entry: WebSearchEntry) => void; _: (key: string, options?: Record) => string; } @@ -64,6 +79,7 @@ const SortableRow: React.FC = ({ isDeleteMode, onToggle, onDelete, + onEditWebSearch, _, }) => { const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ @@ -83,8 +99,8 @@ const SortableRow: React.FC = ({ ref={setNodeRef} style={style} className={clsx( - 'flex items-center gap-2 px-3 py-2', - isDragging && 'bg-base-200 z-10 shadow-md', + 'flex items-center gap-2 px-3 py-2 transition-colors', + isDragging ? 'bg-base-200 z-10 shadow-md' : 'hover:bg-base-200/40', )} > {/* Drag handle (left). Always present so reorder works for built-ins @@ -110,7 +126,15 @@ const SortableRow: React.FC = ({ > {row.label} - {row.badge} + {row.kind === 'web' && !row.builtinWeb && row.webSearch && onEditWebSearch && ( + + )}
{row.reason && (
@@ -120,6 +144,11 @@ const SortableRow: React.FC = ({ )}
+ {/* End-aligned type badge. Sits just before the toggle so all + badges form a uniform column regardless of name length, instead + of trailing the truncated name at a ragged x position. */} + {row.badge} + = ({ aria-label={enabled ? _('Disable') : _('Enable')} /> - {/* Delete X — only for imported rows, only in delete mode. Built-ins - never show it; imported rows reserve no width when not in delete - mode so their toggle aligns with the built-ins'. */} - {row.imported && isDeleteMode && ( + {/* Delete X — for imported dictionaries and custom web searches, only + in delete mode. Built-ins (incl. built-in web searches) never show + it; deletable rows reserve no width when not in delete mode so the + toggles align across the list. */} + {(row.imported || (row.kind === 'web' && !row.builtinWeb)) && isDeleteMode && (
- {hasImported && ( + {hasDeletable && ( + -
+
{rows.length === 0 && (
@@ -368,6 +486,7 @@ const CustomDictionaries: React.FC = ({ onBack }) => { isDeleteMode={isDeleteMode} onToggle={handleToggle} onDelete={handleDelete} + onEditWebSearch={openEditWebSearch} _={_} /> ))} @@ -376,17 +495,76 @@ const CustomDictionaries: React.FC = ({ onBack }) => {
-
-
-
{_('Tips')}:
-
    -
  • {_('Drag the handle on the left to reorder.')}
  • +
    +
    +
    + + {_('Tips')} +
    +
    • {_('StarDict bundles need .ifo, .idx, and .dict.dz files (.syn optional).')}
    • {_('MDict bundles use .mdx files; companion .mdd files are optional.')}
    • +
    • {_('DICT bundles need a .index file and a .dict.dz file.')}
    • +
    • {_('Slob bundles need a .slob file.')}
    • {_('Select all the bundle files together when importing.')}
    + + {/* Add / edit web-search modal. Lightweight inline `` (daisyUI + modal classes); the heavier `Dialog.tsx` is overkill for a 2-field + form. */} + {webModal && ( +
    +
    +

    + {webModal.editingId ? _('Edit Web Search') : _('Add Web Search')} +

    +
    + + +
    +
    + + +
    +
    + {/* Click-outside dismiss. */} +
    + )}
); }; diff --git a/apps/readest-app/src/components/settings/LangPanel.tsx b/apps/readest-app/src/components/settings/LangPanel.tsx index 757189e8..cc0411d6 100644 --- a/apps/readest-app/src/components/settings/LangPanel.tsx +++ b/apps/readest-app/src/components/settings/LangPanel.tsx @@ -25,7 +25,8 @@ const LangPanel: React.FC = ({ bookKey, onRegisterReset const _ = useTranslation(); const { token } = useAuth(); const { envConfig } = useEnv(); - const { settings, applyUILanguage } = useSettingsStore(); + const { settings, applyUILanguage, activeSettingsItemId, setActiveSettingsItemId } = + useSettingsStore(); const { getView, getViewSettings, setViewSettings, recreateViewer } = useReaderStore(); const view = getView(bookKey); const viewSettings = getViewSettings(bookKey) || settings.globalViewSettings; @@ -44,6 +45,18 @@ const LangPanel: React.FC = ({ bookKey, onRegisterReset ); const [showCustomDictionaries, setShowCustomDictionaries] = useState(false); + // Deep-link: callers (e.g. the dictionary popup's manage icon) can set + // activeSettingsItemId to `'settings.language.dictionaries.manage'` to + // jump straight into the Manage Dictionaries sub-page on open. Clear the + // id once consumed so SettingsDialog's scroll-to-element fallback + // (which runs on a 100ms timeout) doesn't re-fire. + useEffect(() => { + if (activeSettingsItemId === 'settings.language.dictionaries.manage') { + setShowCustomDictionaries(true); + setActiveSettingsItemId(null); + } + }, [activeSettingsItemId, setActiveSettingsItemId]); + const resetToDefaults = useResetViewSettings(); const handleReset = () => { diff --git a/apps/readest-app/src/hooks/useFileSelector.ts b/apps/readest-app/src/hooks/useFileSelector.ts index dd77a8e1..0f6332e0 100644 --- a/apps/readest-app/src/hooks/useFileSelector.ts +++ b/apps/readest-app/src/hooks/useFileSelector.ts @@ -140,8 +140,8 @@ export const FILE_SELECTION_PRESETS = { dialogTitle: _('Select Fonts'), }, dictionaries: { - accept: '.mdx, .mdd, .ifo, .idx, .dict, .dz, .syn', - extensions: ['mdx', 'mdd', 'ifo', 'idx', 'dict', 'dz', 'syn'], + accept: '.mdx, .mdd, .ifo, .idx, .dict, .dz, .syn, .index, .slob', + extensions: ['mdx', 'mdd', 'ifo', 'idx', 'dict', 'dz', 'syn', 'index', 'slob'], dialogTitle: _('Select Dictionary Files'), }, covers: { diff --git a/apps/readest-app/src/services/dictionaries/dictReader.ts b/apps/readest-app/src/services/dictionaries/dictReader.ts new file mode 100644 index 00000000..47354b17 --- /dev/null +++ b/apps/readest-app/src/services/dictionaries/dictReader.ts @@ -0,0 +1,261 @@ +/** + * DICT (dictd) reader. Reference: RFC 2229 § 3.1 (dictzip body), the + * `dictd` source `dictd.h`/`index.c` for the `.index` grammar. + * + * A DICT bundle is two files sharing a stem: + * - `name.index` : plain ASCII, one entry per line: + * `headword\tbase64(offset)\tbase64(length)`. + * The offsets are big-endian 6-bit groups encoded with + * the alphabet `[A-Za-z0-9+/]` — *not* standard base64 + * (no padding, variable-length). + * - `name.dict` : raw or `.dict.dz` dictzip-compressed body. Random- + * access reads at the offsets from the index. + * + * Index entries with words starting `00database` are reserved metadata: + * + * 00databasealphabet : 8.dictsort alphabet + * 00databasedictfmt1121 : format marker + * 00databaseinfo : long-form description + * 00databaseshort : one-line label + * 00databaseurl : source URL + * 00databaseutf8 : present iff bodies are UTF-8 + * + * The reader exposes: + * - `info`: parsed metadata including the human-readable label. + * - `entryCount`: number of non-metadata entries. + * - `lookup(word)`: case-insensitive exact match → `Uint8Array` body. + * - `read(entry)`: random-access read of the dict body. + * + * Like `StarDictReader`, it does index parsing once at init, then per- + * lookup it does a binary search over an `Int32Array` of line offsets and + * reads ~one line plus one chunk from the dict body. + */ +import { LRU, loadDictBody, type DictBody } from './dictZip'; + +const decoder = new TextDecoder('utf-8'); + +export interface DictEntry { + word: string; + offset: number; + size: number; +} + +/** RFC 2229 base64-like alphabet (A-Za-z0-9+/), big-endian 6-bit groups. */ +const B64: Int8Array = (() => { + const t = new Int8Array(256).fill(-1); + const set = (s: string, base: number) => { + for (let i = 0; i < s.length; i++) t[s.charCodeAt(i)] = base + i; + }; + set('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 0); + set('abcdefghijklmnopqrstuvwxyz', 26); + set('0123456789', 52); + t['+'.charCodeAt(0)] = 62; + t['/'.charCodeAt(0)] = 63; + return t; +})(); + +/** Decode a DICT base64 token (no padding, variable length) into a number. */ +export function decodeDictBase64(s: string): number { + let n = 0; + for (let i = 0; i < s.length; i++) { + const v = B64[s.charCodeAt(i)]!; + if (v < 0) throw new Error(`Invalid DICT base64 character at ${i}: ${s[i]}`); + n = n * 64 + v; + } + return n; +} + +export interface DictInfo { + /** Human-readable label, derived from `00databaseshort` if present. */ + label?: string; + /** Long-form description from `00databaseinfo`. */ + description?: string; + /** Source URL from `00databaseurl`. */ + url?: string; + /** dictd alphabet hint from `00databasealphabet`. Rarely useful. */ + alphabet?: string; + /** True iff the dict is UTF-8 (presence of `00databaseutf8`). */ + utf8: boolean; +} + +const cmpAscii = (a: string, b: string): number => { + const x = a.toLowerCase(); + const y = b.toLowerCase(); + return x < y ? -1 : x > y ? 1 : 0; +}; + +/** + * Parse a `.index` text into: + * - `entries`: `Int32Array` of `[offset, size]` pairs (2 ints per entry). + * - `words`: `string[]` aligned with `entries`, headwords lowercased so + * binary search is straightforward. + * - `meta`: a record of `00database*` headwords → body slice (offset,size) + * so callers can read out the description / short label after the body + * is open. + */ +export interface ParsedDictIndex { + /** Sorted (case-insensitive) headwords (original case preserved). */ + words: string[]; + /** Per-entry [offset, size] pairs, two ints per entry. */ + entries: Int32Array; + /** `00database*` metadata entries by name, holding their body slice. */ + meta: Record; +} + +export function parseDictIndex(text: string): ParsedDictIndex { + const words: string[] = []; + const offsets: number[] = []; + const sizes: number[] = []; + const meta: Record = {}; + + let line = 0; + let pos = 0; + while (pos < text.length) { + let nl = text.indexOf('\n', pos); + if (nl < 0) nl = text.length; + const ln = + text.charCodeAt(nl - 1) === 13 /* \r */ ? text.slice(pos, nl - 1) : text.slice(pos, nl); + pos = nl + 1; + if (!ln) continue; + line++; + + const tab1 = ln.indexOf('\t'); + if (tab1 < 0) continue; + const tab2 = ln.indexOf('\t', tab1 + 1); + if (tab2 < 0) continue; + const word = ln.slice(0, tab1); + const offTok = ln.slice(tab1 + 1, tab2); + const sizeTok = ln.slice(tab2 + 1).trim(); + let off: number; + let size: number; + try { + off = decodeDictBase64(offTok); + size = decodeDictBase64(sizeTok); + } catch { + continue; + } + + if (word.startsWith('00database')) { + meta[word] = { offset: off, size }; + continue; + } + words.push(word); + offsets.push(off); + sizes.push(size); + } + + // The dictd convention is that .index is sorted by `dictsort` (mostly + // case-insensitive ASCII). We re-sort here defensively so binary search + // is correct regardless of the producer. + const order = words.map((_, i) => i).sort((a, b) => cmpAscii(words[a]!, words[b]!)); + const sortedWords: string[] = new Array(words.length); + const sortedEntries = new Int32Array(words.length * 2); + for (let i = 0; i < order.length; i++) { + const k = order[i]!; + sortedWords[i] = words[k]!; + sortedEntries[i * 2] = offsets[k]!; + sortedEntries[i * 2 + 1] = sizes[k]!; + } + + void line; + return { words: sortedWords, entries: sortedEntries, meta }; +} + +export interface DictReaderOpts { + index: Blob; + /** Either `.dict.dz` (gzip) or a raw `.dict` (no compression). */ + dict: Blob; + /** LRU cache size for decoded bodies. Defaults to 256. */ + cacheSize?: number; +} + +export class DictReader { + info: DictInfo = { utf8: false }; + private words: string[] = []; + private entries: Int32Array = new Int32Array(0); + private body: DictBody | null = null; + private bodyCache: LRU; + + constructor(cacheSize = 256) { + this.bodyCache = new LRU(cacheSize); + } + + async load(opts: DictReaderOpts): Promise { + if (opts.cacheSize !== undefined) { + this.bodyCache = new LRU(opts.cacheSize); + } + const cacheSize = opts.cacheSize ?? 256; + + const indexText = await opts.index.text(); + const parsed = parseDictIndex(indexText); + this.words = parsed.words; + this.entries = parsed.entries; + + this.body = await loadDictBody(opts.dict, { + chunkCacheSize: Math.max(8, Math.floor(cacheSize / 16)), + }); + + // Resolve metadata bodies (if present) against the now-open dict. + const tryRead = async (key: string): Promise => { + const m = parsed.meta[key]; + if (!m || !this.body) return undefined; + const bytes = await this.body.read(m.offset, m.size); + return decoder.decode(bytes).trim(); + }; + const [short, longInfo, url, alphabet, utf8] = await Promise.all([ + tryRead('00databaseshort'), + tryRead('00databaseinfo'), + tryRead('00databaseurl'), + tryRead('00databasealphabet'), + tryRead('00databaseutf8'), + ]); + this.info = { + label: short, + description: longInfo, + url, + alphabet, + utf8: utf8 !== undefined, + }; + } + + get entryCount(): number { + return this.words.length; + } + + /** Random-access read of `size` bytes from the dict body at `offset`. */ + async read(entry: DictEntry): Promise { + if (!this.body) throw new Error('dict body not loaded'); + return this.body.read(entry.offset, entry.size); + } + + /** Look up a headword (case-insensitive exact match). */ + async lookup(word: string): Promise { + let lo = 0; + let hi = this.words.length - 1; + while (lo <= hi) { + const mid = (lo + hi) >>> 1; + const cmp = cmpAscii(word, this.words[mid]!); + if (cmp === 0) { + return { + word: this.words[mid]!, + offset: this.entries[mid * 2]!, + size: this.entries[mid * 2 + 1]!, + }; + } + if (cmp > 0) lo = mid + 1; + else hi = mid - 1; + } + return undefined; + } + + /** Decode one entry's body to UTF-8 text, with LRU caching by index. */ + async readText(entry: DictEntry, idx?: number): Promise { + if (idx !== undefined) { + const cached = this.bodyCache.get(idx); + if (cached) return decoder.decode(cached); + } + const bytes = await this.read(entry); + if (idx !== undefined) this.bodyCache.set(idx, bytes); + return decoder.decode(bytes); + } +} diff --git a/apps/readest-app/src/services/dictionaries/dictZip.ts b/apps/readest-app/src/services/dictionaries/dictZip.ts new file mode 100644 index 00000000..5907f965 --- /dev/null +++ b/apps/readest-app/src/services/dictionaries/dictZip.ts @@ -0,0 +1,247 @@ +/** + * DictZip reader — shared between StarDict (`.dict.dz`) and DICT (`.dict.dz`). + * + * `.dict.dz` is a standard gzip with a FEXTRA "RA" subfield listing the + * compressed length of each chunk. Each chunk's uncompressed length is + * exactly `chlen` (the last may be shorter). Chunks are separated by + * `Z_FULL_FLUSH` (BFINAL=0 + sync marker), so each chunk's deflate stream is + * non-terminating — `inflateSync` rejects them with "unexpected EOF". + * fflate's streaming `Inflate.push(bytes, false)` handles them correctly and + * emits chunk bytes via `ondata`. + * + * Both readers share the same lazy chunk decompression strategy. The + * `loadDictBody` factory probes the candidate `.dict.dz`; when chunk-mode is + * viable it returns a `DictZipChunkedDict` that decompresses on demand. When + * the FEXTRA is missing or the probe fails (or the file is plain `.dict`), + * it falls back to whole-file gunzip / passthrough into a buffer. + */ +import { gunzipSync, Inflate } from 'fflate'; + +const GZIP_MAGIC = [0x1f, 0x8b]; + +const isGzip = (bytes: Uint8Array): boolean => + bytes.length >= 2 && bytes[0] === GZIP_MAGIC[0] && bytes[1] === GZIP_MAGIC[1]; + +export interface DictZipMeta { + /** Uncompressed bytes per chunk (last may be shorter). */ + chlen: number; + /** Compressed bytes per chunk; sums to `compressedDataSize`. */ + chunkSizes: number[]; + /** Byte offset within the file where compressed chunk data begins. */ + compressedDataOffset: number; +} + +/** + * Parse the gzip header + FEXTRA RA subfield. Returns `null` for non-gzip + * files or gzip files without an RA subfield (those need whole-file gunzip). + */ +export function parseDictZipHeader(bytes: Uint8Array): DictZipMeta | null { + if (bytes.length < 12 || bytes[0] !== 0x1f || bytes[1] !== 0x8b || bytes[2] !== 0x08) { + return null; + } + const flg = bytes[3]!; + const hasFEXTRA = (flg & 0b100) !== 0; + if (!hasFEXTRA) return null; + + const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + const xlen = view.getUint16(10, true); + let chlen = 0; + let chcnt = 0; + const chunkSizes: number[] = []; + + let p = 12; + while (p + 4 <= 12 + xlen) { + const si1 = bytes[p]!; + const si2 = bytes[p + 1]!; + const slen = view.getUint16(p + 2, true); + if (si1 === 0x52 && si2 === 0x41) { + // RA subfield: ver(2) + chlen(2) + chcnt(2) + chcnt × chunkSize(2). + const ver = view.getUint16(p + 4, true); + if (ver !== 1) return null; + chlen = view.getUint16(p + 6, true); + chcnt = view.getUint16(p + 8, true); + for (let i = 0; i < chcnt; i++) { + chunkSizes.push(view.getUint16(p + 10 + 2 * i, true)); + } + } + p += 4 + slen; + } + if (chcnt === 0 || chunkSizes.length !== chcnt) return null; + + // Skip past FEXTRA + optional FNAME, FCOMMENT, FHCRC. + let offset = 12 + xlen; + if (flg & 0b1000) { + while (offset < bytes.length && bytes[offset] !== 0) offset++; + offset++; + } + if (flg & 0b10000) { + while (offset < bytes.length && bytes[offset] !== 0) offset++; + offset++; + } + if (flg & 0b10) offset += 2; + + return { chlen, chunkSizes, compressedDataOffset: offset }; +} + +/** + * Inflate a single DictZip chunk via fflate's streaming `Inflate`. The + * chunk's deflate stream ends at `Z_FULL_FLUSH` (BFINAL=0 — `inflateSync` + * would reject), so we push with `final=false` and capture the data emitted + * by `ondata`. Returns `null` on failure. + */ +export function inflateChunkStreaming(chunkBytes: Uint8Array): Uint8Array | null { + let result: Uint8Array | null = null; + try { + const inf = new Inflate(); + inf.ondata = (data, _final) => { + if (result === null) result = data; + }; + inf.push(chunkBytes, false); + } catch { + return null; + } + if (!result || (result as Uint8Array).length === 0) return null; + return result; +} + +/** + * Bounded LRU. Tiny enough we don't bother with a real linked-list + * implementation; reusing the Map insertion order is fine. + */ +export class LRU { + private readonly max: number; + private readonly map = new Map(); + + constructor(max: number) { + this.max = max; + } + + get(key: K): V | undefined { + const v = this.map.get(key); + if (v !== undefined) { + this.map.delete(key); + this.map.set(key, v); + } + return v; + } + + set(key: K, value: V): void { + if (this.map.has(key)) this.map.delete(key); + this.map.set(key, value); + if (this.map.size > this.max) { + const first = this.map.keys().next().value as K | undefined; + if (first !== undefined) this.map.delete(first); + } + } +} + +/** Body of a DICT-style dict file — supports random-access uncompressed reads. */ +export interface DictBody { + read(offset: number, size: number): Promise; +} + +class BufferedDictBody implements DictBody { + constructor(private readonly buf: Uint8Array) {} + async read(offset: number, size: number): Promise { + return this.buf.subarray(offset, offset + size); + } +} + +class DictZipChunkedDict implements DictBody { + private readonly chunkOffsets: number[]; + private readonly chunkCache: LRU; + + constructor( + private readonly blob: Blob, + private readonly meta: DictZipMeta, + cacheSize: number, + ) { + this.chunkCache = new LRU(cacheSize); + const offsets: number[] = []; + let acc = meta.compressedDataOffset; + for (const cs of meta.chunkSizes) { + offsets.push(acc); + acc += cs; + } + this.chunkOffsets = offsets; + } + + async read(offset: number, size: number): Promise { + const chlen = this.meta.chlen; + const startChunk = Math.floor(offset / chlen); + const endChunk = Math.floor((offset + size - 1) / chlen); + + if (startChunk === endChunk) { + const chunk = await this.getChunk(startChunk); + const local = offset - startChunk * chlen; + return chunk.subarray(local, local + size); + } + const parts: Uint8Array[] = []; + let totalLen = 0; + for (let i = startChunk; i <= endChunk; i++) { + const chunk = await this.getChunk(i); + parts.push(chunk); + totalLen += chunk.length; + } + const combined = new Uint8Array(totalLen); + let pos = 0; + for (const p of parts) { + combined.set(p, pos); + pos += p.length; + } + const local = offset - startChunk * chlen; + return combined.subarray(local, local + size); + } + + private async getChunk(i: number): Promise { + const cached = this.chunkCache.get(i); + if (cached) return cached; + const start = this.chunkOffsets[i]!; + const compressedSize = this.meta.chunkSizes[i]!; + const compressed = new Uint8Array( + await this.blob.slice(start, start + compressedSize).arrayBuffer(), + ); + const inflated = inflateChunkStreaming(compressed); + if (!inflated) throw new Error(`Failed to inflate DictZip chunk ${i}`); + this.chunkCache.set(i, inflated); + return inflated; + } +} + +async function probeChunkInflate(blob: Blob, meta: DictZipMeta): Promise { + if (meta.chunkSizes.length === 0) return false; + const cs = meta.chunkSizes[0]!; + const start = meta.compressedDataOffset; + const compressed = new Uint8Array(await blob.slice(start, start + cs).arrayBuffer()); + const inflated = inflateChunkStreaming(compressed); + return !!inflated && inflated.length > 0 && inflated.length <= meta.chlen; +} + +export interface LoadDictBodyOpts { + /** LRU size for decompressed chunks in chunk mode. Defaults to 16. */ + chunkCacheSize?: number; +} + +/** + * Open a `.dict[.dz]` body for random-access reads. Tries lazy DictZip chunk + * mode first (header probe + chunk-0 inflate); falls back to whole-file + * gunzip when the FEXTRA is missing or the probe fails. For raw `.dict`, + * returns a passthrough buffer. + */ +export async function loadDictBody(blob: Blob, opts: LoadDictBodyOpts = {}): Promise { + const cacheSize = opts.chunkCacheSize ?? 16; + // Read just the gzip header + FEXTRA region (much less than the whole + // file). 64 KB is enormously generous — even thousands of chunks fit + // in a few KB. + const headBuf = await blob.slice(0, Math.min(blob.size, 64 * 1024)).arrayBuffer(); + const head = new Uint8Array(headBuf); + if (isGzip(head)) { + const meta = parseDictZipHeader(head); + if (meta && (await probeChunkInflate(blob, meta))) { + return new DictZipChunkedDict(blob, meta, cacheSize); + } + const all = new Uint8Array(await blob.arrayBuffer()); + return new BufferedDictBody(gunzipSync(all)); + } + return new BufferedDictBody(new Uint8Array(await blob.arrayBuffer())); +} diff --git a/apps/readest-app/src/services/dictionaries/dictionaryService.ts b/apps/readest-app/src/services/dictionaries/dictionaryService.ts index 9692745d..8727109c 100644 --- a/apps/readest-app/src/services/dictionaries/dictionaryService.ts +++ b/apps/readest-app/src/services/dictionaries/dictionaryService.ts @@ -48,7 +48,20 @@ interface MDictGroup { mdd: SourceFile[]; } -type Bundle = StarDictGroup | MDictGroup; +interface DictGroup { + kind: 'dict'; + stem: string; + index: SourceFile; + dict: SourceFile; +} + +interface SlobGroup { + kind: 'slob'; + stem: string; + slob: SourceFile; +} + +type Bundle = StarDictGroup | MDictGroup | DictGroup | SlobGroup; interface GroupResult { bundles: Bundle[]; @@ -96,7 +109,11 @@ function classify(source: SelectedFile): SourceFile { * - StarDict bundle = exactly one `.ifo` + one `.idx` + one `.dict` or * `.dict.dz` (sharing a stem). `.syn` is optional. * - MDict bundle = one `.mdx` + zero or more `.mdd` (sharing a stem). - * - A stem with both StarDict markers AND `.mdx` is treated as two bundles. + * - DICT (dictd) bundle = one `.index` + one `.dict` or `.dict.dz` + * (sharing a stem). Note: `.idx` (StarDict) and `.index` (DICT) differ + * only by spelling — the StarDict branch wins when both are present. + * - Slob bundle = one `.slob` file. + * - A stem with multiple format markers is treated as multiple bundles. */ export function groupBundlesByStem(files: SelectedFile[]): GroupResult { const classified = files.map(classify); @@ -111,15 +128,21 @@ export function groupBundlesByStem(files: SelectedFile[]): GroupResult { for (const [stem, group] of byStem) { const ifo = group.find((f) => f.ext === 'ifo'); const idx = group.find((f) => f.ext === 'idx'); + const indexFile = group.find((f) => f.ext === 'index'); const dict = group.find((f) => f.ext === 'dict' || f.isDictZip); const syn = group.find((f) => f.ext === 'syn'); const mdx = group.find((f) => f.ext === 'mdx'); const mdd = group.filter((f) => f.ext === 'mdd'); + const slob = group.find((f) => f.ext === 'slob'); if (ifo && idx && dict) { bundles.push({ kind: 'stardict', stem, ifo, idx, dict, syn }); + } else if (indexFile && dict) { + bundles.push({ kind: 'dict', stem, index: indexFile, dict }); } else if (mdx) { bundles.push({ kind: 'mdict', stem, mdx, mdd }); + } else if (slob) { + bundles.push({ kind: 'slob', stem, slob }); } else { orphans.push(...group); } @@ -313,6 +336,114 @@ async function importMdictBundle(fs: FileSystem, group: MDictGroup): Promise { + const bundleDir = await createBundleDir(fs); + const indexFile = await readSource(fs, group.index.source); + const dictFile = await readSource(fs, group.dict.source); + await writeBundleFile(fs, bundleDir, group.index.name, indexFile); + await writeBundleFile(fs, bundleDir, group.dict.name, dictFile); + + // Try to read the `00databaseshort` body for a friendly bundle name. The + // index lists it; the body lives in the dict. We do this best-effort: any + // failure falls back to the stem. + let name = group.stem; + let unsupported = false; + let unsupportedReason: string | undefined; + try { + const indexText = await indexFile.text(); + // Find the "00databaseshort\t\t" line. + const m = indexText.match(/^00databaseshort\t([^\t]+)\t([^\t\r\n]+)/m); + if (m) { + const decode = (s: string): number => { + let n = 0; + const A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for (const ch of s) { + const v = A.indexOf(ch); + if (v < 0) throw new Error('bad b64'); + n = n * 64 + v; + } + return n; + }; + const off = decode(m[1]!); + const size = decode(m[2]!); + // Read the dict body. If gzipped we need the whole thing — but for + // the friendly-name read, that's still cheap (the freedict bundles + // are <300 KB compressed). + const buf = await dictFile.arrayBuffer(); + const u8 = new Uint8Array(buf); + let body: Uint8Array; + if (u8[0] === 0x1f && u8[1] === 0x8b) { + const { gunzipSync } = await import('fflate'); + body = gunzipSync(u8); + } else { + body = u8; + } + name = new TextDecoder('utf-8').decode(body.subarray(off, off + size)).trim() || group.stem; + } + } catch { + // Best-effort label; the bundle is still importable. + } + if (!(await isGzip(dictFile))) { + // Plain `.dict` is technically supported by the reader, but we keep + // v1 scope identical to StarDict for consistency. + unsupported = true; + unsupportedReason = 'Raw .dict files are not supported in v1; please use .dict.dz format.'; + } + + return { + id: bundleDir, + kind: 'dict', + name, + bundleDir, + files: { + index: group.index.name, + dict: group.dict.name, + }, + addedAt: Date.now(), + unsupported: unsupported || undefined, + unsupportedReason, + }; +} + +async function importSlobBundle(fs: FileSystem, group: SlobGroup): Promise { + const bundleDir = await createBundleDir(fs); + const slobFile = await readSource(fs, group.slob.source); + await writeBundleFile(fs, bundleDir, group.slob.name, slobFile); + + // Read header bytes to derive the friendly name + sanity-check compression. + let name = group.stem; + let unsupported = false; + let unsupportedReason: string | undefined; + try { + const { SlobReader } = await import('./slobReader'); + const reader = new SlobReader(); + await reader.load({ slob: slobFile }); + const labelTag = reader.header.tags['label']; + if (labelTag) name = labelTag.replace(/\0+$/u, '') || group.stem; + } catch (err) { + const message = (err as Error).message ?? String(err); + unsupported = true; + if (/Unsupported Slob compression/i.test(message)) { + unsupportedReason = message; + } else if (/Unsupported Slob encoding/i.test(message)) { + unsupportedReason = message; + } else { + unsupportedReason = `Failed to parse Slob header: ${message}`; + } + } + + return { + id: bundleDir, + kind: 'slob', + name, + bundleDir, + files: { slob: group.slob.name }, + addedAt: Date.now(), + unsupported: unsupported || undefined, + unsupportedReason, + }; +} + export interface ImportDictionariesResult { imported: ImportedDictionary[]; /** Filenames that didn't form a valid bundle. */ @@ -333,8 +464,12 @@ export async function importDictionaries( for (const bundle of bundles) { if (bundle.kind === 'stardict') { imported.push(await importStarDictBundle(fs, bundle)); - } else { + } else if (bundle.kind === 'mdict') { imported.push(await importMdictBundle(fs, bundle)); + } else if (bundle.kind === 'dict') { + imported.push(await importDictBundle(fs, bundle)); + } else { + imported.push(await importSlobBundle(fs, bundle)); } } return { imported, orphanFiles: orphans.map((o) => o.name) }; diff --git a/apps/readest-app/src/services/dictionaries/providers/dictProvider.ts b/apps/readest-app/src/services/dictionaries/providers/dictProvider.ts new file mode 100644 index 00000000..d687bd4f --- /dev/null +++ b/apps/readest-app/src/services/dictionaries/providers/dictProvider.ts @@ -0,0 +1,107 @@ +/** + * DICT (dictd) provider. + * + * Wraps {@link DictReader} for the popup. Renders entries as plain text + * with newlines preserved — DICT bodies are nearly always plain text per + * RFC 2229; HTML is rare and the few HTML-bearing dicts in the wild use + * `MIME` indicators outside the v1 scope. + */ +import type { DictionaryProvider, ImportedDictionary } from '../types'; +import type { DictionaryFileOpener } from './starDictProvider'; +import { DictReader } from '../dictReader'; + +const renderEntry = (container: HTMLElement, word: string, text: string): void => { + const h1 = document.createElement('h1'); + h1.textContent = word; + h1.className = 'text-lg font-bold'; + container.appendChild(h1); + + const pre = document.createElement('pre'); + pre.textContent = text; + pre.className = 'mt-2 whitespace-pre-wrap break-words text-sm font-sans'; + container.appendChild(pre); +}; + +export interface CreateDictProviderArgs { + dict: ImportedDictionary; + fs: DictionaryFileOpener; + /** Localized label override; defaults to the bundle name. */ + label?: string; +} + +export const createDictProvider = ({ + dict, + fs, + label, +}: CreateDictProviderArgs): DictionaryProvider => { + let reader: DictReader | null = null; + let initPromise: Promise | null = null; + let initError: Error | null = null; + + const initOnce = async (): Promise => { + if (reader) return reader; + if (initError) throw initError; + if (!initPromise) { + initPromise = (async () => { + if (!dict.files.index || !dict.files.dict) { + throw new Error('DICT bundle is missing required files'); + } + const [indexFile, dictFile] = await Promise.all([ + fs.openFile(`${dict.bundleDir}/${dict.files.index}`, 'Dictionaries'), + fs.openFile(`${dict.bundleDir}/${dict.files.dict}`, 'Dictionaries'), + ]); + + const r = new DictReader(); + await r.load({ index: indexFile, dict: dictFile }); + reader = r; + return r; + })().catch((err) => { + initError = err instanceof Error ? err : new Error(String(err)); + initPromise = null; + throw initError; + }); + } + return initPromise; + }; + + return { + id: dict.id, + kind: 'dict', + label: label ?? dict.name, + async lookup(word, ctx) { + let r: DictReader; + try { + r = await initOnce(); + } catch (err) { + return { + ok: false, + reason: 'error', + message: `Failed to load dictionary: ${(err as Error).message}`, + }; + } + if (ctx.signal.aborted) return { ok: false, reason: 'error', message: 'aborted' }; + + try { + const entry = await r.lookup(word); + if (ctx.signal.aborted) return { ok: false, reason: 'error', message: 'aborted' }; + if (!entry) return { ok: false, reason: 'empty' }; + + const text = await r.readText(entry); + if (ctx.signal.aborted) return { ok: false, reason: 'error', message: 'aborted' }; + if (!text) return { ok: false, reason: 'empty' }; + renderEntry(ctx.container, entry.word, text); + return { + ok: true, + headword: entry.word, + sourceLabel: r.info.label || dict.name, + }; + } catch (err) { + return { + ok: false, + reason: 'error', + message: (err as Error).message, + }; + } + }, + }; +}; diff --git a/apps/readest-app/src/services/dictionaries/providers/slobProvider.ts b/apps/readest-app/src/services/dictionaries/providers/slobProvider.ts new file mode 100644 index 00000000..6006090e --- /dev/null +++ b/apps/readest-app/src/services/dictionaries/providers/slobProvider.ts @@ -0,0 +1,144 @@ +/** + * Slob (Aard 2) provider. + * + * Wraps {@link SlobReader} for the popup. Renders entries based on their + * content type: + * - `text/html*` → set as `innerHTML` (Wikipedia/Wiktionary slobs) + * - `text/plain` → wrapped `
` with newlines preserved
+ *   - everything else → flagged as unsupported (e.g. CSS/JS resources, which
+ *     belong to the slob's bundled stylesheet, not lookup results)
+ *
+ * Slob refs starting with `~/` are bundled resource paths (CSS/JS used by
+ * the dictionary's own templates). They are not user-visible headwords and
+ * are filtered before binary search hits them.
+ */
+import type { DictionaryProvider, ImportedDictionary } from '../types';
+import type { DictionaryFileOpener } from './starDictProvider';
+import { SlobReader } from '../slobReader';
+
+const renderEntry = (
+  container: HTMLElement,
+  word: string,
+  contentType: string,
+  data: Uint8Array,
+): { ok: true } | { ok: false; reason: 'empty' | 'unsupported'; message?: string } => {
+  if (data.length === 0) return { ok: false, reason: 'empty' };
+
+  const ct = contentType.split(';', 1)[0]!.trim().toLowerCase();
+  const text = new TextDecoder('utf-8').decode(data);
+
+  if (ct === 'text/html' || ct === 'application/xhtml+xml') {
+    const h1 = document.createElement('h1');
+    h1.textContent = word;
+    h1.className = 'text-lg font-bold';
+    container.appendChild(h1);
+    const div = document.createElement('div');
+    // Strip  tags pointing at slob-internal CSS;
+    // they 404 because we don't expose the bundled CSS as URLs in the popup.
+    div.innerHTML = text.replace(/]*rel=["']?stylesheet[^>]*>/gi, '');
+    div.className = 'mt-2 text-sm';
+    container.appendChild(div);
+    return { ok: true };
+  }
+  if (ct === 'text/plain' || ct === '') {
+    const h1 = document.createElement('h1');
+    h1.textContent = word;
+    h1.className = 'text-lg font-bold';
+    container.appendChild(h1);
+    const pre = document.createElement('pre');
+    pre.textContent = text;
+    pre.className = 'mt-2 whitespace-pre-wrap break-words text-sm font-sans';
+    container.appendChild(pre);
+    return { ok: true };
+  }
+  return {
+    ok: false,
+    reason: 'unsupported',
+    message: `Slob content type "${ct}" is not supported`,
+  };
+};
+
+export interface CreateSlobProviderArgs {
+  dict: ImportedDictionary;
+  fs: DictionaryFileOpener;
+  /** Localized label override; defaults to the bundle name. */
+  label?: string;
+}
+
+export const createSlobProvider = ({
+  dict,
+  fs,
+  label,
+}: CreateSlobProviderArgs): DictionaryProvider => {
+  let reader: SlobReader | null = null;
+  let initPromise: Promise | null = null;
+  let initError: Error | null = null;
+
+  const initOnce = async (): Promise => {
+    if (reader) return reader;
+    if (initError) throw initError;
+    if (!initPromise) {
+      initPromise = (async () => {
+        if (!dict.files.slob) {
+          throw new Error('Slob bundle is missing the .slob file');
+        }
+        const slobFile = await fs.openFile(`${dict.bundleDir}/${dict.files.slob}`, 'Dictionaries');
+        const r = new SlobReader();
+        await r.load({ slob: slobFile });
+        reader = r;
+        return r;
+      })().catch((err) => {
+        initError = err instanceof Error ? err : new Error(String(err));
+        initPromise = null;
+        throw initError;
+      });
+    }
+    return initPromise;
+  };
+
+  return {
+    id: dict.id,
+    kind: 'slob',
+    label: label ?? dict.name,
+    async lookup(word, ctx) {
+      let r: SlobReader;
+      try {
+        r = await initOnce();
+      } catch (err) {
+        return {
+          ok: false,
+          reason: 'error',
+          message: `Failed to load dictionary: ${(err as Error).message}`,
+        };
+      }
+      if (ctx.signal.aborted) return { ok: false, reason: 'error', message: 'aborted' };
+
+      try {
+        // Bundled resources (CSS/JS) live under refs starting with `~/`.
+        // We don't expose them as lookup hits.
+        if (word.startsWith('~/')) return { ok: false, reason: 'empty' };
+
+        const ref = await r.findRef(word);
+        if (ctx.signal.aborted) return { ok: false, reason: 'error', message: 'aborted' };
+        if (!ref) return { ok: false, reason: 'empty' };
+        if (ref.key.startsWith('~/')) return { ok: false, reason: 'empty' };
+
+        const blob = await r.readBlob(ref);
+        if (ctx.signal.aborted) return { ok: false, reason: 'error', message: 'aborted' };
+        const outcome = renderEntry(ctx.container, ref.key, blob.contentType, blob.data);
+        if (!outcome.ok) return outcome;
+        return {
+          ok: true,
+          headword: ref.key,
+          sourceLabel: r.header.tags['label']?.replace(/\0+$/u, '') || dict.name,
+        };
+      } catch (err) {
+        return {
+          ok: false,
+          reason: 'error',
+          message: (err as Error).message,
+        };
+      }
+    },
+  };
+};
diff --git a/apps/readest-app/src/services/dictionaries/providers/webSearchProvider.ts b/apps/readest-app/src/services/dictionaries/providers/webSearchProvider.ts
new file mode 100644
index 00000000..805c08e0
--- /dev/null
+++ b/apps/readest-app/src/services/dictionaries/providers/webSearchProvider.ts
@@ -0,0 +1,80 @@
+/**
+ * Web-search provider.
+ *
+ * Renders an "Open in [name]" card inside the popup tab. The ``
+ * uses the same pattern as `wikipediaProvider`'s "Read on Wikipedia" link,
+ * so the popup's container click delegation routes the click through
+ * Tauri's `openUrl` on native and `target="_blank"` works on the web build.
+ *
+ * Iframe embedding was considered and rejected — Google, Urban Dictionary,
+ * and Merriam-Webster all set `X-Frame-Options: DENY/SAMEORIGIN`. v1
+ * pragmatically opens externally; a Tauri-native webview overlay is a
+ * follow-up if there's demand.
+ */
+import type { DictionaryProvider, WebSearchEntry } from '../types';
+import { substituteUrlTemplate } from '../webSearchTemplates';
+import { isTauriAppPlatform } from '@/services/environment';
+import { stubTranslation as _ } from '@/utils/misc';
+
+const isTauri = isTauriAppPlatform();
+
+export interface CreateWebSearchProviderArgs {
+  template: WebSearchEntry;
+  /** Override the displayed label (e.g. localized built-in name). */
+  label?: string;
+}
+
+export const createWebSearchProvider = ({
+  template,
+  label,
+}: CreateWebSearchProviderArgs): DictionaryProvider => ({
+  id: template.id,
+  kind: 'web',
+  label: label ?? template.name,
+  async lookup(word, ctx) {
+    if (ctx.signal.aborted) return { ok: false, reason: 'error', message: 'aborted' };
+    const trimmed = word.trim();
+    if (!trimmed) return { ok: false, reason: 'empty' };
+
+    const url = substituteUrlTemplate(template.urlTemplate, trimmed);
+
+    const hgroup = document.createElement('hgroup');
+    const h1 = document.createElement('h1');
+    h1.textContent = trimmed;
+    h1.className = 'text-lg font-bold';
+    hgroup.append(h1);
+    const sub = document.createElement('p');
+    sub.textContent = template.name;
+    sub.className = 'text-sm italic not-eink:opacity-75';
+    hgroup.append(sub);
+    ctx.container.append(hgroup);
+
+    const description = document.createElement('p');
+    description.className = 'mt-3 text-sm';
+    description.textContent = _('Open the search result in your browser:');
+    ctx.container.append(description);
+
+    const linkWrapper = document.createElement('p');
+    linkWrapper.className = 'mt-3';
+    const link = document.createElement('a');
+    link.href = url;
+    // Skip target="_blank" on Tauri; the popup's click delegation routes
+    // through `openUrl`. iOS WebView's _blank handling fails otherwise.
+    if (!isTauri) link.target = '_blank';
+    link.rel = 'noopener noreferrer';
+    link.className =
+      'btn btn-sm btn-primary normal-case text-primary-content not-eink:no-underline';
+    // `stubTranslation` is just an extraction marker — the runtime value is
+    // the key itself. We interpolate the provider name manually.
+    link.textContent = _('Open in {{name}}').replace('{{name}}', template.name);
+    linkWrapper.append(link);
+    ctx.container.append(linkWrapper);
+
+    const urlPreview = document.createElement('p');
+    urlPreview.className = 'mt-3 text-base-content/60 break-all text-xs';
+    urlPreview.textContent = url;
+    ctx.container.append(urlPreview);
+
+    return { ok: true, headword: trimmed, sourceLabel: template.name };
+  },
+});
diff --git a/apps/readest-app/src/services/dictionaries/registry.ts b/apps/readest-app/src/services/dictionaries/registry.ts
index 1d8e18fd..fd72869e 100644
--- a/apps/readest-app/src/services/dictionaries/registry.ts
+++ b/apps/readest-app/src/services/dictionaries/registry.ts
@@ -13,12 +13,21 @@
  * runtime-only and non-serializable; storing them alongside metadata would
  * pollute the synced settings shape.
  */
-import type { DictionaryProvider, DictionarySettings, ImportedDictionary } from './types';
+import type {
+  DictionaryProvider,
+  DictionarySettings,
+  ImportedDictionary,
+  WebSearchEntry,
+} from './types';
 import { BUILTIN_PROVIDER_IDS } from './types';
 import { wiktionaryProvider } from './providers/wiktionaryProvider';
 import { wikipediaProvider } from './providers/wikipediaProvider';
 import { createStarDictProvider, type DictionaryFileOpener } from './providers/starDictProvider';
 import { createMdictProvider } from './providers/mdictProvider';
+import { createDictProvider } from './providers/dictProvider';
+import { createSlobProvider } from './providers/slobProvider';
+import { createWebSearchProvider } from './providers/webSearchProvider';
+import { getBuiltinWebSearch } from './webSearchTemplates';
 
 const instanceCache = new Map();
 
@@ -39,10 +48,23 @@ const builtinFor = (id: string): DictionaryProvider | undefined => {
   return undefined;
 };
 
+/**
+ * Resolve a `web:*` id to its template — built-in if id starts with
+ * `web:builtin:`, else look it up in `settings.webSearches`.
+ */
+const findWebTemplate = (id: string, settings: DictionarySettings): WebSearchEntry | undefined => {
+  if (id.startsWith('web:builtin:')) return getBuiltinWebSearch(id);
+  const list = settings.webSearches ?? [];
+  const tpl = list.find((t) => t.id === id);
+  if (!tpl || tpl.deletedAt) return undefined;
+  return tpl;
+};
+
 const getOrCreate = (
   id: string,
   dict: ImportedDictionary | undefined,
   fs: DictionaryFileOpener | undefined,
+  settings: DictionarySettings,
 ): DictionaryProvider | undefined => {
   const cached = instanceCache.get(id);
   if (cached) return cached;
@@ -51,6 +73,13 @@ const getOrCreate = (
     instanceCache.set(id, builtin);
     return builtin;
   }
+  if (id.startsWith('web:')) {
+    const tpl = findWebTemplate(id, settings);
+    if (!tpl) return undefined;
+    const provider = createWebSearchProvider({ template: tpl });
+    instanceCache.set(id, provider);
+    return provider;
+  }
   if (!dict) return undefined;
   if (!fs) return undefined;
   if (dict.kind === 'stardict') {
@@ -63,6 +92,16 @@ const getOrCreate = (
     instanceCache.set(id, provider);
     return provider;
   }
+  if (dict.kind === 'dict') {
+    const provider = createDictProvider({ dict, fs });
+    instanceCache.set(id, provider);
+    return provider;
+  }
+  if (dict.kind === 'slob') {
+    const provider = createSlobProvider({ dict, fs });
+    instanceCache.set(id, provider);
+    return provider;
+  }
   return undefined;
 };
 
@@ -83,14 +122,19 @@ export const getEnabledProviders = ({
   for (const id of settings.providerOrder) {
     if (settings.providerEnabled[id] === false) continue;
     if (id.startsWith('builtin:')) {
-      const provider = getOrCreate(id, undefined, undefined);
+      const provider = getOrCreate(id, undefined, undefined, settings);
+      if (provider) out.push(provider);
+      continue;
+    }
+    if (id.startsWith('web:')) {
+      const provider = getOrCreate(id, undefined, undefined, settings);
       if (provider) out.push(provider);
       continue;
     }
     const dict = dictById.get(id);
     if (!dict) continue;
     if (dict.deletedAt || dict.unavailable || dict.unsupported) continue;
-    const provider = getOrCreate(id, dict, fs);
+    const provider = getOrCreate(id, dict, fs, settings);
     if (provider) out.push(provider);
   }
   return out;
diff --git a/apps/readest-app/src/services/dictionaries/slobReader.ts b/apps/readest-app/src/services/dictionaries/slobReader.ts
new file mode 100644
index 00000000..36d6e0fc
--- /dev/null
+++ b/apps/readest-app/src/services/dictionaries/slobReader.ts
@@ -0,0 +1,476 @@
+/**
+ * Slob (Aard 2) reader. Reference: https://github.com/itkach/slob `slob.py`.
+ *
+ * # File layout
+ *
+ * ```
+ *   header    : magic, uuid, encoding, compression, tags, content_types,
+ *               blob_count, store_offset, file_size
+ *   refs      : ItemList at refs_offset = end of header
+ *   store     : ItemList at store_offset
+ * ```
+ *
+ * ## ItemList format (used for refs and store):
+ *
+ * ```
+ *   count  : 4 bytes BE  (refs only — bin/store list count is 4 bytes BE)
+ *   pos[i] : 8 bytes BE × count
+ *   data   : items, accessed at data_offset + pos[i]
+ * ```
+ *
+ * ## Ref item:
+ *
+ * ```
+ *   key       : pascal text, 2-byte BE length
+ *   bin_index : 4 bytes BE
+ *   item_index: 2 bytes BE
+ *   fragment  : pascal text, 1-byte length
+ * ```
+ *
+ * ## Store item:
+ *
+ * ```
+ *   bin_item_count   : 4 bytes BE
+ *   content_type_ids : 1 byte × bin_item_count
+ *   compressed_len   : 4 bytes BE
+ *   compressed       : bytes (compression algorithm from header)
+ *
+ *   decompressed:
+ *     pos[i]   : 4 bytes BE × bin_item_count
+ *     items    : at pos[i]: 4-byte length + content
+ * ```
+ *
+ * # Compression
+ *
+ * The header carries a compression name: `zlib`, `bz2`, `lzma2`, or empty.
+ * v1 supports `zlib` only — that's what virtually every Wikipedia/Wiktionary-
+ * derived slob ships with. `bz2` and `lzma2` are flagged unsupported at
+ * import time so the popup hides the provider with a clear reason.
+ *
+ * # Refs sort order
+ *
+ * `slob.py` uses ICU PRIMARY/TERTIARY collation when sorting refs. In
+ * practice for Latin-only ASCII keys the byte order matches lowercased-
+ * ASCII order; for accented or non-Latin scripts the orders differ. v1
+ * does case-insensitive ASCII binary search, plus a tiny linear "near"
+ * scan around the binary-search bracket to absorb the small ICU/byte
+ * order mismatches that occur with diacritics. Real Wikipedia/Wiktionary
+ * slobs lookup hot headwords correctly with this strategy; pure ICU
+ * collation would require shipping ICU data and isn't worth it for v1.
+ */
+import { unzlibSync } from 'fflate';
+import { LRU } from './dictZip';
+
+const utf8 = new TextDecoder('utf-8');
+
+export interface SlobHeader {
+  uuid: Uint8Array;
+  encoding: string;
+  compression: string;
+  tags: Record;
+  contentTypes: string[];
+  blobCount: number;
+  storeOffset: number;
+  fileSize: number;
+  refsOffset: number;
+}
+
+export interface SlobRef {
+  key: string;
+  binIndex: number;
+  itemIndex: number;
+  fragment: string;
+}
+
+export interface SlobBlob {
+  /** Resolved content type, e.g. `text/html;charset=utf-8`. */
+  contentType: string;
+  /** Raw decompressed item bytes (not text-decoded — could be CSS, JS, etc.). */
+  data: Uint8Array;
+}
+
+const MAGIC = new Uint8Array([0x21, 0x2d, 0x31, 0x53, 0x4c, 0x4f, 0x42, 0x1f]); // "!-1SLOB\x1F"
+
+class ByteCursor {
+  pos = 0;
+  constructor(public readonly buf: Uint8Array) {}
+
+  read(n: number): Uint8Array {
+    const out = this.buf.subarray(this.pos, this.pos + n);
+    this.pos += n;
+    return out;
+  }
+  byte(): number {
+    return this.buf[this.pos++]!;
+  }
+  u16(): number {
+    const b0 = this.buf[this.pos]!;
+    const b1 = this.buf[this.pos + 1]!;
+    this.pos += 2;
+    return (b0 << 8) | b1;
+  }
+  u32(): number {
+    const v = readU32BE(this.buf, this.pos);
+    this.pos += 4;
+    return v;
+  }
+  u64(): number {
+    const hi = readU32BE(this.buf, this.pos);
+    const lo = readU32BE(this.buf, this.pos + 4);
+    this.pos += 8;
+    // JS numbers are safe up to 2^53; slob files are far smaller.
+    return hi * 0x1_0000_0000 + lo;
+  }
+  /** Pascal-text with `n`-byte BE length prefix. Trailing NULs are trimmed (slob's editable padding). */
+  text(lenBytes: 1 | 2): string {
+    const len = lenBytes === 1 ? this.byte() : this.u16();
+    const bytes = this.read(len);
+    return decodePascalText(bytes);
+  }
+}
+
+function readU32BE(b: Uint8Array, o: number): number {
+  return (
+    (((b[o]! << 24) >>> 0) | ((b[o + 1]! << 16) >>> 0) | ((b[o + 2]! << 8) >>> 0) | b[o + 3]!) >>> 0
+  );
+}
+
+/**
+ * slob's `_read_text` trims a NUL-padded value when the byte length equals
+ * the format max (255 for 1-byte length, 65535 for 2-byte). We always trim
+ * trailing NULs — they're meaningless in tag values and only appear due to
+ * the editable-padding scheme.
+ */
+function decodePascalText(bytes: Uint8Array): string {
+  let end = bytes.length;
+  while (end > 0 && bytes[end - 1] === 0) end--;
+  return utf8.decode(bytes.subarray(0, end));
+}
+
+const cmpAsciiCI = (a: string, b: string): number => {
+  const x = a.toLowerCase();
+  const y = b.toLowerCase();
+  return x < y ? -1 : x > y ? 1 : 0;
+};
+
+/** Read header from a Blob. Reads ~8 KB; tags+content types fit comfortably. */
+async function readHeader(blob: Blob): Promise {
+  // 64 KB is plenty even for slobs with hundreds of tags / content types.
+  const headBytes = new Uint8Array(
+    await blob.slice(0, Math.min(blob.size, 64 * 1024)).arrayBuffer(),
+  );
+  const c = new ByteCursor(headBytes);
+  const magic = c.read(MAGIC.length);
+  for (let i = 0; i < MAGIC.length; i++) {
+    if (magic[i] !== MAGIC[i]) throw new Error('Not a Slob file (bad magic)');
+  }
+  const uuid = c.read(16);
+  const encoding = c.text(1);
+  if (encoding.toLowerCase() !== 'utf-8') {
+    // slob.py supports any Python codec, but everything in the wild is utf-8.
+    throw new Error(`Unsupported Slob encoding: ${encoding}`);
+  }
+  const compression = c.text(1);
+  const tagCount = c.byte();
+  const tags: Record = {};
+  for (let i = 0; i < tagCount; i++) {
+    const k = c.text(1);
+    const v = c.text(1);
+    tags[k] = v;
+  }
+  const ctCount = c.byte();
+  const contentTypes: string[] = [];
+  for (let i = 0; i < ctCount; i++) contentTypes.push(c.text(2));
+  const blobCount = c.u32();
+  const storeOffset = c.u64();
+  const fileSize = c.u64();
+  const refsOffset = c.pos;
+  return {
+    uuid: new Uint8Array(uuid),
+    encoding,
+    compression,
+    tags,
+    contentTypes,
+    blobCount,
+    storeOffset,
+    fileSize,
+    refsOffset,
+  };
+}
+
+export interface SlobReaderOpts {
+  slob: Blob;
+  /** Decompressed-bin LRU size. Defaults to 16. */
+  binCacheSize?: number;
+  /** Decoded-ref LRU size. Defaults to 1024. */
+  refCacheSize?: number;
+}
+
+export class SlobReader {
+  header: SlobHeader = {
+    uuid: new Uint8Array(),
+    encoding: 'utf-8',
+    compression: '',
+    tags: {},
+    contentTypes: [],
+    blobCount: 0,
+    storeOffset: 0,
+    fileSize: 0,
+    refsOffset: 0,
+  };
+  /** Number of refs (text-key → blob mappings). */
+  refCount = 0;
+
+  private blob: Blob | null = null;
+  /** ItemList header offset for refs (count then 8-byte positions). */
+  private refsDataOffset = 0;
+  /** Position of each ref within the refs data area; one Float64-style entry per ref but stored as two i32s (hi, lo) for >4 GB safety. */
+  private refPositions: Float64Array = new Float64Array(0);
+
+  /** Bin count + per-bin position metadata. */
+  private binCount = 0;
+  private binDataOffset = 0;
+  private binPositions: Float64Array = new Float64Array(0);
+
+  private refCache: LRU;
+  private binCache: LRU;
+
+  constructor(opts?: { binCacheSize?: number; refCacheSize?: number }) {
+    this.refCache = new LRU(opts?.refCacheSize ?? 1024);
+    this.binCache = new LRU(
+      opts?.binCacheSize ?? 16,
+    );
+  }
+
+  async load(opts: SlobReaderOpts): Promise {
+    if (opts.refCacheSize !== undefined) {
+      this.refCache = new LRU(opts.refCacheSize);
+    }
+    if (opts.binCacheSize !== undefined) {
+      this.binCache = new LRU(
+        opts.binCacheSize,
+      );
+    }
+    this.blob = opts.slob;
+    this.header = await readHeader(opts.slob);
+
+    if (this.header.compression !== 'zlib') {
+      throw new Error(
+        `Unsupported Slob compression "${this.header.compression}". v1 supports zlib only.`,
+      );
+    }
+    if (this.header.fileSize !== opts.slob.size) {
+      throw new Error(
+        `Slob file size mismatch: header says ${this.header.fileSize}, file is ${opts.slob.size}`,
+      );
+    }
+
+    // Refs ItemList: 4-byte count, then count × u64 positions.
+    const refsHeader = new Uint8Array(
+      await opts.slob.slice(this.header.refsOffset, this.header.refsOffset + 4).arrayBuffer(),
+    );
+    this.refCount = readU32BE(refsHeader, 0);
+    const refPosStart = this.header.refsOffset + 4;
+    const refPosBytes = new Uint8Array(
+      await opts.slob.slice(refPosStart, refPosStart + this.refCount * 8).arrayBuffer(),
+    );
+    this.refPositions = new Float64Array(this.refCount);
+    for (let i = 0; i < this.refCount; i++) {
+      const o = i * 8;
+      const hi = readU32BE(refPosBytes, o);
+      const lo = readU32BE(refPosBytes, o + 4);
+      this.refPositions[i] = hi * 0x1_0000_0000 + lo;
+    }
+    this.refsDataOffset = refPosStart + this.refCount * 8;
+
+    // Store ItemList: 4-byte bin_count, then bin_count × u64 positions.
+    const storeHeader = new Uint8Array(
+      await opts.slob.slice(this.header.storeOffset, this.header.storeOffset + 4).arrayBuffer(),
+    );
+    this.binCount = readU32BE(storeHeader, 0);
+    const binPosStart = this.header.storeOffset + 4;
+    const binPosBytes = new Uint8Array(
+      await opts.slob.slice(binPosStart, binPosStart + this.binCount * 8).arrayBuffer(),
+    );
+    this.binPositions = new Float64Array(this.binCount);
+    for (let i = 0; i < this.binCount; i++) {
+      const o = i * 8;
+      const hi = readU32BE(binPosBytes, o);
+      const lo = readU32BE(binPosBytes, o + 4);
+      this.binPositions[i] = hi * 0x1_0000_0000 + lo;
+    }
+    this.binDataOffset = binPosStart + this.binCount * 8;
+  }
+
+  /**
+   * Decode one ref. Each ref is variable-length: 2-byte BE key length + key
+   * bytes + 4-byte BE bin_index + 2-byte BE item_index + 1-byte fragment
+   * length + fragment bytes. We read a generous slice (max key 65535 +
+   * max fragment 255 + 7 fixed bytes), then truncate.
+   */
+  private async decodeRef(i: number): Promise {
+    const cached = this.refCache.get(i);
+    if (cached) return cached;
+    if (!this.blob) throw new Error('slob blob not loaded');
+    const start = this.refsDataOffset + this.refPositions[i]!;
+    // Maximum ref size: 2 + 65535 + 4 + 2 + 1 + 255 = 65799. Realistic
+    // headwords are ≤ 200 bytes; reading 4 KB covers virtually all of
+    // them with one Blob slice.
+    const slice = new Uint8Array(
+      await this.blob.slice(start, Math.min(start + 4 * 1024, this.blob.size)).arrayBuffer(),
+    );
+    let pos = 0;
+    const keyLen = (slice[pos]! << 8) | slice[pos + 1]!;
+    pos += 2;
+    let keyBytes: Uint8Array;
+    if (pos + keyLen <= slice.length) {
+      keyBytes = slice.subarray(pos, pos + keyLen);
+      pos += keyLen;
+    } else {
+      // Tail spilled past our 4 KB read — fall back to a precise re-read.
+      const need = 2 + keyLen + 4 + 2 + 1 + 255;
+      const exact = new Uint8Array(
+        await this.blob.slice(start, Math.min(start + need, this.blob.size)).arrayBuffer(),
+      );
+      keyBytes = exact.subarray(2, 2 + keyLen);
+      pos = 2 + keyLen;
+      const binIndex = readU32BE(exact, pos);
+      pos += 4;
+      const itemIndex = (exact[pos]! << 8) | exact[pos + 1]!;
+      pos += 2;
+      const fragLen = exact[pos]!;
+      pos += 1;
+      const fragment = decodePascalText(exact.subarray(pos, pos + fragLen));
+      const ref: SlobRef = {
+        key: decodePascalText(keyBytes),
+        binIndex,
+        itemIndex,
+        fragment,
+      };
+      this.refCache.set(i, ref);
+      return ref;
+    }
+    const binIndex = readU32BE(slice, pos);
+    pos += 4;
+    const itemIndex = (slice[pos]! << 8) | slice[pos + 1]!;
+    pos += 2;
+    const fragLen = slice[pos]!;
+    pos += 1;
+    const fragment = decodePascalText(slice.subarray(pos, pos + fragLen));
+
+    const ref: SlobRef = {
+      key: decodePascalText(keyBytes),
+      binIndex,
+      itemIndex,
+      fragment,
+    };
+    this.refCache.set(i, ref);
+    return ref;
+  }
+
+  /** Look up the first ref whose key case-insensitively matches `word`. */
+  async findRef(word: string): Promise {
+    if (!this.refCount) return undefined;
+    let lo = 0;
+    let hi = this.refCount - 1;
+    while (lo <= hi) {
+      const mid = (lo + hi) >>> 1;
+      const r = await this.decodeRef(mid);
+      const cmp = cmpAsciiCI(word, r.key);
+      if (cmp === 0) return r;
+      if (cmp > 0) lo = mid + 1;
+      else hi = mid - 1;
+    }
+    // Binary search misses can happen when the slob was sorted with ICU
+    // collation (locale-aware) but our key compare is byte-wise: keys with
+    // diacritics or non-ASCII codepoints may end up adjacent to but not
+    // exactly at the binary-search bracket. Scan a tiny window.
+    const NEAR_WINDOW = 8;
+    const wlo = Math.max(0, lo - NEAR_WINDOW);
+    const whi = Math.min(this.refCount - 1, lo + NEAR_WINDOW);
+    for (let i = wlo; i <= whi; i++) {
+      const r = await this.decodeRef(i);
+      if (cmpAsciiCI(word, r.key) === 0) return r;
+    }
+    return undefined;
+  }
+
+  /**
+   * Decompress a bin and cache it. The bin lays out as:
+   *   bin_item_count : u32 BE
+   *   ct_ids         : 1 byte × bin_item_count
+   *   compressed_len : u32 BE
+   *   compressed     : bytes
+   */
+  private async getBin(binIndex: number): Promise<{ contentTypeIds: Uint8Array; raw: Uint8Array }> {
+    const cached = this.binCache.get(binIndex);
+    if (cached) return cached;
+    if (!this.blob) throw new Error('slob blob not loaded');
+
+    const start = this.binDataOffset + this.binPositions[binIndex]!;
+    // Read the small leading header first to learn bin_item_count + comp_len.
+    const headSlice = new Uint8Array(
+      await this.blob.slice(start, Math.min(start + 4 * 1024, this.blob.size)).arrayBuffer(),
+    );
+    const binItemCount = readU32BE(headSlice, 0);
+    if (4 + binItemCount + 4 > headSlice.length) {
+      // 4 KB wasn't enough — re-read precise size.
+      const need = 4 + binItemCount + 4;
+      const exact = new Uint8Array(await this.blob.slice(start, start + need).arrayBuffer());
+      // Use exact for the lengths only; we still need to read the body.
+      const ctIds = exact.subarray(4, 4 + binItemCount);
+      const compLen = readU32BE(exact, 4 + binItemCount);
+      const compStart = start + 4 + binItemCount + 4;
+      const comp = new Uint8Array(
+        await this.blob.slice(compStart, compStart + compLen).arrayBuffer(),
+      );
+      const raw = unzlibSync(comp);
+      const out = { contentTypeIds: ctIds.slice(), raw };
+      this.binCache.set(binIndex, out);
+      return out;
+    }
+    const ctIds = headSlice.subarray(4, 4 + binItemCount);
+    const compLen = readU32BE(headSlice, 4 + binItemCount);
+    const compStartInSlice = 4 + binItemCount + 4;
+    let compBytes: Uint8Array;
+    if (compStartInSlice + compLen <= headSlice.length) {
+      compBytes = headSlice.subarray(compStartInSlice, compStartInSlice + compLen);
+    } else {
+      const compStart = start + compStartInSlice;
+      compBytes = new Uint8Array(
+        await this.blob.slice(compStart, compStart + compLen).arrayBuffer(),
+      );
+    }
+    const raw = unzlibSync(compBytes);
+    const out = { contentTypeIds: ctIds.slice(), raw };
+    this.binCache.set(binIndex, out);
+    return out;
+  }
+
+  /** Read the blob referenced by a ref. */
+  async readBlob(ref: SlobRef): Promise {
+    const bin = await this.getBin(ref.binIndex);
+    const itemCount = bin.contentTypeIds.length;
+    if (ref.itemIndex >= itemCount) {
+      throw new Error(`Slob item_index ${ref.itemIndex} out of range (bin has ${itemCount})`);
+    }
+    // Decompressed bin: u32 BE positions × itemCount, then items.
+    const pos = readU32BE(bin.raw, ref.itemIndex * 4);
+    const dataOffset = itemCount * 4;
+    const itemStart = dataOffset + pos;
+    const itemLen = readU32BE(bin.raw, itemStart);
+    const data = bin.raw.subarray(itemStart + 4, itemStart + 4 + itemLen);
+
+    const ctId = bin.contentTypeIds[ref.itemIndex]!;
+    const contentType = this.header.contentTypes[ctId] ?? '';
+    return { contentType, data };
+  }
+
+  /** Number of refs — exposed for tests. */
+  get refsCount(): number {
+    return this.refCount;
+  }
+}
+
+/** Strip trailing NULs from header tag values (slob editable-padding). */
+export const cleanTag = (v: string): string => v.replace(/\0+$/u, '');
diff --git a/apps/readest-app/src/services/dictionaries/stardictReader.ts b/apps/readest-app/src/services/dictionaries/stardictReader.ts
index 978c472a..d42b0534 100644
--- a/apps/readest-app/src/services/dictionaries/stardictReader.ts
+++ b/apps/readest-app/src/services/dictionaries/stardictReader.ts
@@ -53,7 +53,7 @@
  *   Init heap after:  ~420 KB (idx offsets) + chunk metadata (~few KB)
  *                     + LRU chunk cache (≤ ~1 MB after warmup).
  */
-import { gunzipSync, Inflate } from 'fflate';
+import { LRU, loadDictBody, type DictBody } from './dictZip';
 
 export interface StarDictEntry {
   word: string;
@@ -63,11 +63,6 @@ export interface StarDictEntry {
 
 const decoder = new TextDecoder('utf-8');
 
-const GZIP_MAGIC = [0x1f, 0x8b];
-
-const isGzip = (bytes: Uint8Array): boolean =>
-  bytes.length >= 2 && bytes[0] === GZIP_MAGIC[0] && bytes[1] === GZIP_MAGIC[1];
-
 /** Parse the key=value `.ifo` text into a record. */
 export function parseIfo(text: string): Record {
   const out: Record = {};
@@ -161,200 +156,9 @@ const cmpAscii = (a: string, b: string): number => {
   return x < y ? -1 : x > y ? 1 : 0;
 };
 
-/**
- * Bounded LRU. Tiny enough we don't bother with a real linked-list
- * implementation; reusing the Map insertion order is fine.
- */
-class LRU {
-  private readonly max: number;
-  private readonly map = new Map();
-
-  constructor(max: number) {
-    this.max = max;
-  }
-
-  get(key: K): V | undefined {
-    const v = this.map.get(key);
-    if (v !== undefined) {
-      // Move to end (most-recently-used).
-      this.map.delete(key);
-      this.map.set(key, v);
-    }
-    return v;
-  }
-
-  set(key: K, value: V): void {
-    if (this.map.has(key)) this.map.delete(key);
-    this.map.set(key, value);
-    if (this.map.size > this.max) {
-      // Evict oldest.
-      const first = this.map.keys().next().value as K | undefined;
-      if (first !== undefined) this.map.delete(first);
-    }
-  }
-}
-
-// ---------------------------------------------------------------------------
-// DictZip parsing + lazy chunk decompression.
-//
-// A `.dict.dz` file is a standard gzip with a FEXTRA "RA" subfield
-// listing the compressed length of each chunk. Each chunk's uncompressed
-// length is exactly `chlen` (the last may be shorter). Chunks are
-// separated by `Z_FULL_FLUSH` (BFINAL=0 + sync marker), so each chunk's
-// deflate stream is non-terminating — `inflateSync` rejects them with
-// "unexpected EOF". fflate's streaming `Inflate.push(bytes, false)`
-// handles them correctly and emits chunk bytes via `ondata`.
-// ---------------------------------------------------------------------------
-
-interface DictZipMeta {
-  /** Uncompressed bytes per chunk (last may be shorter). */
-  chlen: number;
-  /** Compressed bytes per chunk; sums to `compressedDataSize`. */
-  chunkSizes: number[];
-  /** Byte offset within the file where compressed chunk data begins. */
-  compressedDataOffset: number;
-}
-
-/**
- * Parse the gzip header + FEXTRA RA subfield. Returns `null` for
- * non-gzip files or gzip files without an RA subfield (those need
- * whole-file gunzip).
- */
-function parseDictZipHeader(bytes: Uint8Array): DictZipMeta | null {
-  if (bytes.length < 12 || bytes[0] !== 0x1f || bytes[1] !== 0x8b || bytes[2] !== 0x08) {
-    return null;
-  }
-  const flg = bytes[3]!;
-  const hasFEXTRA = (flg & 0b100) !== 0;
-  if (!hasFEXTRA) return null;
-
-  const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
-  const xlen = view.getUint16(10, true);
-  let chlen = 0;
-  let chcnt = 0;
-  const chunkSizes: number[] = [];
-
-  let p = 12;
-  while (p + 4 <= 12 + xlen) {
-    const si1 = bytes[p]!;
-    const si2 = bytes[p + 1]!;
-    const slen = view.getUint16(p + 2, true);
-    if (si1 === 0x52 && si2 === 0x41) {
-      // RA subfield: ver(2) + chlen(2) + chcnt(2) + chcnt × chunkSize(2).
-      const ver = view.getUint16(p + 4, true);
-      if (ver !== 1) return null;
-      chlen = view.getUint16(p + 6, true);
-      chcnt = view.getUint16(p + 8, true);
-      for (let i = 0; i < chcnt; i++) {
-        chunkSizes.push(view.getUint16(p + 10 + 2 * i, true));
-      }
-    }
-    p += 4 + slen;
-  }
-  if (chcnt === 0 || chunkSizes.length !== chcnt) return null;
-
-  // Skip past FEXTRA + optional FNAME, FCOMMENT, FHCRC.
-  let offset = 12 + xlen;
-  if (flg & 0b1000) {
-    while (offset < bytes.length && bytes[offset] !== 0) offset++;
-    offset++;
-  }
-  if (flg & 0b10000) {
-    while (offset < bytes.length && bytes[offset] !== 0) offset++;
-    offset++;
-  }
-  if (flg & 0b10) offset += 2;
-
-  return { chlen, chunkSizes, compressedDataOffset: offset };
-}
-
-/**
- * Inflate a single DictZip chunk via fflate's streaming `Inflate`. The
- * chunk's deflate stream ends at `Z_FULL_FLUSH` (BFINAL=0 — `inflateSync`
- * would reject), so we push with `final=false` and capture the data
- * emitted by `ondata`. Returns `null` on failure.
- */
-function inflateChunkStreaming(chunkBytes: Uint8Array): Uint8Array | null {
-  let result: Uint8Array | null = null;
-  try {
-    const inf = new Inflate();
-    inf.ondata = (data, _final) => {
-      // The first `ondata` carries this chunk's uncompressed bytes; any
-      // subsequent calls would be from feeding further input (we don't).
-      if (result === null) result = data;
-    };
-    inf.push(chunkBytes, false);
-  } catch {
-    return null;
-  }
-  if (!result || (result as Uint8Array).length === 0) return null;
-  return result;
-}
-
-class DictZipChunkedDict {
-  private blob: Blob;
-  private meta: DictZipMeta;
-  private chunkOffsets: number[];
-  /** Total uncompressed dict size, derived from chunk count × chlen (last chunk may be shorter; we don't know its exact size yet). */
-  private chunkCache: LRU;
-
-  constructor(blob: Blob, meta: DictZipMeta, cacheSize: number) {
-    this.blob = blob;
-    this.meta = meta;
-    this.chunkCache = new LRU(cacheSize);
-    // Precompute starting compressed offset of each chunk for slice reads.
-    const offsets: number[] = [];
-    let acc = meta.compressedDataOffset;
-    for (const cs of meta.chunkSizes) {
-      offsets.push(acc);
-      acc += cs;
-    }
-    this.chunkOffsets = offsets;
-  }
-
-  /** Read `size` uncompressed bytes starting at `offset`. */
-  async read(offset: number, size: number): Promise {
-    const chlen = this.meta.chlen;
-    const startChunk = Math.floor(offset / chlen);
-    const endChunk = Math.floor((offset + size - 1) / chlen);
-
-    if (startChunk === endChunk) {
-      const chunk = await this.getChunk(startChunk);
-      const local = offset - startChunk * chlen;
-      return chunk.subarray(local, local + size);
-    }
-    // Spans multiple chunks — concatenate.
-    const parts: Uint8Array[] = [];
-    let totalLen = 0;
-    for (let i = startChunk; i <= endChunk; i++) {
-      const chunk = await this.getChunk(i);
-      parts.push(chunk);
-      totalLen += chunk.length;
-    }
-    const combined = new Uint8Array(totalLen);
-    let pos = 0;
-    for (const p of parts) {
-      combined.set(p, pos);
-      pos += p.length;
-    }
-    const local = offset - startChunk * chlen;
-    return combined.subarray(local, local + size);
-  }
-
-  private async getChunk(i: number): Promise {
-    const cached = this.chunkCache.get(i);
-    if (cached) return cached;
-    const start = this.chunkOffsets[i]!;
-    const compressedSize = this.meta.chunkSizes[i]!;
-    const compressed = new Uint8Array(
-      await this.blob.slice(start, start + compressedSize).arrayBuffer(),
-    );
-    const inflated = inflateChunkStreaming(compressed);
-    if (!inflated) throw new Error(`Failed to inflate DictZip chunk ${i}`);
-    this.chunkCache.set(i, inflated);
-    return inflated;
-  }
-}
+// DictZip parsing + lazy chunk decompression has been extracted to
+// `dictZip.ts` so the DICT (dictd) reader can share the same code path. The
+// `loadDictBody` factory below replaces the old per-class probe + fallback.
 
 export interface StarDictReaderOpts {
   ifo: Blob;
@@ -377,12 +181,10 @@ export interface StarDictReaderOpts {
 export class StarDictReader {
   ifo: Record = {};
 
-  // Dict-reading mode. Exactly one of these is populated at init:
-  //   - `dictChunked`: lazy chunk decompression (proper DictZip files).
-  //   - `dictBuffer`: whole-file gunzip in memory (fallback when FEXTRA
-  //     is absent or chunk-probe fails).
-  private dictChunked: DictZipChunkedDict | null = null;
-  private dictBuffer: Uint8Array = new Uint8Array();
+  // Dict body — a `DictBody` from `dictZip.ts` that internally chooses lazy
+  // chunk decompression for proper DictZip files and falls back to whole-
+  // file gunzip when the FEXTRA is absent or the probe fails.
+  private body: DictBody | null = null;
 
   // .idx state — populated eagerly at init.
   private idxBlob: Blob | null = null;
@@ -414,17 +216,10 @@ export class StarDictReader {
       this.synCache = new LRU(cacheSize);
     }
 
-    // Read the small files in parallel. We deliberately skip
-    // `opts.dict.arrayBuffer()` here — the dict is read in fragments
-    // below depending on whether lazy chunk mode is viable.
-    const [ifoBuf, idxOffsetsBuf, synOffsetsBuf, dictHeadBuf] = await Promise.all([
+    const [ifoBuf, idxOffsetsBuf, synOffsetsBuf] = await Promise.all([
       opts.ifo.arrayBuffer(),
       opts.idxOffsets ? opts.idxOffsets.arrayBuffer() : Promise.resolve(undefined),
       opts.synOffsets ? opts.synOffsets.arrayBuffer() : Promise.resolve(undefined),
-      // Read just the gzip header + FEXTRA region (much less than the
-      // whole file). 64 KB is enormously generous for a FEXTRA RA
-      // subfield — even thousands of chunks would fit in a few KB.
-      opts.dict.slice(0, Math.min(opts.dict.size, 64 * 1024)).arrayBuffer(),
     ]);
 
     this.ifo = parseIfo(decoder.decode(new Uint8Array(ifoBuf)));
@@ -448,27 +243,9 @@ export class StarDictReader {
     this.idxCount = idxOffsets.length;
     this.idxBlob = opts.idx;
 
-    // Try lazy chunk mode for `.dict.dz`. Parse FEXTRA, probe-inflate
-    // chunk 0; on success, retain only the metadata + Blob. On failure,
-    // fall back to whole-file gunzip.
-    const dictHead = new Uint8Array(dictHeadBuf);
-    if (isGzip(dictHead)) {
-      const meta = parseDictZipHeader(dictHead);
-      if (meta && (await this.probeChunkInflate(opts.dict, meta))) {
-        this.dictChunked = new DictZipChunkedDict(
-          opts.dict,
-          meta,
-          /* chunk LRU size */ Math.max(8, Math.floor(cacheSize / 16)),
-        );
-      } else {
-        // FEXTRA missing or chunk probe failed — gunzip the whole file.
-        const dictBytes = new Uint8Array(await opts.dict.arrayBuffer());
-        this.dictBuffer = gunzipSync(dictBytes);
-      }
-    } else {
-      // Raw .dict (no compression): keep bytes as-is.
-      this.dictBuffer = new Uint8Array(await opts.dict.arrayBuffer());
-    }
+    this.body = await loadDictBody(opts.dict, {
+      chunkCacheSize: Math.max(8, Math.floor(cacheSize / 16)),
+    });
 
     // .syn: keep the Blob, accept its sidecar eagerly if provided. If not,
     // the offset table is built lazily on first synonym fallback.
@@ -485,32 +262,10 @@ export class StarDictReader {
     }
   }
 
-  /**
-   * Read chunk 0 of a candidate DictZip and try to inflate it via the
-   * streaming inflater. If that succeeds and produces ≤ chlen bytes, the
-   * file's chunks are independently decompressible — lazy mode is viable.
-   */
-  private async probeChunkInflate(blob: Blob, meta: DictZipMeta): Promise {
-    if (meta.chunkSizes.length === 0) return false;
-    const cs = meta.chunkSizes[0]!;
-    const start = meta.compressedDataOffset;
-    const compressed = new Uint8Array(await blob.slice(start, start + cs).arrayBuffer());
-    const inflated = inflateChunkStreaming(compressed);
-    return !!inflated && inflated.length > 0 && inflated.length <= meta.chlen;
-  }
-
-  /**
-   * Resolve an entry's bytes from the dict.
-   *
-   * Lazy-chunk mode: reads the chunks containing the entry's uncompressed
-   * range from the dict Blob and streaming-inflates them.
-   * Whole-file mode: in-memory subarray.
-   */
+  /** Resolve an entry's bytes from the dict body. */
   async read(entry: StarDictEntry): Promise {
-    if (this.dictChunked) {
-      return this.dictChunked.read(entry.offset, entry.size);
-    }
-    return this.dictBuffer.subarray(entry.offset, entry.offset + entry.size);
+    if (!this.body) throw new Error('dict body not loaded');
+    return this.body.read(entry.offset, entry.size);
   }
 
   /** Number of entries — exposed for tests. */
diff --git a/apps/readest-app/src/services/dictionaries/types.ts b/apps/readest-app/src/services/dictionaries/types.ts
index 87b9f5ac..e1963ad7 100644
--- a/apps/readest-app/src/services/dictionaries/types.ts
+++ b/apps/readest-app/src/services/dictionaries/types.ts
@@ -7,7 +7,7 @@
  * order; each provider writes lookup output into a per-tab container.
  */
 
-export type DictionaryProviderKind = 'builtin' | 'stardict' | 'mdict';
+export type DictionaryProviderKind = 'builtin' | 'stardict' | 'mdict' | 'dict' | 'slob' | 'web';
 
 export interface DictionaryLookupContext {
   /** Source language hint, e.g. book primary language code (`en`, `zh`). */
@@ -48,13 +48,14 @@ export interface DictionaryProvider {
  */
 export interface ImportedDictionary {
   id: string;
-  kind: 'stardict' | 'mdict';
-  /** Display name, derived from `.ifo` `bookname` or `.mdx` header `Title`. */
+  kind: 'stardict' | 'mdict' | 'dict' | 'slob';
+  /** Display name, derived from `.ifo` `bookname`, `.mdx` `Title`, slob `label`, or DICT `00databaseshort`. */
   name: string;
   /** Subdirectory under `'Dictionaries'` containing this bundle's files. */
   bundleDir: string;
   /** Filenames inside `bundleDir`. The exact set varies by `kind`. */
   files: {
+    // StarDict bundle.
     ifo?: string;
     idx?: string;
     dict?: string;
@@ -67,8 +68,14 @@ export interface ImportedDictionary {
     idxOffsets?: string;
     /** Same idea for `.syn`. */
     synOffsets?: string;
+    // MDict bundle.
     mdx?: string;
     mdd?: string[];
+    // DICT (dictd) bundle. `dict` above doubles as the body filename
+    // (`name.dict` or `name.dict.dz`); `index` is the dictd `.index` file.
+    index?: string;
+    // Slob bundle: a single self-contained `.slob` file.
+    slob?: string;
   };
   /** Source language code if known. */
   lang?: string;
@@ -92,6 +99,28 @@ export interface ImportedDictionary {
   unsupportedReason?: string;
 }
 
+/**
+ * A web-search "provider" template — a URL with a `%WORD%` placeholder
+ * (URL-encoded substitution at lookup time). Built-in templates (Google,
+ * Urban Dictionary, Merriam-Webster) are hardcoded in the registry and
+ * reference the IDs in {@link BUILTIN_WEB_SEARCH_IDS}; user-added templates
+ * live in {@link DictionarySettings.webSearches} with IDs of the form
+ * `web:`.
+ *
+ * Web-search providers don't fetch upstream — the popup just renders an
+ * "Open in [name]" link that opens the resolved URL externally. Iframe
+ * embedding is blocked by every major dictionary site (X-Frame-Options).
+ */
+export interface WebSearchEntry {
+  id: string;
+  /** Display name shown in the tab strip and the settings list. */
+  name: string;
+  /** URL with `%WORD%` placeholder, e.g. `https://example.com/?q=%WORD%`. */
+  urlTemplate: string;
+  /** Soft-delete marker; only set on user-added entries. */
+  deletedAt?: number;
+}
+
 export interface DictionarySettings {
   /** Provider id order shown in the popup tab strip. Includes builtin ids. */
   providerOrder: string[];
@@ -99,6 +128,11 @@ export interface DictionarySettings {
   providerEnabled: Record;
   /** Last-used tab id; `undefined` falls back to first enabled provider. */
   defaultProviderId?: string;
+  /**
+   * User-defined web search templates. Built-in templates (Google, Urban,
+   * Merriam-Webster) are hardcoded in the registry and not stored here.
+   */
+  webSearches?: WebSearchEntry[];
 }
 
 /** Stable ids for the built-in providers. */
@@ -108,3 +142,18 @@ export const BUILTIN_PROVIDER_IDS = {
 } as const;
 
 export type BuiltinProviderId = (typeof BUILTIN_PROVIDER_IDS)[keyof typeof BUILTIN_PROVIDER_IDS];
+
+/**
+ * Stable ids for the built-in web-search templates. The `web:builtin:*`
+ * prefix lets the registry recognize and dispatch them without a settings
+ * lookup; user-added templates live in `settings.webSearches` with ids of
+ * the form `web:`.
+ */
+export const BUILTIN_WEB_SEARCH_IDS = {
+  google: 'web:builtin:google',
+  urban: 'web:builtin:urban',
+  merriamWebster: 'web:builtin:merriam-webster',
+} as const;
+
+export type BuiltinWebSearchId =
+  (typeof BUILTIN_WEB_SEARCH_IDS)[keyof typeof BUILTIN_WEB_SEARCH_IDS];
diff --git a/apps/readest-app/src/services/dictionaries/webSearchTemplates.ts b/apps/readest-app/src/services/dictionaries/webSearchTemplates.ts
new file mode 100644
index 00000000..b30d2fbd
--- /dev/null
+++ b/apps/readest-app/src/services/dictionaries/webSearchTemplates.ts
@@ -0,0 +1,63 @@
+/**
+ * Built-in web-search templates.
+ *
+ * Three universally-useful entries (Google, Urban Dictionary,
+ * Merriam-Webster). They are seeded into `providerOrder` but **disabled by
+ * default** — users opt in from the settings list. Custom URL templates
+ * live in `settings.webSearches`; this file is only the immutable
+ * built-ins.
+ *
+ * The `%WORD%` placeholder marks where the looked-up word goes; the
+ * provider URL-encodes it at substitution time. (GoldenDict users may know
+ * `%GDWORD%` from there — we use `%WORD%` for brevity, but accept neither
+ * verbatim variant beyond what's documented here.)
+ */
+import { BUILTIN_WEB_SEARCH_IDS, type WebSearchEntry } from './types';
+
+export interface BuiltinWebSearchTemplate extends WebSearchEntry {
+  /** Localizable display name key — passed through `_(...)` at render time. */
+  nameKey: string;
+}
+
+export const BUILTIN_WEB_SEARCHES: BuiltinWebSearchTemplate[] = [
+  {
+    id: BUILTIN_WEB_SEARCH_IDS.google,
+    name: 'Google',
+    nameKey: 'Google',
+    urlTemplate: 'https://www.google.com/search?q=define:%WORD%&hl=en',
+  },
+  {
+    id: BUILTIN_WEB_SEARCH_IDS.urban,
+    name: 'Urban Dictionary',
+    nameKey: 'Urban Dictionary',
+    urlTemplate: 'https://www.urbandictionary.com/define.php?term=%WORD%',
+  },
+  {
+    id: BUILTIN_WEB_SEARCH_IDS.merriamWebster,
+    name: 'Merriam-Webster',
+    nameKey: 'Merriam-Webster',
+    urlTemplate: 'https://www.merriam-webster.com/dictionary/%WORD%',
+  },
+];
+
+const BUILTIN_BY_ID = new Map(BUILTIN_WEB_SEARCHES.map((t) => [t.id, t]));
+
+export const getBuiltinWebSearch = (id: string): BuiltinWebSearchTemplate | undefined =>
+  BUILTIN_BY_ID.get(id);
+
+/**
+ * Substitute `%WORD%` (case-insensitive) in a URL template with the
+ * URL-encoded form of `word`. Also handles the doubly-escaped form
+ * `%25WORD%25` that may appear if a user pasted a URL through a tool that
+ * percent-encoded the placeholder.
+ */
+export const substituteUrlTemplate = (template: string, word: string): string => {
+  const encoded = encodeURIComponent(word);
+  return template.replace(/%25WORD%25/gi, encoded).replace(/%WORD%/gi, encoded);
+};
+
+/** Returns true if a template contains a usable `%WORD%` placeholder. */
+export const isValidUrlTemplate = (template: string): boolean => {
+  if (!/^https?:\/\//i.test(template.trim())) return false;
+  return /%WORD%/i.test(template) || /%25WORD%25/i.test(template);
+};
diff --git a/apps/readest-app/src/store/customDictionaryStore.ts b/apps/readest-app/src/store/customDictionaryStore.ts
index 6a2f8f34..1f03143b 100644
--- a/apps/readest-app/src/store/customDictionaryStore.ts
+++ b/apps/readest-app/src/store/customDictionaryStore.ts
@@ -1,15 +1,39 @@
 import { create } from 'zustand';
 import { EnvConfigType } from '@/services/environment';
-import type { DictionarySettings, ImportedDictionary } from '@/services/dictionaries/types';
-import { BUILTIN_PROVIDER_IDS } from '@/services/dictionaries/types';
+import type {
+  DictionarySettings,
+  ImportedDictionary,
+  WebSearchEntry,
+} from '@/services/dictionaries/types';
+import { BUILTIN_PROVIDER_IDS, BUILTIN_WEB_SEARCH_IDS } from '@/services/dictionaries/types';
 import { useSettingsStore } from './settingsStore';
 
+/**
+ * Built-in web-search ids are seeded into `providerOrder` but disabled by
+ * default — users opt in. This preserves the principle that we don't push
+ * users onto external pages without consent, while still surfacing the
+ * options in the settings list.
+ */
+const BUILTIN_WEB_ORDER = [
+  BUILTIN_WEB_SEARCH_IDS.google,
+  BUILTIN_WEB_SEARCH_IDS.urban,
+  BUILTIN_WEB_SEARCH_IDS.merriamWebster,
+];
+
 const DEFAULT_DICTIONARY_SETTINGS: DictionarySettings = {
-  providerOrder: [BUILTIN_PROVIDER_IDS.wiktionary, BUILTIN_PROVIDER_IDS.wikipedia],
+  providerOrder: [
+    BUILTIN_PROVIDER_IDS.wiktionary,
+    BUILTIN_PROVIDER_IDS.wikipedia,
+    ...BUILTIN_WEB_ORDER,
+  ],
   providerEnabled: {
     [BUILTIN_PROVIDER_IDS.wiktionary]: true,
     [BUILTIN_PROVIDER_IDS.wikipedia]: true,
+    [BUILTIN_WEB_SEARCH_IDS.google]: false,
+    [BUILTIN_WEB_SEARCH_IDS.urban]: false,
+    [BUILTIN_WEB_SEARCH_IDS.merriamWebster]: false,
   },
+  webSearches: [],
 };
 
 interface DictionaryStoreState {
@@ -32,6 +56,13 @@ interface DictionaryStoreState {
   /** Persist the last-used tab id so the popup re-opens on it. */
   setDefaultProviderId(id: string | undefined): void;
 
+  /** Add a custom web search (id is generated). Appended + enabled by default. */
+  addWebSearch(name: string, urlTemplate: string): WebSearchEntry;
+  /** Update an existing custom web search; no-op if id is unknown or built-in. */
+  updateWebSearch(id: string, patch: { name?: string; urlTemplate?: string }): void;
+  /** Soft-delete a custom web search and remove from order/enabled. */
+  removeWebSearch(id: string): boolean;
+
   /** Hydrate from `settings.customDictionaries` + `settings.dictionarySettings` + check on-disk availability. */
   loadCustomDictionaries(envConfig: EnvConfigType): Promise;
   /** Persist current state back into settings (which then syncs to cloud). */
@@ -123,6 +154,66 @@ export const useCustomDictionaryStore = create((set, get)
     }));
   },
 
+  addWebSearch: (name, urlTemplate) => {
+    const trimmedName = name.trim();
+    const trimmedUrl = urlTemplate.trim();
+    const id = `web:${Math.random().toString(36).slice(2, 10)}${Date.now().toString(36)}`;
+    const entry: WebSearchEntry = { id, name: trimmedName, urlTemplate: trimmedUrl };
+    set((state) => {
+      const list = state.settings.webSearches ?? [];
+      const order = state.settings.providerOrder.includes(id)
+        ? state.settings.providerOrder
+        : [...state.settings.providerOrder, id];
+      const enabled = { ...state.settings.providerEnabled, [id]: true };
+      return {
+        settings: {
+          ...state.settings,
+          webSearches: [...list, entry],
+          providerOrder: order,
+          providerEnabled: enabled,
+        },
+      };
+    });
+    return entry;
+  },
+
+  updateWebSearch: (id, patch) => {
+    if (id.startsWith('web:builtin:')) return;
+    set((state) => {
+      const list = state.settings.webSearches ?? [];
+      if (!list.some((t) => t.id === id)) return state;
+      const next = list.map((t) =>
+        t.id === id
+          ? {
+              ...t,
+              name: patch.name?.trim() ?? t.name,
+              urlTemplate: patch.urlTemplate?.trim() ?? t.urlTemplate,
+            }
+          : t,
+      );
+      return { settings: { ...state.settings, webSearches: next } };
+    });
+  },
+
+  removeWebSearch: (id) => {
+    if (id.startsWith('web:builtin:')) return false;
+    const list = get().settings.webSearches ?? [];
+    if (!list.some((t) => t.id === id)) return false;
+    set((state) => ({
+      settings: {
+        ...state.settings,
+        webSearches: (state.settings.webSearches ?? []).map((t) =>
+          t.id === id ? { ...t, deletedAt: Date.now() } : t,
+        ),
+        providerOrder: state.settings.providerOrder.filter((p) => p !== id),
+        providerEnabled: Object.fromEntries(
+          Object.entries(state.settings.providerEnabled).filter(([k]) => k !== id),
+        ),
+      },
+    }));
+    return true;
+  },
+
   loadCustomDictionaries: async (envConfig) => {
     try {
       const { settings } = useSettingsStore.getState();
@@ -137,15 +228,25 @@ export const useCustomDictionaryStore = create((set, get)
         }),
       );
       // Merge defaults to back-fill any missing keys (e.g. new builtin added in a release).
+      // For providerOrder, we append any newly-defaulted ids (like the
+      // built-in web searches added in this release) so existing users see
+      // them appear at the end of the list.
+      const persistedOrder = persistedSettings.providerOrder;
+      const orderSet = new Set(persistedOrder);
+      const merged: string[] = persistedOrder.length
+        ? [...persistedOrder]
+        : [...DEFAULT_DICTIONARY_SETTINGS.providerOrder];
+      for (const id of DEFAULT_DICTIONARY_SETTINGS.providerOrder) {
+        if (!orderSet.has(id)) merged.push(id);
+      }
       const settingsMerged: DictionarySettings = {
-        providerOrder: persistedSettings.providerOrder.length
-          ? persistedSettings.providerOrder
-          : DEFAULT_DICTIONARY_SETTINGS.providerOrder,
+        providerOrder: merged,
         providerEnabled: {
           ...DEFAULT_DICTIONARY_SETTINGS.providerEnabled,
           ...persistedSettings.providerEnabled,
         },
         defaultProviderId: persistedSettings.defaultProviderId,
+        webSearches: persistedSettings.webSearches ?? [],
       };
       set({ dictionaries, settings: settingsMerged });
     } catch (error) {