A tool to automatically detect and remove unused translation keys from i18n files across multiple projects, helping maintain clean and efficient localization in React.js and Next.js.
- Detect unused translation keys in your project
- Remove unused translation keys from JSON files
- Find untranslated text in your source files
- Support for:
- Array strings
- Object values
- Template literals (backtick strings)
- JSX text content
- Translation function calls
- Supports React.js and Next.js projects
- Interactive CLI interface
You can install the package using npm:
npm install translation-key-purge
Or using yarn:
yarn add translation-key-purge
Create a sumit.config.json
file in your project root:
{
"srcDir": "src",
"jsonPaths": ["src/**/*.json"],
"searchPaths": ["src/**/*.{js,jsx,ts,tsx}"],
"fileExtensions": [".js", ".jsx", ".ts", ".tsx"],
"recursive": true,
"translationFunctions": ["t", "i18n", "translate"]
}
srcDir
: Base directory for scanning (default: "src")jsonPaths
: Glob patterns for JSON files to checksearchPaths
: Glob patterns for source files to scanfileExtensions
: File extensions to processrecursive
: Whether to scan subdirectoriestranslationFunctions
: Translation function names to detect
- Add the script to your
package.json
:
{
"scripts": {
"check-translations": "translation-key-purge"
}
}
- Run the tool:
npm run check-translations
- Choose from the available options:
- Check and clean unused JSON keys
- Check for untranslated text in files
- Check and add missing translations to JSON
- Exit
- Scans JSON files for unused translation keys
- Interactive prompts to delete unused keys
- Safe deletion with confirmation
- Detects hardcoded text in:
- JSX content
- Array strings
- Object values
- Template literals
- Shows file locations for each instance
- Interactive workflow to add translations
- Supports nested JSON structures
- Multiple JSON file support
The tool will detect text in various formats:
const Component = () => {
const array = ["Text 1", "Text 2"]; // ✓ Detected
const obj = { key: "Text 3" }; // ✓ Detected
const text = `Text 4`; // ✓ Detected
return (
<div>
Hardcoded text {/* ✓ Detected */}
{t("translated.key")} {/* ✓ Checked against JSON */}
</div>
);
};
This project is licensed under the MIT License. See the LICENSE file for details.
Sumit Mayani
Contributions are welcome! Please feel free to submit a Pull Request.