1.3.34 • Published 22 hours ago

@dcentralab/language-provider v1.3.34

Weekly downloads
-
License
MIT
Repository
-
Last release
22 hours 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
}```
1.3.32

23 hours ago

1.3.34

22 hours ago

1.3.31

13 days ago

1.3.30

20 days ago

1.3.28

20 days ago

1.3.29

20 days ago

1.3.26

22 days ago

1.3.27

22 days ago

1.3.25

1 month ago

1.3.24

1 month ago

1.3.22

1 month ago

1.3.23

1 month ago

1.3.21

1 month ago

1.3.20

1 month ago

1.3.18

1 month ago

1.3.19

1 month ago

1.3.17

2 months ago

1.3.15

2 months ago

1.3.16

2 months ago

1.3.13

2 months ago

1.3.14

2 months ago

1.3.12

2 months ago

1.3.11

3 months ago

1.3.10

3 months ago

1.3.9

3 months ago

1.3.8

3 months ago

1.3.7

3 months ago

1.3.6

3 months ago

1.3.5

3 months ago

1.3.4

3 months ago

1.3.3

3 months ago

0.3.54

4 months ago

1.3.2

4 months ago

0.3.53

4 months ago

1.3.1

4 months ago

1.2.9

5 months ago

1.3.0

5 months ago

1.2.8

5 months ago

1.2.7

5 months ago

1.2.6

5 months ago

1.2.5

5 months ago

0.3.52

6 months ago

1.2.0

6 months ago

1.2.4

6 months ago

1.2.3

6 months ago

1.2.2

6 months ago

1.2.1

6 months ago

1.1.34

6 months ago

0.3.51

6 months ago

1.1.9-alpha.0

9 months ago

1.0.4-alpha.0

11 months ago

1.1.29

6 months ago

1.1.28

6 months ago

1.0.23-alpha.0

10 months ago

1.1.14-alpha.0

8 months ago

1.0.18-alpha.0

11 months ago

1.1.30

6 months ago

1.0.0-alpha.0

11 months ago

1.1.33

6 months ago

1.1.32

6 months ago

1.1.31

6 months ago

1.1.18-alpha.0

8 months ago

1.1.11-alpha.0

9 months ago

1.0.27-alpha.0

10 months ago

1.1.5-alpha.0

9 months ago

1.0.10-alpha.0

11 months ago

1.1.22-alpha.0

7 months ago

1.0.14-alpha.4

11 months ago

1.0.14-alpha.3

11 months ago

1.0.14-alpha.5

11 months ago

1.1.1-alpha.0

10 months ago

1.0.14-alpha.0

11 months ago

1.0.14-alpha.2

11 months ago

1.0.14-alpha.1

11 months ago

1.0.22-alpha.0

10 months ago

0.3.50

7 months ago

1.1.15-alpha.0

8 months ago

1.0.17-alpha.0

11 months ago

1.0.7-alpha.0

11 months ago

1.1.19-alpha.0

7 months ago

1.0.3-alpha.0

11 months ago

0.3.42

9 months ago

0.3.41

9 months ago

1.0.13-alpha.0

11 months ago

0.3.40

9 months ago

1.0.26-alpha.0

10 months ago

0.3.49

7 months ago

0.3.48

7 months ago

1.1.12-alpha.0

9 months ago

0.3.47

7 months ago

0.3.46

7 months ago

0.3.45

8 months ago

0.3.44

9 months ago

0.3.43

9 months ago

1.1.6-alpha.0

9 months ago

1.1.21-alpha.0

7 months ago

1.1.2-alpha.0

10 months ago

1.1.27

6 months ago

1.1.26

6 months ago

1.1.25-alpha.0

6 months ago

1.1.25

6 months ago

1.1.16-alpha.0

8 months ago

0.3.31

11 months ago

0.3.30

11 months ago

0.3.39

10 months ago

0.3.38

10 months ago

0.3.37

10 months ago

1.1.7-alpha.0

9 months ago

0.3.36

10 months ago

1.0.6-alpha.0

11 months ago

0.3.35

10 months ago

0.3.34

10 months ago

0.3.33

10 months ago

0.3.32

10 months ago

0.3.29

11 months ago

1.0.21-alpha.0

10 months ago

1.0.2-alpha.0

11 months ago

1.1.3-alpha.0

10 months ago

1.1.3-alpha.2

10 months ago

1.0.9-alpha.0

11 months ago

0.3.28

11 months ago

0.3.27

11 months ago

0.3.26

11 months ago

1.0.25-alpha.0

10 months ago

1.0.16-alpha.0

11 months ago

1.0.29-alpha.0

10 months ago

1.0.12-alpha.0

11 months ago

1.1.24-alpha.0

7 months ago

1.0.19-alpha.0

11 months ago

1.0.5-alpha.0

11 months ago

1.1.8-alpha.0

9 months ago

1.1.20-alpha.0

7 months ago

1.1.13-alpha.0

8 months ago

1.0.1-alpha.0

11 months ago

1.0.24-alpha.0

10 months ago

1.0.20-alpha.0

10 months ago

1.1.17-alpha.0

8 months ago

1.1.10-alpha.0

9 months ago

1.1.4-alpha.0

10 months ago

1.0.28-alpha.0

10 months ago

1.0.8-alpha.0

11 months ago

1.1.0-alpha.0

10 months ago

1.0.11-alpha.0

11 months ago

1.1.23-alpha.0

7 months ago

1.0.15-alpha.0

11 months ago

0.3.25

11 months ago