2.0.32 • Published 8 months ago

@dcentralab/language-provider v2.0.32

Weekly downloads
-
License
MIT
Repository
-
Last release
8 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

8 months ago

2.0.32

8 months ago

2.0.30

10 months ago

2.0.29

10 months ago

2.0.28

11 months ago

2.0.27

11 months 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

12 months ago

2.0.6

1 year ago

2.0.0-alpha.0

1 year ago

2.0.9

12 months ago

2.0.0-alpha.1

1 year ago

2.0.8

12 months 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

11 months ago

2.0.16

11 months ago

2.0.13

11 months ago

2.0.1-alpha.0

1 year ago

2.0.14

11 months ago

2.0.11

12 months ago

2.0.12

12 months ago

2.0.10

12 months ago

2.0.19

11 months ago

2.0.17

11 months ago

2.0.18

11 months ago

2.0.26

11 months ago

2.0.24

11 months ago

2.0.25

11 months ago

2.0.22

11 months ago

2.0.23

11 months ago

2.0.20

11 months ago

2.0.21

11 months 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

1 year ago

1.3.10

1 year ago

1.3.9

1 year ago

1.3.8

1 year ago

1.3.7

1 year ago

1.3.6

1 year ago

1.3.5

1 year ago

1.3.4

1 year ago

1.3.3

1 year ago

0.3.54

1 year ago

1.3.2

1 year ago

0.3.53

1 year ago

1.3.1

1 year 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