Socket
Socket
Sign inDemoInstall

@iqoption/affiliate-redux-translations

Package Overview
Dependencies
12
Maintainers
4
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @iqoption/affiliate-redux-translations

translations utils for react-redux apps


Version published
Maintainers
4
Install size
101 kB
Created

Readme

Source

redux-translations

Translations utils for react-redux apps

Greenkeeper badge npm npm Travis Codecov license Commitizen friendly Libraries.io for GitHub

Install

npm i @iqoption/affiliate-redux-translations

Usage

Translations middleware

Create and config translations middleware and apply it.

import { createTranslationsMiddleware } from "@iqoption/affiliate-redux-translations";

// Change this function to yours
const functionThatReturnsPromiseWithDictionary = language =>
  Promise.resolve(
    language === "en" ? { hello: "Hello!" } : { hello: "Привет!" }
  );

const translationsMiddleware = createTranslationsMiddleware(
  functionThatReturnsPromiseWithDictionary
);

const store = createStore(rootReducer, applyMiddleware(translationsMiddleware));

Translations props

Wrap component with withTranslations function:

import withTranslations from "@iqoption/affiliate-redux-translations";

const MyComponent = ({ dictionary, currentLang, loadingLang, switchLang }) => (
  <div>
    Translated text: {dictionary["hello"]}
    <br />
    Current language: {currentLang}
    <br />
    Loading language: {loadingLang}
    <button onClick={() => switchLang("en")}>English</button>
    <br />
    <button onClick={() => switchLang("ru")}>Russian</button>
  </div>
);

const MyComponentTranslated = withTranslations(MyComponent);

You can change language not only in react-component:

import { switchLangActionCreator } from "@iqoption/affiliate-redux-translations";
store.dispatch(switchLangActionCreator("en"));

API

createTranslationsMiddleware(getDictionary, [options], [initialState])

Function, that creates redux-middleware for translations. Has next arguments:

  1. getDictionary (Function) - function with one argument type of string - language, that user is switching to, and returns promise with dictionary object.

  2. [options] (Object) - options object with next optional fields:

  • cache (Boolean) - should cache results of getDictionary, and do not call it if dictionary is already loaded. Default true.
  • updateCacheOnSwitch (Boolean) - when cache is true, should switch immediately to cached dictionary, but load dictionary in background one more time and replace old with the new one. Default false.
  • startSwitchCallback (Function) - callback for every language switching start. Run exactly in switch event, without waiting for fetching dictionary. Takes next arguments: loadingLang (String) and store. Default undefined.
  • endSwitchCallback (Function) - callback for every language switching end. Run exactly after fetching dictionary. Takes next arguments: loadedLang (String), dictionary (Object) and store. Default undefined.
  1. [initialState] (Object) - initial inner state object with next optional fields:
  • dictionaries (Object) - hash-table of dictionaries, where key is language name and value is dictionary. Default {}.
  • currentLang (String) - current language with fetched dictionary. Default null.
  • loadingLang (String) - language that user is switching to, but not fetched dictionary yet. Default null.

withTranslations(Component, [copyStaticMethods])

React component class wrapper that adds next props to wrapping component class (actually it returns new component class):

  1. currentLang (String) - language, which dictionary is currently using.

  2. loadingLang (String) - language, which dictionary is currently loading.

  3. dictionary (Object) - object, that is returned by getDictionary.

  4. switchLang (Function) - function, that switch language to passed one.

Arguments:

  1. Component (Function) - component that depends on props, listed above.

  2. copyStaticMethods (Boolean) - whether to copy static methods of Component or not. Default true.

switchLangActionCreator(language)

Redux action creator - function with one argument type of string, returns flux standard action (FSA), that you can dispatch whereever in your app (for example, when initialising your app).

patchState(changes, [updateComponents])

Patch translations inner state without dispatching redux action. Could be useful for server-side rendering or another cases where store.dispatch function is unreachable. Returns Promise, resolved when all components are updated (if updateComponents === true) or immediately. Has next arguments:

  1. changes (Object) - partial initial inner state object with next optional fields:
  • dictionaries (Object) - hash-table of dictionaries, where key is language name and value is dictionary.
  • currentLang (String) - current language with fetched dictionary.
  • loadingLang (String) - language that user is switching to, but not fetched dictionary yet.
  1. updateComponents (Boolean) - whether to update components or not.

Keywords

FAQs

Last updated on 27 May 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc