An ESLint Plugin For Linguijs

September 17, 2026 · View on GitHub

Set of eslint rules for Lingui projects

npm npm main-suite codecov GitHub

Installation

You'll first need to install ESLint:

npm install --save-dev eslint
# or
yarn add eslint --dev

Next, install eslint-plugin-lingui:

npm install --save-dev eslint-plugin-lingui
# or
yarn add eslint-plugin-lingui --dev

Note: If you installed ESLint globally (using the -g flag) then you must also install eslint-plugin-lingui globally.

Flat Config (eslint.config.js)

To enable all the recommended rules for our plugin, add the following config:

import pluginLingui from 'eslint-plugin-lingui'

export default [
  pluginLingui.configs['flat/recommended'],
  // Any other config...
]

We also recommend enabling the no-unlocalized-strings rule. It’s not enabled by default because it needs to be set up specifically for your project. Please check the rule's documentation for example configurations.

Custom setup

Alternatively, you can load the plugin and configure only the rules you want to use:

import pluginLingui from 'eslint-plugin-lingui'

export default [
  {
    plugins: {
      lingui: pluginLingui,
    },
    rules: {
      'lingui/t-call-in-function': 'error',
    },
  },
  // Any other config...
]

Legacy Config (.eslintrc)

To enable all of the recommended rules for our plugin, add plugin:lingui/recommended in extends:

{
  "extends": ["plugin:lingui/recommended"]
}

Custom setup

Alternatively, add lingui to the plugins section, and configure the rules you want to use:

{
  "plugins": ["lingui"],
  "rules": {
    "lingui/t-call-in-function": "error"
  }
}

Oxlint

The plugin also works as an Oxlint JS plugin without any changes. Add it to jsPlugins in your .oxlintrc.json and enable the rules you need. Oxlint doesn't read the plugin's configs, so the recommended rules have to be listed explicitly:

{
  "jsPlugins": ["eslint-plugin-lingui"],
  "rules": {
    "lingui/t-call-in-function": "error",
    "lingui/no-single-tag-to-translate": "warn",
    "lingui/no-single-variables-to-translate": "warn",
    "lingui/no-trans-inside-trans": "warn",
    "lingui/no-expression-in-message": "warn"
  }
}

Compatibility is verified in CI on every change. The only known limitation is the useTsTypes option of no-unlocalized-strings: it needs type information from @typescript-eslint/parser, which Oxlint doesn't provide.

Rules

✅ - Recommended