
Logseq i18n Lint
https://github.com/logseq/logseq-i18n-lint- Category
- Developer Tools
- Rank
- No. 1870Tools index
Previous survey · No. 1842 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- logseq
- Latest release
- v0.1.0
- Date
About
AST-based i18n linter for Clojure and ClojureScript projects. Catches missing translation keys and inconsistencies in source code via static analysis.
What it does
Logseq i18n Lint reads Clojure-family code as structured forms, then follows UI contexts such as Hiccup markup, attributes, notifications, conditionals, formatting, and bindings. It also compares referenced translation keywords with a primary EDN dictionary, reporting hardcoded copy, unused entries, and undefined references.
Why it's ranked here
The tool has an unusually complete maintenance loop for a focused command-line checker. It finds several forms of user-facing text, checks both sides of dictionary drift, supports changed-file scans, and emits compact CI output. Its automatic cleanup is useful but deliberately narrow, which makes the overall verdict positive with clear boundaries.
What's good
Structure-aware rules distinguish visible copy from strings used in logging, exceptions, comparisons, namespaces, and event handlers. Configuration covers source directories, extensions, UI functions, attributes, allow lists, regex exclusions, and ignored contexts. Parallel file processing helps larger repositories, while deterministic sorting and source locations keep reports actionable.
Tradeoffs
The custom parser must track Clojure and ClojureScript syntax itself, and parse recovery can continue after warnings. Detection still depends on configured UI functions, namespaces, attributes, and exceptions, so project conventions need careful setup. Automatic key removal rejects compact or single-line EDN dictionaries and only removes unused keys from dictionary files.
How to use it well
Use it in Clojure or ClojureScript projects with EDN translation dictionaries, first tuning the configuration against existing UI conventions. Run changed-file checks during development and compact output in CI. Review unused-key findings before enabling cleanup across dictionaries. Treat it as a static checker, not a translation editor, copy-writing service, or runtime localization system.
Technical notes+
Cargo.toml defines a Rust 2024 package requiring Rust 1.94, with clap for the CLI, rayon for parallelism, and criterion benchmarks. src/main.rs implements lint, check-keys, and check-missing subcommands with exit codes 0, 1, and 2 for success, findings, and operational errors. src/parser.rs contains the custom S-expression parser and recovery behavior; src/analyzer.rs applies contextual string rules in parallel. src/key_collector.rs performs two-pass key collection with symbol tables and scoped bindings, while src/checker.rs computes set differences against EDN keys. src/edn.rs performs line-based removal and refuses compact formats. src/git.rs gathers staged, unstaged, and untracked files. src/lib.rs publicly exports the core modules.
Observed
- License
- MIT
- Primary language
- Rust
- Packaging and installation
- Prebuilt binaries are offered, with source installation through Cargo or a release build.
- Interface
- Command-line application with lint, unused-key checking, and missing-key checking commands; core Rust modules are also publicly exported.
- Target source formats
- Clojure, ClojureScript, and shared Clojure source extensions are supported by default.
- Platform support
- Prebuilt binaries are documented for Windows, macOS, and Linux on x64 and ARM64.
- Dictionary format
- Translation dictionaries are EDN top-level maps with keyword keys.
Read from README.md, Cargo.toml, src/lib.rs, src/main.rs, src/edn.rs, src/git.rs, src/config.rs, src/parser.rs, src/checker.rs, src/scanner.rs, src/analyzer.rs, src/reporter.rs, src/key_collector.rs.
What it can do
Detect missing translation keys in source code
Clojure/ClojureScript source files → List of missing translation keys
Identify inconsistent translation key usage
Clojure/ClojureScript project files → Report of translation key inconsistencies
Parse and analyze abstract syntax trees
Clojure/ClojureScript code → AST analysis results
Perform static code analysis for internationalization issues
Source code files → Linting report with i18n issues
Validate translation key references
Code with i18n key references → Validation results for translation keys
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.