diff --git a/src/extractor/parserReact/tokenMergers/useTranslateMerger.ts b/src/extractor/parserReact/tokenMergers/useTranslateMerger.ts index a7d19839..91e2ffdc 100644 --- a/src/extractor/parserReact/tokenMergers/useTranslateMerger.ts +++ b/src/extractor/parserReact/tokenMergers/useTranslateMerger.ts @@ -15,7 +15,10 @@ export const useTranslateMerger = { switch (state) { case S.Idle: - if (type === 'function.call' && token === 'useTranslate') { + if ( + type === 'function.call' && + (token === 'useTranslate' || token === 'getTranslate') + ) { return S.ExpectBracket; } break; diff --git a/test/unit/extractor/react/useTranslate.test.ts b/test/unit/extractor/react/useTranslate.test.ts index b046e20b..fdba4a79 100644 --- a/test/unit/extractor/react/useTranslate.test.ts +++ b/test/unit/extractor/react/useTranslate.test.ts @@ -20,7 +20,7 @@ async function extractReactKeys( describe.each(['js', 'ts', 'jsx', 'tsx'])('useTranslate (.%s)', (ext) => { const FILE_NAME = `test.${ext}`; - it('extracts from the t call with signature t(string))', async () => { + it('extracts from the t call with signature t(string) and useTranslate', async () => { const expected = [{ keyName: 'key1', line: 5 }]; const code = ` @@ -36,6 +36,22 @@ describe.each(['js', 'ts', 'jsx', 'tsx'])('useTranslate (.%s)', (ext) => { expect(extracted.keys).toEqual(expected); }); + it('extracts from the t call with signature t(string) and getTranslate', async () => { + const expected = [{ keyName: 'key1', line: 5 }]; + + const code = ` + import '@tolgee/react' + async function Test () { + const t = await getTranslate() + t('key1') + } + `; + + const extracted = await extractReactKeys(code, FILE_NAME); + expect(extracted.warnings).toEqual([]); + expect(extracted.keys).toEqual(expected); + }); + it('extracts from the t call with signature t(string, string)', async () => { const expected = [ { keyName: 'key1', defaultValue: 'default value', line: 5 },