From 2a493e6a1ee998483958d96a19e071cf165aabd0 Mon Sep 17 00:00:00 2001 From: Simeon Cheeseman Date: Tue, 1 Mar 2022 17:47:46 +0900 Subject: [PATCH 1/2] fix: correctly extend react-i18next from i18next framework --- src/frameworks/i18next.ts | 7 ++++ src/frameworks/react-i18next.ts | 39 ++++++++++++++++++++++ src/frameworks/{react.ts => react-intl.ts} | 0 3 files changed, 46 insertions(+) create mode 100644 src/frameworks/react-i18next.ts rename src/frameworks/{react.ts => react-intl.ts} (100%) diff --git a/src/frameworks/i18next.ts b/src/frameworks/i18next.ts index 954202ba..080556ab 100644 --- a/src/frameworks/i18next.ts +++ b/src/frameworks/i18next.ts @@ -49,6 +49,13 @@ class I18nextFramework extends Framework { '{key}_7', '{key}_8', '{key}_9', + // support v4 format as well as v3 + '{key}_zero', + '{key}_one', + '{key}_two', + '{key}_few', + '{key}_many', + '{key}_other' ] refactorTemplates(keypath: string) { diff --git a/src/frameworks/react-i18next.ts b/src/frameworks/react-i18next.ts new file mode 100644 index 00000000..5127969b --- /dev/null +++ b/src/frameworks/react-i18next.ts @@ -0,0 +1,39 @@ +import { I18nextFramework } from './i18next' +import { LanguageId } from '~/utils' + +class ReactI18nextFramework extends Framework { + id= 'react-i18next' + display= 'React' + + detection= { + packageJSON: [ + 'react-i18next', + 'next-i18next', + ], + } + + languageIds: LanguageId[] = [ + 'javascript', + 'typescript', + 'javascriptreact', + 'typescriptreact', + 'ejs', + ] + + // for visualize the regex, you can use https://regexper.com/ + usageMatchRegex = [ + // general jsx attrs + '[^\\w\\d](?:i18nKey=|FormattedMessage[ (]\\s*id=|t\\(\\s*)[\'"`]({key})[\'"`]', + '({key})<\\/Trans>', + ] + + refactorTemplates(keypath: string) { + return [ + `{t('${keypath}')}`, + `t('${keypath}')`, + keypath, + ] + } +} + +export default ReactI18nextFramework diff --git a/src/frameworks/react.ts b/src/frameworks/react-intl.ts similarity index 100% rename from src/frameworks/react.ts rename to src/frameworks/react-intl.ts From d0c7d7202f8ab02d310624cc6fc08143964a8716 Mon Sep 17 00:00:00 2001 From: Simeon Cheeseman Date: Tue, 1 Mar 2022 17:50:27 +0900 Subject: [PATCH 2/2] fix: remove other packages from react-intl --- src/frameworks/react-intl.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/frameworks/react-intl.ts b/src/frameworks/react-intl.ts index 8b6c796e..a8afa1b6 100644 --- a/src/frameworks/react-intl.ts +++ b/src/frameworks/react-intl.ts @@ -7,9 +7,7 @@ class ReactFramework extends Framework { detection= { packageJSON: [ - 'react-i18next', - 'react-intl', - 'next-i18next', + 'react-intl' ], }