diff --git a/.eslintrc b/.eslintrc index 1b384e06201..99c899ed11a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -20,13 +20,18 @@ } ], "no-restricted-imports": [ - "warn", + "error", { "paths": [ { "name": "react-redux", "importNames": ["useDispatch", "useSelector"], "message": "Please import from app/types instead." + }, + { + "name": "react-i18next", + "importNames": ["Trans", "t"], + "message": "Please import from app/core/internationalization instead" } ] } diff --git a/packages/grafana-ui/.eslintrc b/packages/grafana-ui/.eslintrc index fa09290c8f3..1ea0d9ef728 100644 --- a/packages/grafana-ui/.eslintrc +++ b/packages/grafana-ui/.eslintrc @@ -1,6 +1,18 @@ { "rules": { - "no-restricted-imports": ["error", { "patterns": ["@grafana/runtime", "@grafana/data/*", "@grafana/ui", "@grafana/e2e"] }] + "no-restricted-imports": [ + "error", + { + "patterns": ["@grafana/runtime", "@grafana/data/*", "@grafana/ui", "@grafana/e2e"], + "paths": [ + { + "name": "react-i18next", + "importNames": ["Trans", "t"], + "message": "Please import from grafana-ui/src/utils/i18n instead" + } + ] + } + ] }, "overrides": [ { diff --git a/packages/grafana-ui/src/utils/i18n.tsx b/packages/grafana-ui/src/utils/i18n.tsx index 112ec08c74b..588523e79d4 100644 --- a/packages/grafana-ui/src/utils/i18n.tsx +++ b/packages/grafana-ui/src/utils/i18n.tsx @@ -1,6 +1,6 @@ import i18next from 'i18next'; import React from 'react'; -import { Trans as I18NextTrans, initReactI18next } from 'react-i18next'; +import { Trans as I18NextTrans, initReactI18next } from 'react-i18next'; // eslint-disable-line no-restricted-imports // We want to translate grafana-ui without introducing any breaking changes for consumers // who use grafana-ui outside of grafana (such as grafana.com self serve). The other struggle diff --git a/public/app/core/internationalization/index.tsx b/public/app/core/internationalization/index.tsx index a337b5608b1..0b9a60eadac 100644 --- a/public/app/core/internationalization/index.tsx +++ b/public/app/core/internationalization/index.tsx @@ -1,6 +1,6 @@ import i18n, { BackendModule, ResourceKey } from 'i18next'; import React from 'react'; -import { Trans as I18NextTrans, initReactI18next } from 'react-i18next'; +import { Trans as I18NextTrans, initReactI18next } from 'react-i18next'; // eslint-disable-line no-restricted-imports import { DEFAULT_LOCALE, ENGLISH_US, FRENCH_FRANCE, SPANISH_SPAIN, PSEUDO_LOCALE, VALID_LOCALES } from './constants'; @@ -21,7 +21,6 @@ const loadTranslations: BackendModule = { return callback(new Error('No message loader available for ' + language), null); } - // TODO: namespace?? const messages = await loader(); callback(null, messages); },