react-translate-maker
Version:
React translation module. Internationalize your great project.
76 lines (60 loc) • 1.97 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = LocaleSwitch;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _react = require("react");
var _TranslateContext = _interopRequireDefault(require("./TranslateContext"));
function LocaleSwitch(props) {
var onError = props.onError,
onChange = props.onChange,
children = props.children;
var _useContext = (0, _react.useContext)(_TranslateContext.default),
translate = _useContext.translate;
var handleChange = (0, _react.useCallback)(
/*#__PURE__*/
function () {
var _ref = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(locale) {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
_context.next = 3;
return translate.setLocale(locale);
case 3:
if (onChange) {
onChange(locale);
}
_context.next = 9;
break;
case 6:
_context.prev = 6;
_context.t0 = _context["catch"](0);
if (onError) {
onError(_context.t0);
}
case 9:
case "end":
return _context.stop();
}
}
}, _callee, null, [[0, 6]]);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}(), []);
return children({
locale: translate.getLocale(),
changeLocale: handleChange
});
}
LocaleSwitch.defaultProps = {
onError: undefined,
onChange: undefined
};
//# sourceMappingURL=LocaleSwitch.js.map