👋 Yomitan is the successor to Yomichan (migration guide) which was sunset by its owner on Feb 26, 2023. We have made a number of foundational changes to ensure the project stays alive, works on latest browser versions, and is easy to contribute to.
📢 New contributors welcome!
📢 Interested in adding a new language to Yomitan? See here for thorough documentation!
Yomitan turns your web browser into a tool for building Japanese language literacy by helping you read texts that would otherwise be too difficult to tackle.
Yomitan provides powerful features not available in other browser-based dictionaries:
- 💬 Interactive popup definition window for displaying search results.
- 🔊 Built-in native audio sources for Japanese words with the ability to add your own custom audio sources.
- ✍️ Kanji stroke order diagrams are just a click away.
- 📝 Automatic flashcard creation for the Anki flashcard program via the AnkiConnect plugin.
- 🔍 Custom search page for easily executing custom search queries.
- 📖 Support for multiple dictionary formats including EPWING via the Yomitan Import tool.
- ✨ Clean, modern code makes it easy for developers to contribute new features and languages.
- ✨ Migrating from Yomichan (legacy)
- Dictionaries
- Anki Integration
- Advanced Features
- Troubleshooting
- 🔒 Browser Permissions
Yomitan comes in two flavors: stable and testing. New changes are initially introduced into the testing version, and after some time spent ensuring that they are relatively bug free, they will be promoted to the stable version. If you are technically savvy and don't mind submitting issues on GitHub, try the testing version; otherwise, the stable version will be your best bet. Check contributing for more information on how to help.
※ Unlike Chrome, Firefox does not allow extensions meant for testing to be hosted in the marketplace. You will have to download the desired version and side-load it yourself. You only need to do this once, and you will get updates automatically.
-
Click the Yomitan button in the browser bar to open the quick-actions popup.
-
Import the dictionaries you wish to use for term and kanji searches; head over to the dictionary docs to get set up! If you do not have any dictionaries installed or enabled, Yomitan will warn you that it is not ready for use by displaying an orange exclamation mark over its icon. This exclamation mark will disappear once you have installed and enabled at least one dictionary.
-
Webpage text can be scanned by moving the cursor while holding a modifier key, which is Shift by default. If definitions are found for the text at the cursor position, a popup window containing term definitions will open. This window can be dismissed by clicking anywhere outside of it.
-
Click on the speaker button to hear the term pronounced by a native speaker. If an audio sample is not available, you will hear a short click instead. For more options, see Audio Configuration.
-
Click on individual kanji in the term definition results to view additional information about those characters, including stroke order diagrams, readings, meanings, and other useful data.
To further enhance your Yomitan experience, it's worth integrating with Anki, a spaced-repetition flashcard program to help solidify the words you encounter.
While we have made some substantial changes, the majority of the extension's functionality is thanks to hard work of FooSoft and many other incredible open source contributors from 2016-2023.
Major changes:
- 🌐 Added multi-language support!
- 💪 Completed the Manifest V2 → V3 transition, read why here.
- ⚡ Switched to using ECMAScript modules and npm-sourced dependencies.
- 🔧 Implemented an end-to-end CI/CD pipeline.
- 🧪 Switched to standard testing frameworks, vitest and playwrights.
In addition, we have made important bug fixes and minor enhancements:
- ⚡ Improved dictionary import speeds by 2x~10x.
- 📚 Added functionality to import/export multiple dictionaries, enabling portability across devices.
- ✨ And more.
Since the owner requested forks be uniquely named, we have chosen a new name, Yomitan (-tan is an honorific used for anthropomorphic moe characters).
🚀 Dip your toes into contributing by looking at issues with the label good-first-issue.
Since this is a distributed effort, we highly welcome new contributors! Feel free to browse the issue tracker, and read our contributing guidelines.
Here are some ways anyone can help:
- Try using the Yomitan dev build. Not only do you get cutting edge features, but you can help uncover bugs and give feedback to developers early on.
- Document any UI/UX friction in Github Issues. We're looking to make Yomitan more accessible to non-technical users.
- All the issues in
area/bug
older than 2 months need help reproducing. If anything interests you, please try to reproduce it and report your results. We can't easily tell if these issues are one-off, have since been resolved, or are no longer relevant.
The current active maintainers of Yomitan spend a lot of their time debugging and triaging issues. When someone files a bug report, we need to assess the frequency and severity of the bug. It is extremely helpful if we get multiple reports of people who experience a bug or people who can contribute additional detail to an existing bug report.
If you're looking to code, please let us know what you plan on working on before submitting a Pull Request. This gives the core maintainers an opportunity to provide feedback early on before you dive too deep. You can do this by opening a Github Issue with the proposal.
Some contributions we always appreciate:
- Well-written tests covering different functionalities. This includes playwright tests, benchmark tests, and unit tests.
- Increasing our type coverage.
- More and better documentation!
Information on how to setup and build the codebase can be found here.
If you want to add or improve support for a language, read the documentation on language features.
Feel free to join us on TheMoeWay Discord 🐇 at #yomitan-development.
Yomitan uses several third-party libraries to function.
Name | Installed version | License type | Link |
---|---|---|---|
@zip.js/zip.js | 2.7.32 | BSD-3-Clause | git+https://github.com/gildas-lormeau/zip.js.git |
dexie | 3.2.4 | Apache-2.0 | git+https://github.com/dfahlander/Dexie.js.git |
dexie-export-import | 4.0.7 | Apache-2.0 | git+https://github.com/dexie/Dexie.js.git |
yomitan-handlebars | 1.0.0 | MIT | n/a |
parse5 | 7.1.2 | MIT | git://github.com/inikulin/parse5.git |
wanakana | 5.3.1 | MIT | git+ssh://[email protected]/WaniKani/WanaKana.git |
hangul.js | 0.2.6 | MIT | git+https://github.com/e-/Hangul.js.git |