Vibeleaderboard
Index / tool
Visit github.com
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 filesList of missing translation keys

  • Identify inconsistent translation key usage

    Clojure/ClojureScript project filesReport of translation key inconsistencies

  • Parse and analyze abstract syntax trees

    Clojure/ClojureScript codeAST analysis results

  • Perform static code analysis for internationalization issues

    Source code filesLinting report with i18n issues

  • Validate translation key references

    Code with i18n key referencesValidation results for translation keys

Tags

i18nlinterclojureclojurescriptstatic-analysisrust

Tech Stack

Rust

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.

Logseq i18n Lint | VibeLeaderboard