i18next-pseudoloc
Version:
Pseudo loc test plugin for i18next
75 lines (74 loc) • 3 kB
JavaScript
;
exports.__esModule = true;
exports["default"] = void 0;
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 = require('./constants');
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;
}();
var _default = PseudoLoc;
exports["default"] = _default;
module.exports = exports.default;