@commercetools-frontend/i18n
Version:
463 lines (443 loc) • 19.7 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _pt = require('prop-types');
var react = require('react');
var sentry = require('@commercetools-frontend/sentry');
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
var _Promise = require('@babel/runtime-corejs3/core-js-stable/promise');
var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
var _Object$entries = require('@babel/runtime-corejs3/core-js-stable/object/entries');
var _Object$assign = require('@babel/runtime-corejs3/core-js-stable/object/assign');
var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
var jsxRuntime = require('@emotion/react/jsx-runtime');
var reactIntl = require('react-intl');
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var _pt__default = /*#__PURE__*/_interopDefault(_pt);
var _Promise__default = /*#__PURE__*/_interopDefault(_Promise);
var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
var _Object$entries__default = /*#__PURE__*/_interopDefault(_Object$entries);
var _Object$assign__default = /*#__PURE__*/_interopDefault(_Object$assign);
var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
// NOTE: This string will be replaced on build time with the package version.
var version = "24.2.1";
// @ts-nocheck
/* THIS IS A GENERATED FILE */
async function loadMomentLocales(locale) {
const lowercaseLocale = locale.toLowerCase();
switch (lowercaseLocale) {
case 'de':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/de')); });
break;
case 'de-at':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/de-at')); });
break;
case 'de-be':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/de')); });
break;
case 'de-ch':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/de-ch')); });
break;
case 'de-de':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/de')); });
break;
case 'de-li':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/de')); });
break;
case 'de-lu':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/de')); });
break;
case 'en-au':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/en-au')); });
break;
case 'en-ca':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/en-ca')); });
break;
case 'en-gb':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/en-gb')); });
break;
case 'en-ie':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/en-ie')); });
break;
case 'en-in':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/en-in')); });
break;
case 'en-nz':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/en-nz')); });
break;
case 'en-sg':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/en-sg')); });
break;
case 'es':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-ar':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-bo':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-cl':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-co':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-cr':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-cu':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-do':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es-do')); });
break;
case 'es-ea':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-ec':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-es':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-gq':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-gt':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-hn':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-ic':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-mx':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es-mx')); });
break;
case 'es-ni':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-pa':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-pe':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-pr':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-py':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-sv':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-uy':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'es-ve':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/es')); });
break;
case 'fr-fr':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/fr')); });
break;
case 'pt-br':
await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('moment/dist/locale/pt-br')); });
break;
}
}
const extractLanguageTagFromLocale = locale => _includesInstanceProperty__default["default"](locale).call(locale, '-') ? locale.split('-')[0] : locale;
const isStructuredJson = message => message?.string !== undefined;
const parseChunkImport = chunkImport => {
var _context;
// Prefer loading `default` (for ESM bundles) and
// fall back to normal import (for CJS bundles).
const contents = chunkImport.default || chunkImport;
return _reduceInstanceProperty__default["default"](_context = _Object$entries__default["default"](contents)).call(_context, (messages, _ref) => {
let _ref2 = _slicedToArray(_ref, 2),
messageKey = _ref2[0],
messageValue = _ref2[1];
const messageAsString = isStructuredJson(messageValue) ? messageValue.string : messageValue;
messages[messageKey] = messageAsString;
return messages;
}, {});
};
const mergeMessages = function () {
for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {
messages[_key] = arguments[_key];
}
return _Object$assign__default["default"]({}, ...messages);
};
const mapLocaleToIntlLocale = locale => {
if (_startsWithInstanceProperty__default["default"](locale).call(locale, 'de')) return 'de';
if (_startsWithInstanceProperty__default["default"](locale).call(locale, 'es')) return 'es';
if (_startsWithInstanceProperty__default["default"](locale).call(locale, 'fr')) return 'fr-FR';
if (locale === 'pt-BR') return 'pt-BR';
return 'en';
};
const getUiKitChunkImport = locale => {
const intlLocale = mapLocaleToIntlLocale(locale);
switch (intlLocale) {
case 'de':
return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-ui-kit-locale-de" */'@commercetools-uikit/i18n/compiled-data/de.json')); });
case 'es':
return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-ui-kit-locale-es" */'@commercetools-uikit/i18n/compiled-data/es.json')); });
case 'fr-FR':
return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-ui-kit-locale-fr-FR" */'@commercetools-uikit/i18n/compiled-data/fr-FR.json')); });
case 'pt-BR':
return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-ui-kit-locale-pt-BR" */'@commercetools-uikit/i18n/compiled-data/pt-BR.json')); });
default:
return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-ui-kit-locale-en" */'@commercetools-uikit/i18n/compiled-data/en.json')); });
}
};
const getAppKitChunkImport = locale => {
const intlLocale = mapLocaleToIntlLocale(locale);
switch (intlLocale) {
case 'de':
return Promise.resolve().then(function () { return require(/* webpackChunkName: "i18n-app-kit-locale-de" */'./de-3a2914d0.cjs.dev.js'); });
case 'es':
return Promise.resolve().then(function () { return require(/* webpackChunkName: "i18n-app-kit-locale-es" */'./es-30b341fa.cjs.dev.js'); });
case 'fr-FR':
return Promise.resolve().then(function () { return require(/* webpackChunkName: "i18n-app-kit-locale-fr-FR" */'./fr-FR-a92e5ae5.cjs.dev.js'); });
case 'pt-BR':
return Promise.resolve().then(function () { return require(/* webpackChunkName: "i18n-app-kit-locale-pt-BR" */'./pt-BR-1d56e80d.cjs.dev.js'); });
default:
return Promise.resolve().then(function () { return require(/* webpackChunkName: "i18n-app-kit-locale-en" */'./en-40085af7.cjs.dev.js'); });
}
};
const getCommunityKitChunkImport = async locale => {
const intlLocale = mapLocaleToIntlLocale(locale);
switch (intlLocale) {
case 'de':
return await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-community-kit-locale-de" */'@commercetools-community-kit/i18n/compiled-data/de.json')); });
case 'es':
return await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-community-kit-locale-es" */'@commercetools-community-kit/i18n/compiled-data/es.json')); });
case 'fr-FR':
return await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-community-kit-locale-fr-FR" */'@commercetools-community-kit/i18n/compiled-data/fr-FR.json')); });
default:
return await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(/* webpackChunkName: "i18n-community-kit-locale-en" */'@commercetools-community-kit/i18n/compiled-data/en.json')); });
}
};
// Use default (lazy) so that we will receive one chunk per
// locale. https://webpack.js.org/api/module-methods/#import-
async function loadI18n(locale) {
const _await$Promise$all = await _Promise__default["default"].all([
// Load moment localizations
loadMomentLocales(locale),
// Load ui-kit translations
getUiKitChunkImport(locale),
// Load app-kit translations
getAppKitChunkImport(locale),
// Load community-kit translations
getCommunityKitChunkImport(locale)]),
_await$Promise$all2 = _slicedToArray(_await$Promise$all, 4),
uiKitChunkImport = _await$Promise$all2[1],
appKitChunkImport = _await$Promise$all2[2],
communityKitChunkImport = _await$Promise$all2[3];
// Prefer loading `default` (for ESM bundles) and
// fall back to normal import (for CJS bundles).
return mergeMessages(parseChunkImport(uiKitChunkImport), parseChunkImport(appKitChunkImport), parseChunkImport(communityKitChunkImport));
}
const initialState = {
isLoading: true,
messages: undefined,
error: undefined
};
// Low level hook to load messages for a specific locale. The loading is async
// because it's assumed that the translation files are dynamically imported (code splitted).
const useAsyncIntlMessages = _ref => {
let locale = _ref.locale,
loader = _ref.loader;
const _useState = react.useState(initialState),
_useState2 = _slicedToArray(_useState, 2),
state = _useState2[0],
setState = _useState2[1];
react.useEffect(() => {
let _isUnmounting = false;
async function load(_locale) {
try {
if (!_isUnmounting) {
const messages = await loader(_locale);
setState({
isLoading: false,
messages
});
}
} catch (error) {
if (error instanceof Error) {
setState({
isLoading: false,
error
});
}
}
}
if (locale) load(locale);
return () => {
_isUnmounting = true;
};
}, [locale, loader]);
return state;
};
const getMessagesForLocale = (data, locale) => {
if (!data || !locale) return {};
if (data[locale]) return data[locale];
const fallbackLanguage = extractLanguageTagFromLocale(locale);
return data[fallbackLanguage];
};
const useAsyncLocaleData = _ref => {
let locale = _ref.locale,
applicationMessages = _ref.applicationMessages;
const loadApplicationMessages = react.useCallback(async locale => {
if (typeof applicationMessages === 'function') {
return await applicationMessages(locale);
}
return getMessagesForLocale(applicationMessages, locale);
},
// NOTE: we assume that the `applicationMessages` argument never changes.
// Therefore, we disable the dependency array to not depend on that argument.
// This is important, to avoid potential infinite loops.
// eslint-disable-next-line react-hooks/exhaustive-deps
[]);
const messagesFromKitResult = useAsyncIntlMessages({
locale,
loader: loadI18n
});
const applicationMessagesResult = useAsyncIntlMessages({
locale,
loader: loadApplicationMessages
});
// Merge the loaded messages into one
return {
isLoading: messagesFromKitResult.isLoading || applicationMessagesResult.isLoading,
messages: mergeMessages(messagesFromKitResult.messages ?? {}, applicationMessagesResult.messages ?? {}),
error: messagesFromKitResult.error ?? applicationMessagesResult.error
};
};
const AsyncLocaleData = props => {
const _useAsyncLocaleData = useAsyncLocaleData(props),
isLoading = _useAsyncLocaleData.isLoading,
messages = _useAsyncLocaleData.messages,
error = _useAsyncLocaleData.error;
react.useEffect(() => {
if (error) sentry.reportErrorToSentry(error, {});
}, [error]);
return jsxRuntime.jsx(jsxRuntime.Fragment, {
children: props.children({
isLoading,
locale: isLoading ? undefined : props.locale,
messages: error ? undefined : messages
})
});
};
AsyncLocaleData.propTypes = {
locale: _pt__default["default"].string,
applicationMessages: _pt__default["default"].oneOfType([_pt__default["default"].objectOf(_pt__default["default"].any), _pt__default["default"].func]).isRequired,
children: _pt__default["default"].func.isRequired
};
// TODO: move it to its own package, so that other people can also use it?
// Selection of shared messages, to avoid duplicating translations.
// Avoid changing the message id, otherwise you need to translate them again in Transifex.
const messages = reactIntl.defineMessages({
cancel: {
id: 'AppKit.Shared.cancel',
defaultMessage: 'Cancel'
},
revert: {
id: 'AppKit.Shared.revert',
defaultMessage: 'Revert'
},
confirm: {
id: 'AppKit.Shared.confirm',
defaultMessage: 'Confirm'
},
save: {
id: 'AppKit.Shared.save',
defaultMessage: 'Save'
},
update: {
id: 'AppKit.Shared.update',
defaultMessage: 'Update'
},
create: {
id: 'AppKit.Shared.create',
defaultMessage: 'Create'
},
delete: {
id: 'AppKit.Shared.delete',
defaultMessage: 'Delete'
},
add: {
id: 'AppKit.Shared.add',
defaultMessage: 'Add'
},
remove: {
id: 'AppKit.Shared.remove',
defaultMessage: 'Remove'
},
close: {
id: 'AppKit.Shared.close',
defaultMessage: 'Close'
},
edit: {
id: 'AppKit.Shared.edit',
defaultMessage: 'Edit'
},
open: {
id: 'AppKit.Shared.open',
defaultMessage: 'Open'
},
activate: {
id: 'AppKit.Shared.activate',
defaultMessage: 'Activate'
},
deactivate: {
id: 'AppKit.Shared.deactivate',
defaultMessage: 'Deactivate'
},
active: {
id: 'AppKit.Shared.active',
defaultMessage: 'Active'
},
inactive: {
id: 'AppKit.Shared.inactive',
defaultMessage: 'Inactive'
},
enable: {
id: 'AppKit.Shared.enable',
defaultMessage: 'Enable'
},
disable: {
id: 'AppKit.Shared.disable',
defaultMessage: 'Disable'
}
});
exports.AsyncLocaleData = AsyncLocaleData;
exports.isStructuredJson = isStructuredJson;
exports.mapLocaleToIntlLocale = mapLocaleToIntlLocale;
exports.mergeMessages = mergeMessages;
exports.parseChunkImport = parseChunkImport;
exports.sharedMessages = messages;
exports.useAsyncIntlMessages = useAsyncIntlMessages;
exports.useAsyncLocaleData = useAsyncLocaleData;
exports.version = version;