Language Made Easy
Learn English through immersive reading, instant word lookup, FSRS flashcard review, video shadowing, and dictation. - This plugin has not been manually reviewed by Obsidian staff.
The above warnings are based on limited information and might not always be accurate.
Data
| ID | language-made-easy |
| Author | PandoraReads |
| Minimum Obsidian Version | 1.11.0 |
| Official Release Date | 2026-10-01 |
| Last update | 2026-10-23 |
Last Refresh
Obsidian Stats last refreshed the data behind this page on Oct 27, 2026.
| Community plugin snapshot | Oct 26, 2026 |
| Repository clone | last successful checkout Oct 27, 2026 |
| Release acquisition | release metadata checked Oct 27, 2026; latest main.js acquired |
Quick Links
Changes
| Date | Changed Property | Old Value | New Value |
|---|---|---|---|
| 2026-10-01 | Plugin Added |
Repository Data
| License | GPL-3.0 in package.json GPL-3.0 in LICENSE file |
| Package Manager | npm |
| Uses Typescript | Yes |
| Installed Bundlers | esbuild |
| Installed Testing Frameworks | None found |
| Has Test Files | No |
Latest Release main.js Size | 2.50 MB |
| Detected ES Version | ES2018 |
| Probably Minified | No |
| main.js API Findings | 20 disclosures |
| Uses BRAT beta releases | No |
| Dependencies | dexie, js-mdict, pako, qrcode-generator, ts-fsrs |
| Dev Dependencies | @types/node, esbuild, eslint, fake-indexeddb, obsidian, obsidian-plugin-validator, tslib, typescript, typescript-eslint |
main.js API Findings
These findings come directly from Glass Lint's JavaScript and Obsidian rule catalogs applied to the latest release main.js. The confidence column is Glass Lint's definite/possible match certainty.
| Disclosure | Rule Descriptions |
|---|---|
| Archive Or Compression | Uses archive or compression libraries |
| Browser Environment Access | Reads browser environment data |
| Browser Storage Access | Uses persistent browser storage |
| Cryptographic Operations | Uses cryptographic operations |
| Full Vault Access | Enumerates vault files |
| Lifecycle Events | Registers Obsidian lifecycle events |
| Markdown Processing | Registers markdown postprocessors, Renders markdown, Uses markdown link helpers |
| Metadata Access | Reads Obsidian metadata cache, Registers metadata cache events |
| Network Access | Constructs or references URLs, References authorization or user-agent headers, References service or SDK endpoints, Uses Node HTTP modules, Uses Obsidian request APIs, Uses browser network request APIs |
| Node Filesystem Access | Uses Node filesystem and path APIs |
| Obsidian Config Access | References .obsidian configuration paths |
| Platform Branching | Checks Obsidian platform flags |
| Plugin Storage Access | Reads or writes app-scoped storage and secrets, Reads plugin data, Writes plugin data |
| Third Party Services | References service or SDK endpoints |
| User Interface Access | Registers Obsidian views, Registers commands, Registers plugin settings UI, Registers ribbon icons, Registers status bar items, Uses Obsidian menus, Uses Obsidian modal UI, Uses Obsidian notices |
| Vault Access | Accesses Obsidian vault APIs, Accesses attachment resource paths, Registers vault events |
| Vault Read | Reads vault files, Uses adapter-level vault filesystem APIs |
| Vault Write | Deletes or trashes vault files, Uses adapter-level vault filesystem APIs, Writes vault files |
| Workspace Access | Accesses the active file, Registers Obsidian workspace events |
| Workspace Layout | Manages workspace leaves, Opens files through the workspace |
| Finding | Type | Confidence | Evidence |
|---|---|---|---|
| Reads or writes app-scoped storage and secrets | Warning | Definite | member_call of "app.loadLocalStorage" (2), member_call of "app.saveLocalStorage" (3) |
| Deletes or trashes vault files | Warning | Definite | member_call of "app.fileManager.trashFile" |
| Reads browser environment data | Info | Definite | member_read of "navigator.languages" (2), member_read of "navigator.language", member_read of "navigator.userAgent" (8), member_read of "navigator.userAgentData" |
| Uses persistent browser storage | Info | Definite | member_call of "localStorage.getItem", member_call of "indexedDB.databases" |
| Uses browser network request APIs | Info | Definite | call of "fetch" (2) |
| References authorization or user-agent headers | Info | Definite | string_contains of "api-key" (2), string_contains of "Authorization" (2), string_contains of "User-Agent" (10), string_contains of "Cookie" |
| References service or SDK endpoints | Info | Definite | string_contains of "api.openai.com" (25) |
| Constructs or references URLs | Info | Definite | string_contains of "https://" (127), string_contains of "http://" (17), member_call of "URL.createObjectURL", constructor of "URL" |
| Uses archive or compression libraries | Info | Definite | import of "zlib" (2) |
| Uses cryptographic operations | Info | Definite | member_call of "crypto.subtle.digest", member_call of "globalThis.crypto.subtle.digest" |
| Uses Node filesystem and path APIs | Info | Definite | import of "node:fs", call of "node:fs.openSync", member_call of "node:fs", import of "fs" |
| Uses Node HTTP modules | Info | Definite | import of "https" |
| Registers Obsidian lifecycle events | Info | Definite | member_call of "obsidian.Plugin" (16) |
| Uses markdown link helpers | Info | Definite | member_call of "obsidian" (7) |
| Registers markdown postprocessors | Info | Definite | member_call of "obsidian.Plugin" |
| Renders markdown | Info | Definite | member_call of "obsidian" (9) |
| Reads Obsidian metadata cache | Info | Definite | member_call of "app.metadataCache.getFirstLinkpathDest" (4), member_read of "app.metadataCache" (6), member_call of "app.metadataCache.getFileCache" |
| Registers metadata cache events | Info | Definite | member_call of "app.metadataCache.on" |
| Uses Obsidian request APIs | Info | Definite | member_call of "obsidian" (21) |
| Checks Obsidian platform flags | Info | Definite | member_read of "obsidian" (27) |
| Reads plugin data | Info | Definite | member_call of "obsidian.Plugin" |
| Writes plugin data | Info | Definite | member_call of "obsidian.Plugin" (2) |
| Registers commands | Info | Definite | member_call of "obsidian.Plugin" (20) |
| Uses Obsidian menus | Info | Definite | member_call of "obsidian.Menu" (4) |
| Uses Obsidian modal UI | Info | Definite | class of "obsidian.Modal" (17) |
| Uses Obsidian notices | Info | Definite | constructor of "obsidian.Notice" (137) |
| Registers ribbon icons | Info | Definite | member_call of "obsidian.Plugin" (3) |
| Registers plugin settings UI | Info | Definite | class of "obsidian.PluginSettingTab", member_call of "obsidian.Plugin" |
| Registers status bar items | Info | Definite | member_call of "obsidian.Plugin" |
| Accesses Obsidian vault APIs | Info | Definite | member_read of "app.vault" (90) |
| Uses adapter-level vault filesystem APIs | Info | Definite | member_call of "app.vault.adapter.exists" (13), member_call of "app.vault.adapter.mkdir" (3), member_call of "app.vault.adapter.read" (4), member_call of "app.vault.adapter.write" (3), member_call of "app.vault.adapter.remove" |
| References .obsidian configuration paths | Info | Definite | string_contains of ".obsidian/" (10), member_read of "app.vault.configDir" (2) |
| Enumerates vault files | Info | Definite | member_call of "app.vault.getAbstractFileByPath" (13), member_call of "app.vault.getFiles" (3), member_call of "app.vault.getAllFolders", member_call of "app.vault.getMarkdownFiles" |
| Registers vault events | Info | Definite | member_call of "app.vault.on" (3) |
| Reads vault files | Info | Definite | member_call of "app.vault.read" (18), member_call of "app.vault.readBinary" (2), member_call of "app.vault.cachedRead" |
| Accesses attachment resource paths | Info | Definite | member_call of "app.vault.getResourcePath" (3) |
| Writes vault files | Info | Definite | member_call of "app.vault.modify" (12), member_call of "app.vault.create" (8), member_call of "app.vault.createFolder" |
| Registers Obsidian views | Info | Definite | member_call of "obsidian.Plugin" (10) |
| Accesses the active file | Info | Definite | member_call of "app.workspace.getActiveFile" (9) |
| Registers Obsidian workspace events | Info | Definite | member_call of "app.workspace.on" (5) |
| Manages workspace leaves | Info | Definite | member_call of "app.workspace.getLeavesOfType" (18), member_call of "app.workspace.iterateAllLeaves" (5), member_call of "app.workspace.getLeaf" (9), member_call of "app.workspace.getRightLeaf" (2), member_call of "app.workspace.revealLeaf" (2) |
| Opens files through the workspace | Info | Definite | member_call of "app.workspace.openLinkText", member_call of "app.workspace.getLeaf.openFile" (7) |
The above data may not be accurate and contain errors. For more information refer to the page about data collection.
Lines of Code
The plugin has a total of 30736 lines of code. The following chart shows the lines of code split by programming language.
Downloads
The following chart shows the total number of downloads of the plugin over time. The second chart shows the delta of downloads per week, which is the number of new downloads per week. New version releases are marked with vertical lines.
Version History
| Version | Release Date | Note |
|---|---|---|
| 4.0.1 | 2026-10-02 | None |
| 4.0.4 | 2026-10-03 | None |
| 4.0.5 | 2026-10-03 | None |
| 4.0.6 | 2026-10-03 | None |
| 4.0.7 | 2026-10-03 | None |
| 4.0.8 | 2026-10-02 | None |
| 4.0.9 | 2026-10-02 | None |
| 4.0.10 | 2026-10-02 | None |
| 4.0.11 | 2026-10-02 | None |
| 4.1.0 | 2026-10-02 | None |
| 4.1.1 | 2026-10-03 | None |
| 4.2.0 | 2026-10-24 | None |