hallelujahIM is an english input method with auto-suggestions and spell check features.
- The auto-suggestion words are derived from Google's 1/3 million most frequent English words. I have refined this list to 140,402 words, removing nearly all misspelled ones. Candidate words are sorted by frequency.
- HallelujahIM also functions as a Spell-Checker: when you input an incorrect word, it will suggest the right alternatives.
- HallelujahIM also serves as a Text Expander: You can define your favorite substitutions on Hallelujah's Preference UI(web page: http://localhost:62718), such as
{"te":"text expander", "yem":"you expand me"}. - Instant translation is available as you type words (currently, it only supports English-to-Chinese, but the translation dictionary can be configured later on).
- Pinyin to English: you can input Hanyu Pinyin and receive the matching English word.
- Fuzzy phonetic match is another feature. For example, you can input
cerrageorkerrageto getcourage, andaosomeorausometo getawesome. - You can switch to the default English input mode (the normal, quiet, or silent mode) by pressing the right shift key. Pressing shift again will switch back to the auto-suggestion mode.
- Next-Word Prediction: Based on Google Books Ngram Corpus (2010-2019) English n-gram frequency data, the input method predicts the next word as you type. For example, after typing "i do not", it prioritizes suggestions like "know", "think", and "want". This feature is default off, need to turn on it in IME preference config.
- Pinyin to Chinese: Press the right
Commandkey to switch to Pinyin input mode. Type Chinese pinyin (or initial letters) and get Chinese hanzi candidates. For example, typingnihaor the abbreviationnhwill show "你好" and "你还". Press rightCommandagain to switch back to intelligent English input mode.
- download releases
- for macOS 10.12 ~ 14.2: https://github.com/dongyuwei/hallelujahIM/releases/latest, download the .pkg installer.
- for macOS 10.9 ~ 10.11(Deprecated version): https://github.com/dongyuwei/hallelujahIM/releases/tag/v1.1.1, deprecated version, need to install the .app manually.
- Windows: ported to Windows based on PIME,https://github.com/dongyuwei/Hallelujah-Windows, download the .exe installer.
- Linux:https://github.com/fcitx-contrib/fcitx5-hallelujah, thanks Qijia Liu!
- Android: https://github.com/dongyuwei/Hallelujah-Android
- unzip the app, copy it to
/Library/Input\ Methods/or~/Library/Input\ Methods/ - go to
System Preferences-->Input Sources--> click the + --> select English --> select hallelujah
- switch to hallelujah input method
- delete the hallelujah from
Input Sources - kill the old hallelujah Process (kill it by
pkill -9 hallelujah, check it been killed viaps ax|grep hallelujah) - replace the hallelujah app in
/Library/Input Methods/. - add the hallelujah to
Input Sources - switch to hallelujah, use it.
Inspired by hallelujah_autocompletion.
click Preferences... or visit web ui: http://localhost:62718/index.html

open hallelujah.xcworkspace- build the project.
GPL3(GNU GENERAL PUBLIC LICENSE Version 3)
This input method uses two SQLite databases, queried via FMDB (SQLite wrapper):
-
English word database:
~/Library/Application Support/hallelujah/words_with_frequency_and_translation_and_ipa.sqlite3- Contains ~140,402 English words with frequency, Chinese translation, and IPA
- Contains ~9,955 English n-gram (2-5 word phrase) frequency entries for next-word prediction
- Auto-copied from the app bundle during installation
- Used for prefix matching candidate queries
Schema:
-- Words table: stores English words, frequency, Chinese translation, and IPA CREATE TABLE words ( word TEXT PRIMARY KEY, frequency INT, translation TEXT, ipa TEXT ); CREATE INDEX idx_word ON words(word); -- N-grams table: stores 2-5 word phrase frequencies for next-word prediction -- n: phrase length (2-5) -- context: all words except the last (e.g., "i do not") -- next_word: the last word, i.e., the predicted word (e.g., "know") -- frequency: occurrence count in the Google Books corpus CREATE TABLE ngrams ( n INTEGER NOT NULL, context TEXT NOT NULL, next_word TEXT NOT NULL, frequency INTEGER NOT NULL, PRIMARY KEY (n, context, next_word) ); CREATE INDEX idx_ngrams_context ON ngrams(n, context);
-
Pinyin database:
~/Library/Application Support/hallelujah/pinyin_data.sqlite3- Contains ~55,320 pinyin→hanzi mappings based on the Google Pinyin dictionary
- Switch to pinyin mode via right Command key
- Supports both full pinyin and initial-letter abbreviations
- Results ranked by frequency
- Auto-copied from the app bundle during install
Schema:
CREATE TABLE pinyin_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, hz TEXT NOT NULL, -- Chinese hanzi py TEXT NOT NULL, -- Full pinyin abbr TEXT NOT NULL, -- Pinyin initial abbreviation freq REAL NOT NULL -- Frequency score ); CREATE INDEX idx_pinyin ON pinyin_data(py); CREATE INDEX idx_abbr ON pinyin_data(abbr);
-
Substitutions database:
~/Library/Application Support/hallelujah/substitutions.sqlite3- Stores user-defined Text-Expander substitution rules
- Manage via the preference page at http://localhost:62718
- Preserved across installs/updates (not overwritten)
Schema:
CREATE TABLE substitutions ( key TEXT PRIMARY KEY, value TEXT );
- FMDB, SQLite wrapper for efficient prefix matching queries.
- dictionary/cedict.json is transformed from cc-cedict
- dictionary/pinyin_data.sqlite3 derived from Google Pinyin raw dict (65,105 entries), pinyin→hanzi mappings.
- cmudict and https://github.com/mphilli/English-to-IPA
- GCDWebServer
- talisman, using its phonex algorithm to implement fuzzy phonics match.
- MDCDamerauLevenshtein, using it to calculate the edit distance.
- Google Books Ngram Corpus, providing English n-gram (2-5 word phrase) frequency data for next-word prediction.
- squirrel, I shamelessly copied the script to install and build pkg App for Mac.
auto suggestion from local dictionary:

translation(inspired by MacUIM):

If functional you need is missing but you're ready to pay for it, feel free to contact me. If not, create an issue anyway, I'll take a look as soon as I can.
- wechat: dongyuwei
- gmail: newdongyuwei













