2.0.32 • Published 11 months ago

@dcentralab/language-provider v2.0.32

Weekly downloads
-
License
MIT
Repository
-
Last release
11 months ago

Language Provider and context

Instalation

npm install @dcentralab/language-provider

or

yarn add @dcentralab/language-provider

Getting started

import React, { useCallback } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { LangProvider } from '@dcentralab/language-provider';
import en from './services/translate/en.json';
import langManager from './services/translate/lang-manager';
import defaultMessages from './services/translate/defaultMessages';
import RoutesWrapper from './RoutesWrapper';
import { languageChanged } from './redux/actions/languageAction';

const App = () => {
  const dispatch = useDispatch();
  const onChangeLocale = useCallback((locale, messages) => {
    langManager.changeLocale(locale, messages);
    dispatch(languageChanged(locale));
  }, [dispatch]);

  const farmConfig = useSelector((state) => state.farm.farmConfig);
  const farmUniV3Config = useSelector((state) => state.uniV3.farm);

  return (
    <LangProvider enMessages={en} locales={langManager.locales} defaultRichTextElements={defaultMessages(farmConfig, farmUniV3Config)} onChangeLocale={onChangeLocale}>
      <RoutesWrapper />
    </LangProvider>
  );
};

export default App;

Imperative usage example

import React, { useState, useCallback, useEffect } from 'react';
import { useIntl } from 'react-intl';
import { langObserver } from '@dcentralab/language-provider';
import CloseRoundedIcon from '../Icons/CloseRoundedIcon';
import './LanguageSwapper.scss';
import { LANGUAGES } from '../../../constants/general';
import {
  getBrowserLang,
  setLangSwapperClosedLS,
  isLanguageSwapperShouldOpenLS,
} from '../../../services/translate/translateService';

const LanguageSwapper = () => {
  const [visible, setVisible] = useState(isLanguageSwapperShouldOpenLS());
  const [userBrowserLang] = useState(getBrowserLang());
  const [suggestLang, setSuggestLang] = useState(getBrowserLang());
  const { locale } = useIntl(); // Current lang

  useEffect(() => {
    if (suggestLang === locale) {
      setVisible(false);
    }
    // eslint-disable-next-line
  }, []);

  const handleCloseSwapper = useCallback(() => {
    setLangSwapperClosedLS();
    setVisible(false);
  }, []);

  const handleSwapper = useCallback(() => {
    langObserver.emit('SET_LOCALE', suggestLang);
    localStorage.setItem('dufLocale', suggestLang);
    if (suggestLang !== 'en') {
      setSuggestLang('en');
    } else {
      setSuggestLang(userBrowserLang);
    }
    // eslint-disable-next-line
  }, [suggestLang]);

  return (
    visible &&
      (
        <div className="language-swapper">
          <span className="text">{LANGUAGES[suggestLang].desc}</span>
          <span className="swapper" onClick={handleSwapper}>{LANGUAGES[suggestLang].title}</span>
          <span className="close-button" onClick={handleCloseSwapper}><CloseRoundedIcon /></span>
        </div>
      )
  );
};

export default LanguageSwapper;

Props and Interfaces

export type TLanguage = (typeof langmap)[keyof typeof langmap];

export type GetLocale = () => Promise<Record<string, string> | Record<string, MessageFormatElement[]>>;

export interface ILangContext {
  [key: TLanguage]: GetLocale
}

interface ILangProvider extends IntlConfig {
  children: React.ReactNode
  locales: ILangContext
  onChangeLocale?: (locale: string, messages: Record<string, string> | Record<string, MessageFormatElement[]>) => void
}```
2.0.31

11 months ago

2.0.32

11 months ago

2.0.30

1 year ago

2.0.29

1 year ago

2.0.28

1 year ago

2.0.27

1 year ago

2.0.0-alpha.7

1 year ago

2.0.0-alpha.8

1 year ago

2.0.0-alpha.9

1 year ago

2.0.3

1 year ago

2.0.0-alpha.11

1 year ago

2.0.0-alpha.3

1 year ago

2.0.2

1 year ago

2.0.0-alpha.10

1 year ago

2.0.0-alpha.4

1 year ago

2.0.5

1 year ago

2.0.0-alpha.5

1 year ago

2.0.4

1 year ago

2.0.0-alpha.6

1 year ago

2.0.7

1 year ago

2.0.6

1 year ago

2.0.0-alpha.0

1 year ago

2.0.9

1 year ago

2.0.0-alpha.1

1 year ago

2.0.8

1 year ago

2.0.0-alpha.2

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

2.0.0-alpha.12

1 year ago

1.3.35

1 year ago

2.0.15

1 year ago

2.0.16

1 year ago

2.0.13

1 year ago

2.0.1-alpha.0

1 year ago

2.0.14

1 year ago

2.0.11

1 year ago

2.0.12

1 year ago

2.0.10

1 year ago

2.0.19

1 year ago

2.0.17

1 year ago

2.0.18

1 year ago

2.0.26

1 year ago

2.0.24

1 year ago

2.0.25

1 year ago

2.0.22

1 year ago

2.0.23

1 year ago

2.0.20

1 year ago

2.0.21

1 year ago

1.3.32

1 year ago

1.3.34

1 year ago

1.3.31

1 year ago

1.3.30

1 year ago

1.3.28

1 year ago

1.3.29

1 year ago

1.3.26

1 year ago

1.3.27

1 year ago

1.3.25

1 year ago

1.3.24

1 year ago

1.3.22

1 year ago

1.3.23

1 year ago

1.3.21

1 year ago

1.3.20

1 year ago

1.3.18

1 year ago

1.3.19

1 year ago

1.3.17

1 year ago

1.3.15

1 year ago

1.3.16

1 year ago

1.3.13

1 year ago

1.3.14

1 year ago

1.3.12

1 year ago

1.3.11

2 years ago

1.3.10

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

0.3.54

2 years ago

1.3.2

2 years ago

0.3.53

2 years ago

1.3.1

2 years ago

1.2.9

2 years ago

1.3.0

2 years ago

1.2.8

2 years ago

1.2.7

2 years ago

1.2.6

2 years ago

1.2.5

2 years ago

0.3.52

2 years ago

1.2.0

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.1.34

2 years ago

0.3.51

2 years ago

1.1.9-alpha.0

2 years ago

1.0.4-alpha.0

2 years ago

1.1.29

2 years ago

1.1.28

2 years ago

1.0.23-alpha.0

2 years ago

1.1.14-alpha.0

2 years ago

1.0.18-alpha.0

2 years ago

1.1.30

2 years ago

1.0.0-alpha.0

2 years ago

1.1.33

2 years ago

1.1.32

2 years ago

1.1.31

2 years ago

1.1.18-alpha.0

2 years ago

1.1.11-alpha.0

2 years ago

1.0.27-alpha.0

2 years ago

1.1.5-alpha.0

2 years ago

1.0.10-alpha.0

2 years ago

1.1.22-alpha.0

2 years ago

1.0.14-alpha.4

2 years ago

1.0.14-alpha.3

2 years ago

1.0.14-alpha.5

2 years ago

1.1.1-alpha.0

2 years ago

1.0.14-alpha.0

2 years ago

1.0.14-alpha.2

2 years ago

1.0.14-alpha.1

2 years ago

1.0.22-alpha.0

2 years ago

0.3.50

2 years ago

1.1.15-alpha.0

2 years ago

1.0.17-alpha.0

2 years ago

1.0.7-alpha.0

2 years ago

1.1.19-alpha.0

2 years ago

1.0.3-alpha.0

2 years ago

0.3.42

2 years ago

0.3.41

2 years ago

1.0.13-alpha.0

2 years ago

0.3.40

2 years ago

1.0.26-alpha.0

2 years ago

0.3.49

2 years ago

0.3.48

2 years ago

1.1.12-alpha.0

2 years ago

0.3.47

2 years ago

0.3.46

2 years ago

0.3.45

2 years ago

0.3.44

2 years ago

0.3.43

2 years ago

1.1.6-alpha.0

2 years ago

1.1.21-alpha.0

2 years ago

1.1.2-alpha.0

2 years ago

1.1.27

2 years ago

1.1.26

2 years ago

1.1.25-alpha.0

2 years ago

1.1.25

2 years ago

1.1.16-alpha.0

2 years ago

0.3.31

2 years ago

0.3.30

2 years ago

0.3.39

2 years ago

0.3.38

2 years ago

0.3.37

2 years ago

1.1.7-alpha.0

2 years ago

0.3.36

2 years ago

1.0.6-alpha.0

2 years ago

0.3.35

2 years ago

0.3.34

2 years ago

0.3.33

2 years ago

0.3.32

2 years ago

0.3.29

2 years ago

1.0.21-alpha.0

2 years ago

1.0.2-alpha.0

2 years ago

1.1.3-alpha.0

2 years ago

1.1.3-alpha.2

2 years ago

1.0.9-alpha.0

2 years ago

0.3.28

2 years ago

0.3.27

2 years ago

0.3.26

2 years ago

1.0.25-alpha.0

2 years ago

1.0.16-alpha.0

2 years ago

1.0.29-alpha.0

2 years ago

1.0.12-alpha.0

2 years ago

1.1.24-alpha.0

2 years ago

1.0.19-alpha.0

2 years ago

1.0.5-alpha.0

2 years ago

1.1.8-alpha.0

2 years ago

1.1.20-alpha.0

2 years ago

1.1.13-alpha.0

2 years ago

1.0.1-alpha.0

2 years ago

1.0.24-alpha.0

2 years ago

1.0.20-alpha.0

2 years ago

1.1.17-alpha.0

2 years ago

1.1.10-alpha.0

2 years ago

1.1.4-alpha.0

2 years ago

1.0.28-alpha.0

2 years ago

1.0.8-alpha.0

2 years ago

1.1.0-alpha.0

2 years ago

1.0.11-alpha.0

2 years ago

1.1.23-alpha.0

2 years ago

1.0.15-alpha.0

2 years ago

0.3.25

2 years ago