You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.1 KiB
JavaScript

import PropTypes from 'prop-types';
import { useState, useEffect } from 'react';
// third-party
import { IntlProvider } from 'react-intl';
import useConfig from 'hooks/useConfig';
// load locales files
const loadLocaleData = (locale) => {
switch (locale) {
case 'fr':
return import('utils/locales/fr.json');
case 'ro':
return import('utils/locales/ro.json');
case 'zh':
return import('utils/locales/zh.json');
default:
return import('utils/locales/en.json');
}
};
// ==============================|| LOCALIZATION ||============================== //
const Locales = ({ children }) => {
const { locale } = useConfig();
const [messages, setMessages] = useState();
useEffect(() => {
loadLocaleData(locale).then((d) => {
setMessages(d.default);
});
}, [locale]);
return (
<>
{messages && (
<IntlProvider locale={locale} defaultLocale="en" messages={messages}>
{children}
</IntlProvider>
)}
</>
);
};
Locales.propTypes = {
children: PropTypes.node
};
export default Locales;