typescript.react.portability.i18next.mui-snackbar-message.mui-snackbar-message

profile photo of semgrepsemgrep
Author
unknown
Download Count*

React MUI enqueueSnackbar() title is not internationalized: '$MESSAGE'

Run Locally

Run in CI

Defintion

rules:
  - id: mui-snackbar-message
    patterns:
      - pattern: enqueueSnackbar('$MESSAGE', $X2)
      - pattern-not: enqueueSnackbar(t($KEY), $X2)
    message: "React MUI enqueueSnackbar() title is not internationalized: '$MESSAGE'"
    languages:
      - typescript
      - javascript
    severity: WARNING
    metadata:
      category: portability
      technology:
        - react
        - mui
        - i18next
      references:
        - https://hendyirawan.notion.site/Internationalization-Localization-Policy-318c21674e5f44c48d6f136a6eb2e024
        - https://mui.com/
        - https://react.i18next.com/
      license: Commons Clause License Condition v1.0[LGPL-2.1-only]

Examples

mui-snackbar-message.tsx

// ruleid: mui-snackbar-message
enqueueSnackbar('Registration success, Please verify your email', {
  variant: 'success',
  action: key => (
    <MIconButton size="small" onClick={() => closeSnackbar(key)}>
      <Icon icon={closeFill} />
    </MIconButton>
  ),
});

// ok: mui-snackbar-message
enqueueSnackbar(t('Registration success, Please verify your email'), {
  variant: 'success',
  action: key => (
    <MIconButton size="small" onClick={() => closeSnackbar(key)}>
      <Icon icon={closeFill} />
    </MIconButton>
  ),
});