eslint-plugin-gettext
raw JSON → 1.2.0 verified Sat Apr 25 auth: no javascript
ESLint plugin providing linting rules for gettext internationalization API usage. Version 1.2.0 (latest stable) released in 2023. It enforces best practices such as preventing non-literal arguments in gettext calls and ensuring positional markers for multiple variables. Unlike generic i18n linting, this plugin targets gettext specifically, supporting both Jed and Django JS Catalog integrations. Designed for Node.js >=6.0.0, it requires ESLint as a peer dependency and is maintained by App Annie.
Common errors
error Error: Failed to load plugin 'gettext': Cannot find module 'eslint-plugin-gettext' ↓
cause Plugin not installed or ESLint cannot resolve it.
fix
Run 'npm install eslint-plugin-gettext --save-dev' and ensure node_modules is correct.
error Error: ESLint couldn't find the rule 'gettext/no-variable-string' ↓
cause Rule name is misspelled or plugin not loaded in config.
fix
Add 'plugins: ["gettext"]' to ESLint config and use the full rule name 'gettext/no-variable-string'.
error Error: ESLint requires that plugins be installed separately: eslint-plugin-gettext ↓
cause Attempting to use plugin without installing it.
fix
Run 'npm install eslint-plugin-gettext --save-dev' and check peer dependency eslint.
Warnings
gotcha Rule no-variable-string rejects all non-literal arguments including computed strings like gettext('prefix' + suffix). ↓
fix Always use static string literals: gettext('static string').
gotcha The plugin requires ESLint as a peer dependency, not installed automatically. ↓
fix Run 'npm install eslint --save-dev' alongside this plugin.
gotcha Rule required-positional-markers-for-multiple-variables only works with %d and %s placeholders; other placeholders may bypass the rule. ↓
fix Ensure strings with multiple variables use positional markers like %1$s %2$d.
gotcha Plugin does not support custom gettext function names; only gettext, ngettext, pgettext, npgettext are checked. ↓
fix If using a different function name, manually alias or wrap calls.
Install
npm install eslint-plugin-gettext yarn add eslint-plugin-gettext pnpm add eslint-plugin-gettext Imports
- plugin reference in ESLint config wrong
"plugins": ["eslint-plugin-gettext"]correct"plugins": ["gettext"] - no-variable-string rule wrong
"no-variable-string": "error"correct"gettext/no-variable-string": "error" - required-positional-markers-for-multiple-variables rule wrong
"gettext/require-positional-markers": "error"correct"gettext/required-positional-markers-for-multiple-variables": "error"
Quickstart
// .eslintrc.json
{
"plugins": ["gettext"],
"rules": {
"gettext/no-variable-string": "error",
"gettext/required-positional-markers-for-multiple-variables": "error"
}
}
// Example file that will trigger errors:
gettext(variable); // Error: no-variable-string
gettext('%d cats %s dogs'); // Error: missing positional markers