{% hint style="info" %} Was introduced in v8.0.0. Not available in older versions. {% endhint %}
The NamespacesConsumer is a so called render prop. The component passes the t function to child function and triggers loading the translation files defined. Further it asserts the component gets rerendered on language change or on changes to the translations themselves.
{% hint style="info" %} To learn more about using the t function have a look at i18next documentation:
- essentials
- interpolation
- formatting
- plurals
- ... {% endhint %}
import React from 'react';
import { NamespacesConsumer } from 'react-i18next';
function TranslatableView() {
return (
<NamespacesConsumer ns={[
'defaultNamespace',
'anotherNamespace'
]}>
{
(t, { i18n, ready }) => (
<div>
<h1>{t('keyFromDefault')}</h1>
<p>{t('anotherNamespace:key.from.another.namespace', { /* options t options */ })}</p>
</div>
)
}
</NamespacesConsumer>
)
}
options | type (default) | description |
---|---|---|
wait | boolean (false) | assert all provided namespaces are loaded before rendering the component (can be set globally too). In most cases you like to set this to true. If not handling not ready by evaluating ready. |
nsMode | string ('default') | default: namespaces will be loaded and the first will be set as default |
bindI18n | string ('languageChanged loaded') | which events trigger a rerender, can be set to false or string of events |
bindStore | string ('added removed') | which events on store trigger a rerender, can be set to false or string of events |
omitBoundRerenders | boolean (true) | Does not trigger rerenders while state not ready - avoiding unneeded renders on init |
i18n | object (undefined) | pass i18next via options (useful for next.js usage) |
initialI18nStore | object (undefined) | pass in initial translations (useful for next.js usage) |
initialLanguage | string (undefined) | pass in initial language (useful for next.js usage) |