@zanomate/localize
v2020.1.0
Published
Components and helpers to provide translations in a React Application
Downloads
4
Readme
@zanomate / localize
Components and helpers to provide translations in a React Application
tl;dr
- fixed configuration:
- loads translations from /public/locales/{{lng}}/{{ns}}.json
- use i18next:
- react-i18next
- i18next-xhr-backend
- i18next-browser-languagedetector
Usage
Init i18next
Use the initI18n utility to initialize i18next with standard configurations.
import { initI18n } from '@zanomate/localize'
initI18n(
['en', 'it', 'es'], // languages
['common', 'profile'] // namespaces
)
| Parameter | Type | Default | Description | | --- | --- | --- | --- | | languages | string[] | ['en'] | Set of supported languages. The first element is considered as fallback. | | namespaces | string[] | ['translations'] | Set of supported namespaces. |
Provide localization
Use the Localization
component to provide translations over the application.
import { Localization } from '@zanomate/localize'
const App = () => (
<Localization>
// content
</Localization>
)
| Props | Type | Default | Description | | --- | --- | --- | --- | | defaultNS | string | 'translations' | [optional] Specify the default namespace. |
Translate labels
Use the Localized
component to translate labels.
import { Localized } from '@zanomate/localize'
const CustomComponent = () => (
<Localized label="awesome" />
)
Translations are rendered as simple text with no additional style or structure.
| Props | Type | Default | Description |
| --- | --- | --- | --- |
| label | string | - | Label to localize. |
| ns | string | - | [optional] Namespace to witch the label belongs. In case of no namespace specified, the defaultNS
of the Localization
component is used. |
| fillers | object | - | [optional] Maps of elements to fills placeholders in label. Fillers could be of type string, number or components. |
| lang | string | - | [optional] Language to override the current selected one. |
A more complex example.
// Hi, I'm {{name}} and I'm {{age}} years. Look at this {{component}}!
const CustomComponent = () => (
<Localized
label="my-fillable-label"
ns="profile"
fillers={{
name: 'Matteo',
age: 28,
component: <MyCustomFiller />
}}
/>
)