react-translate-maker
Version:
React translation module. Internationalize your great project.
83 lines (69 loc) • 2.27 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = LocaleProvider;
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _translateMaker = _interopRequireDefault(require("translate-maker"));
var _TranslateContext = _interopRequireDefault(require("./TranslateContext"));
var _children = _interopRequireDefault(require("./filters/children"));
function LocaleProvider(props) {
const {
translate: defaultTranslate,
locale,
namespace,
children,
controlled
} = props,
rest = (0, _objectWithoutProperties2.default)(props, ["translate", "locale", "namespace", "children", "controlled"]);
const [translate] = (0, _react.useState)(defaultTranslate || new _translateMaker.default(rest));
const [context, setContext] = (0, _react.useState)({
translate
});
if (!translate.hasFilter('children')) {
translate.addFilter('children', _children.default);
}
(0, _react.useEffect)(() => {
function updateContext() {
setContext({
translate
});
}
translate.on('locale', updateContext);
translate.on('changed', updateContext);
return () => {
translate.removeListener('locale', updateContext);
translate.removeListener('changed', updateContext);
};
}, [translate]);
(0, _react.useEffect)(() => {
if (controlled && locale) {
translate.setLocale(locale, namespace);
}
}, [controlled, locale, namespace]);
return _react.default.createElement(_TranslateContext.default.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