i18next-scanner
i18next-scanner copied to clipboard
Reading `context` dynamically per `tFunction`, `TransComponent`
🚀 Feature Proposal
Improve parser.js to read ConditionalExpression to parse context.
Motivation
My project heavily uses i18n and sometimes context is necessary.
Problem is that each translation will have different values for the context and only a few of the keys actually use a context, and the current parser parses tOptions only when attr.value.type is one of: Literal, Identifier or ObjectExpression.
Example
What I would like to do is:
const { t } = useTranslation();
// component
<Trans
i18nKey="some.key"
defaults="translated string"
tOptions={{context: isTrue ? 'contextValue' : 'somethingelse'}}
/>
// better yet,
<Trans
i18nKey="some.key"
defaults="translated string"
context={isTrue ? 'contextValue' : 'somethingelse'}
/>
t('some.key2', 'translated string2', {context: isTrue ? 'withContext' : undefined});
// scanned
{
"some.key": "translated string",
"some.key_contextValue: "translated string",
"some.key_somethingelse: "translated string",
"some.key2": "translated string2",
"some.key2_withContext": "translated string2",
}
Then, I would modify the translation with context accordingly.
If you like you could try if it works with: https://github.com/i18next/i18next-cli