A Rust port of ngx-translate-lint for improved performance.
npm install -g rust-ngx-translate-lintNo dependencies required! Pre-built binaries are included for:
- Linux (x64, ARM64)
- macOS (x64, ARM64/Apple Silicon)
- Windows (x64)
rust-ngx-translate-lint --project "./src/app/**/*.{html,ts}" --languages "./src/assets/i18n/*.json"Or use the short form:
rust-ngx-translate-lint -p "./src/app/**/*.{html,ts}" -l "./src/assets/i18n/*.json"You can also use a configuration file (JSON or JS):
rust-ngx-translate-lint --config .ngx-translate-lint.jsonExample .ngx-translate-lint.json:
{
"rules": {
"keysOnViews": "error",
"zombieKeys": "warning",
"misprintKeys": "warning",
"deepSearch": "enable",
"emptyKeys": "warning",
"maxWarning": "6",
"misprintCoefficient": "0.9",
"ignoredKeys": [
"library.targetSystem.*",
"engineering.signal_configurations.behavior.*",
"languages.*"
],
"ignoredMisprintKeys": [
"common.button.*",
"validation.messages.*"
]
},
"project": "./src/app/**/*.{html,ts}",
"languages": "./src/assets/i18n/*.json"
}Example config.js:
module.exports = {
rules: {
keysOnViews: 'error',
zombieKeys: 'warning',
misprintKeys: 'warning',
deepSearch: 'enable',
emptyKeys: 'warning',
maxWarning: '6',
misprintCoefficient: '0.9',
ignoredKeys: [
'library.targetSystem.*',
'engineering.signal_configurations.behavior.*',
'languages.*'
],
ignoredMisprintKeys: [
'common.button.*',
'validation.messages.*'
]
},
project: './src/app/**/*.{html,ts}',
languages: './src/assets/i18n/*.json'
};-p, --project- Path to view files (HTML/TS), supports glob patterns (e.g.,"./src/app/**/*.{html,ts}")-l, --languages- Path to translation files (JSON), supports glob patterns (e.g.,"./src/assets/i18n/*.json")--config- Path to configuration file (JSON or JS)--fix-zombies-keys- Remove unused translation keys--max-warning- Maximum allowed warnings before exiting with error code
project- Path to view files (same as-poption)languages- Path to translation files (same as-loption)ignore- Array of paths to ignorefixZombiesKeys- Boolean to enable zombie key removalrules.keysOnViews- "error" | "warning" | "disable" - Check for missing translationsrules.zombieKeys- "error" | "warning" | "disable" - Check for unused translationsrules.emptyKeys- "error" | "warning" | "disable" - Check for empty valuesrules.misprintKeys- "error" | "warning" | "disable" - Check for potential typosrules.deepSearch- "enable" | "disable" - Enable deep search moderules.maxWarning- Maximum warnings allowedrules.misprintCoefficient- Threshold for misprint detection (0.0-1.0, default: 0.9)rules.ignoredKeys- Array of key patterns to ignore (supports wildcards like"prefix.*")rules.ignoredMisprintKeys- Array of key patterns to ignore for misprint detectionrules.customRegExpToFindKeys- Array of custom regex patterns for key extraction
- ✅ Detects missing translation keys
- ✅ Finds unused translation keys (zombies)
- ✅ Identifies potential typos in translation keys
- ✅ Supports wildcard patterns for ignored keys
- ✅ Supports glob patterns for file paths
- ✅ Configuration file support (JSON/JS)
- ✅ Compatible with original ngx-translate-lint config format
- ✅ Fast performance thanks to Rust
- ✅ Deep search mode for thorough key detection
Add to your package.json:
{
"scripts": {
"lint:translations": "rust-ngx-translate-lint --config .ngx-translate-lint.json"
},
"devDependencies": {
"rust-ngx-translate-lint": "^0.1.5"
}
}Then run:
npm run lint:translationsrust-ngx-translate-lint --project "./src/app/**/*.{html,ts}" --languages "./src/assets/i18n/*.json"rust-ngx-translate-lint --config .ngx-translate-lint.jsonrust-ngx-translate-lint --config .ngx-translate-lint.json --fix-zombies-keysnpm run lint:translationsMIT