react-translate-maker
Version:
React translation module. Internationalize your great project.
67 lines (62 loc) • 1.78 kB
JavaScript
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
import React, { useEffect, useState } from 'react';
import Translate from 'translate-maker';
import TranslateContext from './TranslateContext';
import childrenFilter from './filters/children';
export default function LocaleProvider(props) {
const {
translate: defaultTranslate,
locale,
namespace,
children,
controlled
} = props,
rest = _objectWithoutProperties(props, ["translate", "locale", "namespace", "children", "controlled"]);
const [translate] = useState(defaultTranslate || new Translate(rest));
const [context, setContext] = useState({
translate
});
if (!translate.hasFilter('children')) {
translate.addFilter('children', childrenFilter);
}
useEffect(() => {
function updateContext() {
setContext({
translate
});
}
translate.on('locale', updateContext);
translate.on('changed', updateContext);
return () => {
translate.removeListener('locale', updateContext);
translate.removeListener('changed', updateContext);
};
}, [translate]);
useEffect(() => {
if (controlled && locale) {
translate.setLocale(locale, namespace);
}
}, [controlled, locale, namespace]);
return React.createElement(TranslateContext.Provider, {
value: context
}, children);
}
LocaleProvider.defaultProps = {
controlled: true
/*
locale: undefined,
namespace: undefined,
locales: undefined,
cache: undefined,
data: undefined,
adapter: undefined,
dotNotation: undefined,
mode: undefined,
references: undefined,
variables: undefined,
combinations: undefined,
filters: undefined,
translate: undefined,
*/
};
//# sourceMappingURL=LocaleProvider.js.map