bl is a terminal-based dictionary client written in Go. Three query paths in one binary: offline SQLite dictionaries (no network), web
scraping (Youdao EN⇄ZH, WoerterNet German), and LLM translation for any language pair via OpenAI-compatible API. Version 1.8 adds grammatical
sentence analysis with token-level POS tagging, dependency relations, and phrase structure trees for German (V2/case system), French
(agreement/clitics), and English.
What makes bl different:
1. Three-tier lookup: Offline SQLite → Cache → LLM API. Auto-fallback means you get results even without network.
2. Grammar analysis (v1.8):
bl --llm --parse "Der Mann geht nach Hause."
Parses any sentence into POS tags, lemma, morphological features, dependency relations. No other terminal dictionary offers this.
3. Lemma extraction: Inflected forms auto-reduce to dictionary form.
- ging → gehen (past tense, 1st/3rd person singular)
- besser → gut (comparative)
- ran → run
4. Multi-provider LLM with auto-fallback: Configure multiple providers. If one fails (rate limit, timeout), bl tries the next automatically.
5. Interactive config UI: bl -C — full terminal UI, no config file editing.
6. Bot support: Telegram and DingTalk bots built from the same codebase.
Tech stack: Pure Go, ~10MB single binary, zero runtime deps. modernc.org/sqlite (no CGO), goquery for HTML parsing. Output formats: Markdown,
JSON, oneliner.
Install: sudo dnf copr enable xieguaiwu/bl && sudo dnf install bl
GitHub: https://github.com/xieguaiwu/bl