Skip to content
New issue

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

Reload translations whenever namespaces passed to useTranslation() change #878

Merged

Conversation

nicolaslohrer
Copy link

@nicolaslohrer nicolaslohrer commented Jun 20, 2019

When dynamically changing the namespaces passed to useTranslation() over time, they are now reloaded and trigger a re-render. This reimplements the behavior first introduced in #523 as it was likely broken in the release of the new hooks-based API.

See #817 (comment) and #520 for context.

@coveralls
Copy link

Coverage Status

Coverage remained the same at 91.983% when pulling d4b4ec4 on nicolasschabram:feature/master_reloadNamespacesOnChange into 21ed9bc on i18next:master.

@@ -74,7 +74,7 @@ export function useTranslation(ns, props = {}) {
if (bindI18nStore && i18n)
bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));
};
}, []); // define props to trigger using effect on rerender (none here)
}, [namespaces.join()]); // re-run effect whenever list of namespaces changes
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought it might be safer not to rely on object identity in case people pass inlined arrays like useTranslation(["x", "y"]) that are recreated on every render. That's why I'm turning the namespaces array into a string first.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes...saw that...think that's rather clever

@jamuhl jamuhl merged commit d946ee8 into i18next:master Jun 20, 2019
@jamuhl
Copy link
Member

jamuhl commented Jun 20, 2019

was published in react-i18next@10.11.2

This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants