
Security News
Package Maintainers Call for Improvements to GitHub’s New npm Security Plan
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
@fizzog/dish
Advanced tools
A developer tool for managing localization files. Includes support for scanning and analyzing project usage, detecting orphaned keys.
(Deprecated) This project has moved to i18nish and is in the process of retooling.
A developer tool for managing localization files. Includes support for scanning and analyzing project usage, detecting orphaned keys, and providing a streamlined process for handling localization files in your project.
Specifically, this project is designed to work with i18next
and react-i18next
by tracking usage of useTranslation
and t('namespace:key')
.
To get started with @fizzog/dish
, we recommend using @fizzog/create-dish
, a tool that sets up everything for you with minimal configuration. Follow the steps below.
Run the following command to install and initialize dish
in your project:
npm init @fizzog/dish@latest
yarn create @fizzog/dish
npm run dish
Or leverage the package.json script that is optionally created.
dish.config.json
{
"out": ".dish",
"sourceGlob": "./src/**/*.{tsx,jsx}",
"localeGlob": "./src/locales/**/*.json",
"analysisFiles": ["used", "unused", "missing", "code", "index"],
"debug": false
}
out
string - The output directory where locale specific files for missing, used, and used data will be created.
sourceGlob
string - The glob expression for finding files that make use of translation code. e.g. ts
, tsx
, js
, jsx
.
localeGlob
string | string[] - The glob expression for finding files that store translation text. A string or array is valid json["**/locales/**/*.json", "**/modules/**/locales/*.json"]
analysisFiles
string | string[] - What files should be generated when dish
is run. options: used, unused, missing, code, index
debug
boolean | string[] – Need to troubleshoot? Set debug to true to see detailed logs of each data transformation step. Found something odd? Feel free to open an issue on the DISH repo. If string array, possible values are: json["scan", "validate", "index", "compare", "out", "config", "aliases"]
{
"common": {
"title": "Phasellus!",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"very": {
"deeply": {
"nested": {
"key": "here"
}
}
}
}
}
import { useTranslation } from "react-i18next";
export function Page() {
const { t } = useTranslation("common");
return t("subtitle");
}
missing.json
{
"en": {
"common.subtitle": {
"value": null,
"status": "missing",
"reference": [
{
"file": "src/Page.tsx",
"line": 5,
"column": 11
}
]
}
}
}
import { useTranslation } from "react-i18next";
export function Page() {
const { t } = useTranslation("translation", {
keyPrefix: "very.deeply.nested",
});
return t("common:key");
}
code.json
{
"src/Page3.tsx": [
{
"value": "very.deeply.nested.common:key",
"loc": {
"file": "src/Page.tsx",
"line": 7,
"column": 11
},
"status": "conflict",
"note": "Do not use the keyPrefix option if you want to use keys with prefixed namespace notation."
}
]
}
[0.4.1] - 2025-04-28
dish.config.json
{
"analysisFiles": ["used", "unused", "missing", "code", "index"],
}
[0.4.0] - 2025-04-27
const { t } = useTranslation("translation", { keyPrefix: "ns3" });
const dynamic = "foo";
t(`very.${dynamic}`);
t("very." + dynamic);
return null;
[0.3.29] - 2025-04-26
sourceGlob
config property to codeGlob
. System is backwards compatible. With the first major version update sourceGlob will be removed.// the t function will be set to first namespace as default
const { t, i18n } = useTranslation(['ns1', 'ns2', 'ns3']);
t('key'); // will be looked up from namespace ns1
t('key', { ns: 'ns2' }); // will be looked up from namespace ns2
[0.3.27] - 2025-04-26
const { t } = useTranslation('translation', { lng: 'de' });
[0.3.22] - 2025-04-25
code
in config file "analysisFiles": ["used", "unused", "missing", "code"],
{
"src/Page3.tsx": [
{
"value": "very.deeply.nested.common:title",
"loc": {
"file": "src/Page3.tsx",
"line": 7,
"column": 11
},
"status": "conflict",
"note": "Do not use the keyPrefix option if you want to use keys with prefixed namespace notation."
}
]
}
[0.3.20] - 2025-04-25
useTranslation("common");
useTranslation(["common", "other"]);
[0.2.14] - 2025-04-24
const { t } = useTranslation('translation', { keyPrefix: 'very.deeply.nested' });
const text = t('key'); // "here"
FAQs
A developer tool for managing localization files. Includes support for scanning and analyzing project usage, detecting orphaned keys.
We found that @fizzog/dish demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.