- Notifications
You must be signed in to change notification settings - Fork0
Japanese glossator for assisted reading of text using Ichiran
License
Netdex/niinii
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This project is a work-in-progress.
niinii (knee-knee) is a graphical frontend for glossing Japanese text. Usefulfor assisted reading of text for language learning purposes. A primary use caseis glossing visual novels, which is shown in the demonstration above. I madethis tool with the express intent to read a singlespecific visual novel,which is also where the name comes from. If someone else finds it useful that'scool too.
For example, in the demonstration above, I use niinii along with a text hookerto gloss the dialogue in a visual novel. The segmented phrase along with rubytext (i.e. furigana) is displayed. Hovering over a segment will show dictionarydefinitions and inflections from JMDict. You can pop open a separate window byclicking on a segment. Hovering over kanji will show kanji information fromKANJIDIC2. I would write a more detailed user manual but I think you canprobably figure it out.
Japanese language support is implemented usingIchiran bytshatrov. Ichiran is pretty amazing at textsegmentation compared to other tools I've tried.
This is a tool created to service a personal need, and may not be useful to you.Below, I laid out my personal justification for investing time into creatingthis tool. If you agree, then this tool may be useful for you.
Why not use MeCab, JParser, ChaSen, Jisho etc.?: In my experience ichiran ismuch better at segmentation, provides more metadata, and makes fewer mistakes.
Why not use rikai(kun|chan), JGlossator?: They don't do segmentation.
Why not use DeepL, Google Translate, etc.?: I want a gloss, not atranslation tool. If I ever integrate translation features, I'd like to do so ina way that supplements the gloss rather than dumping text.
Why not use the web frontendichi.moe?:There are some features I'd like to experiment with to improve the glossingexperience.
Prepackaged builds are available in theReleases section of thisrepository.
The only target that is properly maintained isx86_64-pc-windows-msvc
. There'snothing stopping it from working on other targets (e.g. Linux), but additionalwork may be required.
To build the application from source on Windows:
# install vcpkggit clone https://github.com/microsoft/vcpkg.\vcpkg\bootstrap-vcpkg.bat# install freetypevcpkg install freetype:x64-windows-static-mdgit clone https://github.com/Netdex/niinii.gitcd niiniicargo build --release
If using the hooking feature, the bitness of the DLL must match the targetapplication. To build a 32-bit application:
cargo +stable-i686-pc-windows-msvc build --target i686-pc-windows-msvc --release
For Japanese language support, the following additional components are required:
- ichiran-cli (Ichiran)
- PostgreSQL installation with Ichiran database
You must provide the location of these additional components in the Settingspane of the application.
Given that the process of building these components for use with niinii is quiteinvolved, prebuilt versions are included with the prepackaged builds.
Seems like a problem with winit. niinii is almost always used in the foregroundanyways because of always on top, so I'm not going to bother fixing this.
- Most visual novels are written in engines which use D3D9. This is not alwaystrue though, you may need to adjust the hooking code as necessary.
- There is limited recovery code for when frame buffers are resized, devicesare reset, contexts are changed etc. This may lead to breakages whenswitching in and out full-screen mode, resizing the window, and switching toanother application.
- Some visual novel engines will present only when necessary rather than at afixed framerate. In this case, niinii won't work properly since it expects afixed refresh rate.
In overlay mode, niinii displays a transparent window which covers the entirescreen. Newer Chromium-based browsers have a feature which suspends drawingwhen the window is fully occluded, for performance reasons. The windowdisplayed by niinii counts as full occlusion despite being transparent, whichcauses Chromium-based browsers to suspend drawing. I suspect this could alsohappen with some Electron apps, but I haven't tested it.
TODO
See NOTICE for a list of third-party software used in this project.
About
Japanese glossator for assisted reading of text using Ichiran
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.