i18n-audit
Rust package/library for auditing translation usage in Rust codebases and comparing usage against translation repositories.
- collect used translation keys from source code
- identify dynamic/non-literal translation calls
- load translation keys from locale repositories
- compute missing and unused keys per locale
- generate JSON and Tailwind HTML report (same dashboard-style structure)
Features
- Scans Rust source usage for translation-like calls/macros:
t!(...),tr(...),gettext(...),dgettext(...),ngettext(...),fl!(...)- namespaced variants like
rust_i18n::t!(...)
- Detects:
- literal translation keys
- dynamic translation key expressions
- Loads locale repositories from
locales/(configurable):locales/{locale}.json|toml|yaml|ymllocales/{locale}/**/*.{json,toml,yaml,yml}
- Reports:
- missing keys per locale
- unused keys per locale
- dynamic warnings
- used/missing key locations (file, line, column, char)
- Outputs:
- table output in terminal
- JSON output
- standalone Tailwind HTML dashboard output
Installation
Install CLI from crates.io:
Use as a library in Cargo.toml:
[]
= "0.1"
Build from source:
Usage
With .env defaults:
Table output:
JSON output:
Write JSON report to file:
Generate HTML dashboard:
Fail CI when missing/unused keys exist:
CLI Options
--locales=en,sr,de--env-file=.env--paths=src,examples,tests--exclude=target,vendor,node_modules,.git--format=table|json--output=target/i18n-audit.json--only-missing--only-unused--html--html-output=target/i18n-audit-latest.html--lang-paths=locales,translations--lang-path=locales(legacy alias)--follow-symlinks--fail-on-missing--fail-on-unused--log-path=target/i18n-audit.log--dashboard-url=http://localhost/i18n-audit/latest
Environment configuration
Rust package now supports .env configuration just like PHP/JS packages.
Supported keys:
I18N_AUDIT_LOCALESI18N_AUDIT_SCAN_PATHSI18N_AUDIT_EXCLUDE_PATHSI18N_AUDIT_LANG_PATHSI18N_AUDIT_FORMATI18N_AUDIT_HTML_OUTPUT_PATHI18N_AUDIT_LOG_PATHI18N_AUDIT_DASHBOARD_URLI18N_AUDIT_FOLLOW_SYMLINKS
CSV values are split into arrays (for example I18N_AUDIT_SCAN_PATHS=src,examples,tests).
See .env.example for a ready-to-use template.
Library API
Main entry points:
AuditRunnerAuditOptionsReportReportHtmlRenderer
Testing
CI
GitHub Actions workflow is included at .github/workflows/ci.yml and runs:
cargo fmt --checkcargo clippy --all-targets --all-features -- -D warningscargo test --all-targets --all-features