@davidqhr/react-i18nify

1.11.14 • Public • Published

react-i18nify

Simple i18n translation and localization components and helpers for React applications.

NPM version Downloads

A working example of this package can be found here at RunKit.

Table of contents

Installation

Install by using npm:

$ npm i --save react-i18nify

Getting started

Start by loading setting translations and locale to be used:

const { I18n } = require("react-i18nify");

I18n.setTranslations({
  en: {
    application: {
      title: "Awesome app with i18n!",
      hello: "Hello, %{name}!"
    },
    date: {
      long: "MMMM Do, YYYY"
    },
    export: "Export %{count} items",
    export_0: "Nothing to export",
    export_1: "Export %{count} item",
    two_lines: "Line 1<br />Line 2"
  },
  nl: {
    application: {
      title: "Toffe app met i18n!",
      hello: "Hallo, %{name}!"
    },
    date: {
      long: "D MMMM YYYY"
    },
    export: "Exporteer %{count} dingen",
    export_0: "Niks te exporteren",
    export_1: "Exporteer %{count} ding",
    two_lines: "Regel 1<br />Regel 2"
  }
});

I18n.setLocale("nl");

Now you're all set up to start unleashing the power of react-i18nify!

Components

The easiest way to translate or localize in your React application is by using the Translate and Localize components:

const { Translate, Localize } = require('react-i18nify');

<Translate value="application.title" />
  // => <span>Toffe app met i18n!</span>
<Translate value="application.title" style={{ fontWeight: 'bold', fontSize: '14px' }} />
  // => <span style="font-weight:bold;font-size:14px;">Toffe app met i18n!</span>
<Translate value="application.hello" name="Aad" />
  // => <span>Hallo, Aad!</span>
<Translate value="export" count={1} />
  // => <span>Exporteer 1 ding</span>
<Translate value="export" count={2} />
  // => <span>Exporteer 2 dingen</span>
<Translate value="two_lines" dangerousHTML />
  // => <span>Regel 1<br />Regel 2</span>
<Translate value="application.title" tag="h1" />
 // => <h1>Toffe app met i18n!</h1>

<Localize value="2015-09-03" dateFormat="date.long" />
  // => <span>3 september 2015</span>
<Localize value="2015-09-03" dateFormat="date.long" tag="div" />
  // => <div>3 september 2015</div>
<Localize value={10/3} options={{style: 'currency', currency: 'EUR', minimumFractionDigits: 2, maximumFractionDigits: 2}} />
  // => <span>€ 3,33</span>

Helpers

If for some reason, you cannot use the components, you can use the I18n.t and I18n.l helpers instead. These helpers however will not be re-rendered automatically in any way, so if you use those, it's up to you to handle state change.

const { I18n } = require("react-i18nify");

I18n.t("application.title");
// => Toffe app met i18n!
I18n.t("application.hello", { name: "Aad" });
// => Hallo, Aad!'
I18n.t("export", { count: 0 });
// => Niks te exporteren
I18n.t("application.unknown_translation");
// => unknown_translation
I18n.t("application", { name: "Aad" });
// => {hello: 'Hallo, Aad!', title: 'Toffe app met i18n!'}

I18n.l(1385856000000, { dateFormat: "date.long" });
// => 1 december 2013
I18n.l(Math.PI, { maximumFractionDigits: 2 });
// => 3,14

API Reference

I18n

Main module for handling all configurations and translations, with the following functions:

setLocale(locale, rerenderComponents = true)

The used locale can be set with this function. By default, changing the locale will re-render all components. This behavior can be prevented by providing false as a second argument.

setTranslations(translations, rerenderComponents = true)

The used translations can be set with this function. By default, changing the translations will re-render all components. This behavior can be prevented by providing false as a second argument.

setLocaleGetter(fn)

Alternatively to using setLocale, you can provide a callback to return the locale with setLocaleGetter:

const { I18n } = require("react-i18nify");

const locale = () => "nl";

I18n.setLocaleGetter(locale);

setTranslationsGetter(fn)

Alternatively to using setTranslations, you can provide a callback to return the translations with setTranslationsGetter:

const { I18n } = require('react-i18nify');

const translation = () => ({
  en: { ... },
  nl: { ... }
});

I18n.setTranslationsGetter(translation);

setHandleMissingTranslation(fn)

By default, when a translation is missing, the translation key will be returned in a slightly formatted way, as can be seen in the I18n.t('application.unknown_translation'); example above. You can however overwrite this behavior by setting a function to handle missing translations.

const { I18n } = require("react-i18nify");

const myHandleMissingTranslation = (key, replacements) =>
  `Missing translation: ${key}`;

I18n.setHandleMissingTranslation(myHandleMissingTranslation);

I18n.t("application.unknown_translation");
// => Missing translation: application.unknown_translation

t(key, replacements = {})

Helper function to translate a key, given an optional set of replacements. See the above Helpers section for examples.

l(value, options)

Helper function to localize a value, given a set of options. See the above Helpers section for examples.

For number formatting, the localize helper supports all options as provided by the Javascript built-in Intl.NumberFormat object. For the full list of options, see https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat.

forceComponentsUpdate()

This function can be called to force a re-render of all I18n components.

<Translate>

React translate component, with the following props:

value (string)

The translation key to translate.

dangerousHTML (bool)

If true, HTML is allowed in the translation. Defaults to false.

className (string)

Optional CSS classname.

tag (string|func)

HTML element to render the translation in. Defaults to span.

style (object)

Optional inline styling

Other props

All other provided props will be used as replacements for the translation.

<Localize>

React localize component, with the following props:

value (number|string|object)

The number or date to localize.

options (object)

When localizing numbers, the localize component supports all options as provided by the Javascript built-in Intl.NumberFormat object. For the full list of options, see https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat.

dangerousHTML (bool)

If true, HTML is allowed in the localization. Defaults to false.

className (string)

Optional CSS classname.

tag (string|func)

HTML element to render the localization in. Defaults to span.

style (object)

Optional inline styling

Package Sidebar

Install

npm i @davidqhr/react-i18nify

Weekly Downloads

8

Version

1.11.14

License

ISC

Unpacked Size

36.6 kB

Total Files

15

Last publish

Collaborators

  • davidqhr