We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
When using react-i18next <Trans /> component, prop values provides no intellisense and throws no TS errors.
<Trans />
values
I followed these tutorials:
/src/@types/resources.d.ts
i18next-resources-for-ts interface -i ./public/locales/en -o ./src/@types/resources.d.ts
// resources.d.ts interface Resources { "translation": { ... "title": "Title: <strong>{{appName}}</strong>", ... }, ... } export default Resources;
/src/@types/i18next.d.ts
// i18next.d.ts import Resources from './resources' declare module 'i18next' { interface CustomTypeOptions { defaultNS: 'translation'; resources: Resources; allowObjectInHTMLChildren: true; } }
/public/locales/en/translation.json
{ "title": "Title: <strong>{{appName}}</strong>" }
<Trans t={t} i18nKey="title" values={{ appName: 'Super duper app', // wrong value key but no TS error // apName: 'Super duper app', }} />
or this:
<Trans t={t} i18nKey="title" > {/* wrong value key but no TS error */} Title <strong>{{apName: 'Super duper app'}}</strong> </Trans>
i18nKey had good intellisense and threw TS error when I typed a different key but wrong values key didn't throw any error.
i18nKey
I would expect same error as when using t function with wrong value keys:
t
{/* wrong value key with correct TS error */} {t('title', { apName: appName })}
throws error:
Argument of type '["title", { apName: "Super duper app"; }]' is not assignable to parameter of type '[key: "title" | "title"[], options?: ({ readonly apName: "Super duper app"; } & { appName: unknown; }) | undefined] | [key: string | string[], options: { readonly apName: "Super duper app"; } & $Dictionary & { ...; }] | [key: ...]'. Type '["title", { apName: "Super duper app"; }]' is not assignable to type '[key: string | string[], defaultValue: string, options?: ({ readonly apName: "Super duper app"; } & $Dictionary) | undefined]'. Type at position 1 in source is not compatible with type at position 1 in target. Type '{ apName: "Super duper app"; }' is not assignable to type 'string'.
Thanks
P.S.: If this issue belongs to react-i18next package, please let me know and I'll move it there.
The text was updated successfully, but these errors were encountered:
Yes, this belongs to react-i18next, but to just answer you here... the types are safe, since it checks for the i18nKey to exist...
Sorry, something went wrong.
If anyone has time, feel free to open a PR to address this issue
following up on this.. is there any way possible to have typesafe translation for nested react components? cc: @marcalexiei @adrai 👀
Feel free to try to create a PR for this, if you like.
No branches or pull requests
🐛 Bug Report
When using react-i18next
<Trans />
component, propvalues
provides no intellisense and throws no TS errors.To Reproduce
I followed these tutorials:
/src/@types/resources.d.ts
withi18next-resources-for-ts interface -i ./public/locales/en -o ./src/@types/resources.d.ts
script:/src/@types/i18next.d.ts
:/public/locales/en/translation.json
or this:
i18nKey
had good intellisense and threw TS error when I typed a different key but wrongvalues
key didn't throw any error.Expected behavior
I would expect same error as when using
t
function with wrong value keys:throws error:
Your Environment
Thanks
P.S.: If this issue belongs to react-i18next package, please let me know and I'll move it there.
The text was updated successfully, but these errors were encountered: