UNPKG

react-gettext

Version:

Gettext implementation for React based project.

73 lines (59 loc) 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.gettext = gettext; exports.ngettext = ngettext; exports.xgettext = xgettext; exports.nxgettext = nxgettext; exports.default = void 0; var DELIMITER = "\x04"; // End of Transmission (EOT) function getTranslations(catalog) { return typeof catalog === 'function' ? catalog() : catalog; } function getPluralForm(plural, n) { // return 0 if n is not integer if (Number.isNaN(parseInt(n, 10))) { return 0; } // if pluralForm is function, use it to get plural form index if (typeof plural === 'function') { return plural(n); } // if pluralForm is string and contains only "n", "0-9", " ", "!=?:%+-/*><&|()" // characters, then we can "eval" it to calculate plural form if (typeof plural === 'string' && !plural.match(/[^n0-9 !=?:%+-/*><&|()]/i)) { /* eslint-disable no-new-func */ var calcPlural = Function('n', "return ".concat(plural)); /* eslint-enable no-new-func */ return +calcPlural(n); } return 0; } function gettext(catalog, message) { var messages = getTranslations(catalog); return Object.prototype.hasOwnProperty.call(messages, message) ? messages[message] : message; } function ngettext(catalog, plurality, singular, plural, n) { var messages = getTranslations(catalog); var pluralIndex = getPluralForm(plurality, n); var defaultValue = n > 1 ? plural : singular; return Object.prototype.hasOwnProperty.call(messages, singular) && Array.isArray(messages[singular]) && messages[singular].length > pluralIndex && pluralIndex >= 0 ? messages[singular][pluralIndex] : defaultValue; } function xgettext(catalog, message, context) { var messages = getTranslations(catalog); var key = context + DELIMITER + message; return Object.prototype.hasOwnProperty.call(messages, key) ? messages[key] : message; } function nxgettext(catalog, plurality, singular, plural, n, context) { var messages = getTranslations(catalog); var pluralIndex = getPluralForm(plurality, n); var defaultValue = n > 1 ? plural : singular; var key = context + DELIMITER + singular; return Object.prototype.hasOwnProperty.call(messages, key) && Array.isArray(messages[key]) && messages[key].length > pluralIndex && pluralIndex >= 0 ? messages[key][pluralIndex] : defaultValue; } var _default = { gettext: gettext, ngettext: ngettext, xgettext: xgettext, nxgettext: nxgettext }; exports.default = _default;