UNPKG

i18next-pseudoloc

Version:
267 lines (260 loc) 9.2 kB
/*! * i18next-pseudoloc v1.0.1 * MIT Licensed */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["psuedoloc"] = factory(); else root["psuedoloc"] = factory(); })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1); /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var CONST = __webpack_require__(2); var PseudoLoc = /*#__PURE__*/function () { function PseudoLoc(_ref) { var _ref$lengther = _ref.lengther, lengther = _ref$lengther === void 0 ? 2 : _ref$lengther, _ref$enabled = _ref.enabled, enabled = _ref$enabled === void 0 ? true : _ref$enabled, _ref$enableCJK = _ref.enableCJK, enableCJK = _ref$enableCJK === void 0 ? true : _ref$enableCJK, _ref$sourceLocale = _ref.sourceLocale, sourceLocale = _ref$sourceLocale === void 0 ? 'en' : _ref$sourceLocale, _ref$repeatedLetters = _ref.repeatedLetters, repeatedLetters = _ref$repeatedLetters === void 0 ? CONST.vowelChars : _ref$repeatedLetters, _ref$pseudoCharObject = _ref.pseudoCharObject, pseudoCharObject = _ref$pseudoCharObject === void 0 ? CONST.pseudoChars : _ref$pseudoCharObject; this.name = 'pseudoloc'; this.type = 'postProcessor'; this.options = { enabled: enabled, lengther: lengther, enableCJK: enableCJK, sourceLocale: sourceLocale, repeatedLetters: repeatedLetters, characters: pseudoCharObject }; } var _proto = PseudoLoc.prototype; _proto.setOptions = function setOptions(options) { this.options = _extends({}, this.options, options); }; _proto.process = function process(value, key, options, translator) { var _this = this; if (translator.language && this.options.sourceLocale !== translator.language || !this.options.enabled) { return value; } var bracketCount = 0; var processedValue = value.split('').map(function (letter) { if (letter === '}') { bracketCount = 0; return letter; } if (letter === '{') { bracketCount++; return letter; } if (bracketCount === 2) return letter; if (_this.options.repeatedLetters.indexOf(letter) !== -1) { return _this.options.characters[letter].repeat(_this.options.lengther); } else { if (letter === '.') { return '。'; // japanese period(full stop) } else if (letter === '?') { return '¿'; // spanish inverted mark of interrogation } else if (letter === '“') { return '„'; // german opening quotation } else { return _this.options.characters[letter] || letter; } } }).join(''); return CONST.stringMarker({ string: processedValue, enableCJK: this.options.enableCJK }); }; return PseudoLoc; }(); /* harmony default export */ __webpack_exports__["default"] = (PseudoLoc); /***/ }), /* 2 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pseudoChars", function() { return pseudoChars; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "vowelChars", function() { return vowelChars; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stringMarker", function() { return stringMarker; }); var pseudoChars = { a: 'ā', b: 'ḅ', c: 'ĉ', d: 'ď', e: 'ė', f: 'ϝ', g: 'ḡ', h: 'ĥ', i: 'ĩ', j: 'ĵ', k: 'ķ', l: 'ḽ', m: 'ṃ', n: 'ň', o: 'ṓ', p: 'ṗ', q: 'ʠ', r: 'ŗ', s: 'ş', t: 'ŧ', u: 'ṵ', v: 'ṽ', w: 'ẁ', x: 'ẋ', y: 'ẏ', z: 'ź', A: 'Ą', B: 'β', C: 'Ḉ', D: 'Đ', E: 'Ḛ', F: 'Ḟ', G: 'Ģ', H: 'Ħ', I: 'Ḭ', J: 'Ĵ', K: 'Ķ', L: 'Ŀ', M: 'Ṁ', N: 'Ň', O: 'Ő', P: 'Ṕ', Q: 'Ǫ', R: 'Ṛ', S: 'Ŝ', T: 'Ŧ', U: 'Ů', V: 'Ṿ', W: 'Ŵ', X: 'Ẋ', Y: 'Ŷ', Z: 'Ž' }; var vowelChars = ['a', 'e', 'i', 'o', 'u', 'y', 'A', 'E', 'I', 'O', 'U', 'Y']; var cjkCharacters = ['꿇', '꿈', '꿘', '끓', '떫', '맬', '숄', '쌜', '왱', '좰', '헬', '긇', '쭌', 'あ', 'お', 'き', 'ぬ', 'ば', 'ぽ', 'ゑ', 'ザ', 'ネ', 'ヲ', 'ヴ', 'ミ', 'プ', 'ฬ', 'ษ', 'ล', 'ฟ', 'ป', 'ต', 'ฒ', 'ณ', 'ญ', 'ฆ', 'ข']; var getRandomInt = function getRandomInt(max) { return Math.floor(Math.random() * max); }; var stringMarker = function stringMarker(_ref) { var string = _ref.string, enableCJK = _ref.enableCJK; var cjkLength = cjkCharacters.length; var start = cjkCharacters[getRandomInt(cjkLength)]; var end = cjkCharacters[getRandomInt(cjkLength)]; if (enableCJK) { return "<" + start + "<[" + string + "]>" + end + ">"; } else { return "<[" + string + "]>"; } }; /***/ }) /******/ ])["default"]; });