gettext-converter
Advanced tools
Comparing version
@@ -379,4 +379,3 @@ "use strict"; | ||
}); | ||
var _default = rules; | ||
exports.default = _default; | ||
var _default = exports.default = rules; | ||
module.exports = exports.default; |
@@ -7,21 +7,11 @@ "use strict"; | ||
exports.default = _default; | ||
var _cldrConv = _interopRequireDefault(require("./cldrConv.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | ||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | ||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | ||
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | ||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } | ||
var FORMS = ['zero', 'one', 'two', 'few', 'many', 'other']; | ||
var regexIndexOf = function regexIndexOf(value, regex, startpos) { | ||
@@ -31,16 +21,13 @@ var indexOf = value.substring(startpos || 0).search(regex); | ||
}; | ||
function _default(input) { | ||
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, | ||
_ref$keyseparator = _ref.keyseparator, | ||
keyseparator = _ref$keyseparator === void 0 ? '##' : _ref$keyseparator, | ||
_ref$ctxSeparator = _ref.ctxSeparator, | ||
ctxSeparator = _ref$ctxSeparator === void 0 ? '_' : _ref$ctxSeparator, | ||
ignorePlurals = _ref.ignorePlurals, | ||
compatibilityJSON = _ref.compatibilityJSON, | ||
language = _ref.language; | ||
_ref$keyseparator = _ref.keyseparator, | ||
keyseparator = _ref$keyseparator === void 0 ? '##' : _ref$keyseparator, | ||
_ref$ctxSeparator = _ref.ctxSeparator, | ||
ctxSeparator = _ref$ctxSeparator === void 0 ? '_' : _ref$ctxSeparator, | ||
ignorePlurals = _ref.ignorePlurals, | ||
compatibilityJSON = _ref.compatibilityJSON, | ||
language = _ref.language; | ||
var locale = arguments.length > 2 ? arguments[2] : undefined; | ||
var flat = {}; | ||
function handleOldFormat(appendTo, obj, parentKey) { | ||
@@ -52,3 +39,2 @@ Object.keys(obj || {}).forEach(function (m) { | ||
var value = obj[m]; | ||
if (key.length > 0) { | ||
@@ -59,3 +45,2 @@ key = key + keyseparator + m; | ||
} | ||
var pluralIndex = key.indexOf('_plural'); | ||
@@ -66,3 +51,2 @@ if (pluralIndex < 0) pluralIndex = regexIndexOf(key, /_\d+$/); | ||
var number; | ||
if (isPlural && key.indexOf('_plural') < 0) { | ||
@@ -76,8 +60,5 @@ number = parseInt(key.substring(pluralIndex + 1), 10); | ||
} | ||
var ctxKey = key; | ||
if (isPlural) { | ||
ctxKey = ctxKey.substring(0, pluralIndex); | ||
if (ctxKey.indexOf(ctxSeparator) > -1) { | ||
@@ -91,3 +72,2 @@ context = ctxKey.substring(ctxKey.lastIndexOf(ctxSeparator) + ctxSeparator.length, ctxKey.length); | ||
} | ||
if (context === key) context = ''; | ||
@@ -97,3 +77,2 @@ if (context !== '') key = key.replace(ctxSeparator + context, ''); | ||
if (isPlural) appendKey = "".concat(appendKey, "_").concat(number); | ||
if (typeof value === 'string') { | ||
@@ -123,3 +102,2 @@ kv = { | ||
} | ||
function handleNewFormat(appendTo, obj, parentKey) { | ||
@@ -131,3 +109,2 @@ Object.keys(obj).forEach(function (m) { | ||
var value = obj[m]; | ||
if (key.length > 0) { | ||
@@ -138,3 +115,2 @@ key = key + keyseparator + m; | ||
} | ||
var pluralIndex = key.indexOf('_other'); | ||
@@ -144,9 +120,6 @@ if (pluralIndex < 0) pluralIndex = regexIndexOf(key, new RegExp("_(".concat(FORMS.join('|'), ")$"))); | ||
var code = locale || language; | ||
var cldrRule = _cldrConv.default[code] || _cldrConv.default[code.split(/-|_/)[0]]; | ||
if (!cldrRule && locale && language) { | ||
cldrRule = _cldrConv.default[language] || _cldrConv.default[language.split(/-|_/)[0]]; | ||
} | ||
if (!cldrRule) isPlural = false; | ||
@@ -156,7 +129,5 @@ if (ignorePlurals) isPlural = false; | ||
var number = 0; | ||
if (isPlural && key.indexOf('_other') < 0) { | ||
form = key.substring(pluralIndex + 1); | ||
var oldSuffix = cldrRule.fromCldr[FORMS.indexOf(form)]; | ||
if (!oldSuffix) { | ||
@@ -167,3 +138,2 @@ isPlural = false; | ||
} | ||
if (number === 1) isPlural = false; | ||
@@ -176,8 +146,5 @@ key = key.substring(0, pluralIndex); | ||
} | ||
var ctxKey = key; | ||
if (isPlural) { | ||
ctxKey = ctxKey.substring(0, pluralIndex); | ||
if (ctxKey.indexOf(ctxSeparator) > -1) { | ||
@@ -191,3 +158,2 @@ context = ctxKey.substring(ctxKey.lastIndexOf(ctxSeparator) + ctxSeparator.length, ctxKey.length); | ||
} | ||
if (context === key) context = ''; | ||
@@ -197,3 +163,2 @@ if (context !== '') key = key.replace(ctxSeparator + context, ''); | ||
if (isPlural) appendKey = "".concat(appendKey, "_").concat(number); | ||
if (typeof value === 'string') { | ||
@@ -223,3 +188,2 @@ kv = { | ||
} | ||
function recurse(appendTo, obj, parentKey) { | ||
@@ -232,7 +196,5 @@ if (compatibilityJSON === 'v4') { | ||
} | ||
recurse(flat, input, ''); | ||
Object.keys(flat).forEach(function (m) { | ||
var kv = flat[m]; | ||
if (kv.isPlural) { | ||
@@ -245,5 +207,3 @@ if (!flat[kv.key + kv.context]) { | ||
} | ||
var single = flat[kv.key + kv.context]; | ||
if (single) { | ||
@@ -257,3 +217,2 @@ single.plurals = [].concat(_toConsumableArray(single.plurals || []), [kv]); | ||
} | ||
module.exports = exports.default; |
@@ -7,13 +7,7 @@ "use strict"; | ||
exports.default = i18next2js; | ||
var _arrify = _interopRequireDefault(require("arrify")); | ||
var _flatten = _interopRequireDefault(require("./flatten.js")); | ||
var _options = require("./options.js"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } | ||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } | ||
var getGettextPluralPosition = function getGettextPluralPosition(ext, suffix) { | ||
@@ -25,10 +19,7 @@ if (ext) { | ||
} | ||
return -1; | ||
}; | ||
var getPluralArray = function getPluralArray(locale, translation, plurals) { | ||
var ext = plurals[locale.toLowerCase()] || plurals[locale.split(/_|-/)[0].toLowerCase()] || plurals.dev; | ||
var pArray = []; | ||
for (var i = 0, len = translation.plurals.length; i < len; i += 1) { | ||
@@ -38,7 +29,5 @@ var plural = translation.plurals[i]; | ||
} | ||
pArray.splice(getGettextPluralPosition(ext, translation.pluralNumber - 1), 0, translation.value); | ||
return pArray; | ||
}; | ||
var parseGettext = function parseGettext(locale, data) { | ||
@@ -61,3 +50,2 @@ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; | ||
out.headers['plural-forms'] = "nplurals=".concat(ext.numbers.length, "; plural=").concat(ext.plurals); | ||
if (!options.noDate) { | ||
@@ -69,3 +57,2 @@ out.headers['pot-creation-date'] = new Date().toISOString(); | ||
} | ||
if (options.language) out.headers.language = options.language;else if (setLocaleAsLanguageHeader) out.headers.language = locale; | ||
@@ -75,6 +62,4 @@ var delkeys = []; | ||
var kv = data[m]; | ||
if (kv.plurals) { | ||
var pArray = []; | ||
for (var i = 0, len = kv.plurals.length; i < len; i += 1) { | ||
@@ -84,9 +69,6 @@ var plural = kv.plurals[i]; | ||
} | ||
if (ext.numbers.length !== 1) { | ||
pArray.splice(getGettextPluralPosition(ext, kv.pluralNumber - 1), 0, kv.value); | ||
} | ||
if (_typeof(trans[kv.context]) !== 'object') trans[kv.context] = {}; | ||
if (options.keyasareference) { | ||
@@ -106,3 +88,2 @@ if (_typeof(trans[kv.context][kv.value]) === 'object') { | ||
} | ||
if (kv.key !== kv.value) { | ||
@@ -114,3 +95,2 @@ delkeys.push([kv.context, kv.key]); | ||
var msgid_plural = kv.key; | ||
if (kv.key.indexOf('|#|') > -1) { | ||
@@ -121,3 +101,2 @@ var p = kv.key.split('|#|'); | ||
} | ||
trans[kv.context][kv.key] = { | ||
@@ -132,3 +111,2 @@ msgctxt: kv.context, | ||
if (_typeof(trans[kv.context]) !== 'object') trans[kv.context] = {}; | ||
if (options.keyasareference) { | ||
@@ -147,3 +125,2 @@ if (_typeof(trans[kv.context][kv.value]) === 'object') { | ||
} | ||
if (kv.key !== kv.value) { | ||
@@ -176,7 +153,5 @@ delkeys.push([kv.context, kv.key]); | ||
}; | ||
function i18next2js(locale, body) { | ||
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; | ||
var flat = (0, _flatten.default)(typeof body === 'string' ? JSON.parse(body) : body, options, locale); | ||
if (options.base) { | ||
@@ -195,6 +170,4 @@ var bflat = (0, _flatten.default)(JSON.parse(options.base), options); | ||
} | ||
return parseGettext(locale, flat, options); | ||
} | ||
module.exports = exports.default; |
@@ -7,9 +7,5 @@ "use strict"; | ||
exports.default = i18next2po; | ||
var _i18next2js = _interopRequireDefault(require("./i18next2js.js")); | ||
var _poCompiler = _interopRequireDefault(require("./poCompiler.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function i18next2po(locale, body) { | ||
@@ -20,3 +16,2 @@ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; | ||
} | ||
module.exports = exports.default; |
@@ -43,18 +43,10 @@ "use strict"; | ||
}); | ||
var _po2js = _interopRequireDefault(require("./po2js.js")); | ||
var _js2po = _interopRequireDefault(require("./js2po.js")); | ||
var _js2i18next = _interopRequireDefault(require("./js2i18next.js")); | ||
var _po2i18next = _interopRequireDefault(require("./po2i18next.js")); | ||
var _i18next2js = _interopRequireDefault(require("./i18next2js.js")); | ||
var _i18next2po = _interopRequireDefault(require("./i18next2po.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var _default = { | ||
var _default = exports.default = { | ||
po2js: _po2js.default, | ||
@@ -66,3 +58,2 @@ js2po: _js2po.default, | ||
i18next2po: _i18next2po.default | ||
}; | ||
exports.default = _default; | ||
}; |
@@ -7,17 +7,13 @@ "use strict"; | ||
exports.default = _default; | ||
var _options = require("./options.js"); | ||
var _cldrConv = _interopRequireDefault(require("./cldrConv.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } | ||
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } | ||
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } | ||
var FORMS = ['zero', 'one', 'two', 'few', 'many', 'other']; | ||
var isFuzzy = function isFuzzy(translation) { | ||
return !!translation.comments && translation.comments.flag === 'fuzzy'; | ||
}; | ||
var toArrayIfNeeded = function toArrayIfNeeded(value, _ref) { | ||
@@ -27,3 +23,2 @@ var splitNewLine = _ref.splitNewLine; | ||
}; | ||
var emptyOrObject = function emptyOrObject(key, value, options) { | ||
@@ -33,6 +28,4 @@ if (options.skipUntranslated && !value) { | ||
} | ||
return _defineProperty({}, key, toArrayIfNeeded(value, options)); | ||
}; | ||
var getI18nextPluralExtension = function getI18nextPluralExtension(ext, i) { | ||
@@ -42,3 +35,2 @@ if (ext && ext.numbers && ext.numbers.length === 2) return i === 0 ? '' : '_plural'; | ||
}; | ||
var getGettextValues = function getGettextValues(value, locale, targetKey, options) { | ||
@@ -51,9 +43,6 @@ var values = value.msgstr; | ||
var gettextValues = {}; | ||
for (var i = 0; i < values.length; i += 1) { | ||
var pluralSuffix = getI18nextPluralExtension(ext, i); | ||
if (options.compatibilityJSON === 'v4') { | ||
var cldrRule = _cldrConv.default[locale] || _cldrConv.default[locale.split(/-|_/)[0]]; | ||
if (cldrRule && cldrRule.toCldr[pluralSuffix] !== undefined && FORMS[cldrRule.toCldr[pluralSuffix]]) { | ||
@@ -63,14 +52,10 @@ pluralSuffix = "_".concat(FORMS[cldrRule.toCldr[pluralSuffix]]); | ||
} | ||
var pkey = targetKey + pluralSuffix; | ||
Object.assign(gettextValues, emptyOrObject(pkey, values[i], options)); | ||
} | ||
return gettextValues; | ||
}; | ||
function _default(js) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var data = JSON.parse(JSON.stringify(js.translations)); | ||
if (options.keyasareference) { | ||
@@ -84,13 +69,9 @@ var keys = []; | ||
data[ctx][id] = x; | ||
if (options.skipUntranslated && (x.msgstr.length === 1 && !x.msgstr[0] || isFuzzy(x))) { | ||
return; | ||
} | ||
if (x.msgstr[0] === '') x.msgstr[0] = x.msgid; | ||
for (var i = 1; i < x.msgstr.length; i += 1) { | ||
if (x.msgstr[i] === '') x.msgstr[i] = x.msgid_plural; | ||
} | ||
x.msgid = id; | ||
@@ -108,3 +89,2 @@ if (id !== key) keys.push([ctx, key]); | ||
} | ||
var json = {}; | ||
@@ -119,3 +99,2 @@ var separator = options.keyseparator || '##'; | ||
var appendTo = json; | ||
if (key.length === 0) { | ||
@@ -125,3 +104,2 @@ delete context[key]; | ||
} | ||
if (options.skipUntranslated && isFuzzy(context[key])) { | ||
@@ -131,9 +109,6 @@ delete context[key]; | ||
} | ||
if (key.indexOf(separator) > -1) { | ||
var _keys = key.split(separator); | ||
var x = 0; | ||
while (_keys[x]) { | ||
while (_keys[x] !== undefined && _keys[x] !== null) { | ||
if (x < _keys.length - 1) { | ||
@@ -145,9 +120,6 @@ appendTo[_keys[x]] = appendTo[_keys[x]] || {}; | ||
} | ||
x += 1; | ||
} | ||
} | ||
if (m !== '' && !options.ignoreCtx) targetKey = "".concat(targetKey).concat(ctxSeparator).concat(m); | ||
if (options.persistMsgIdPlural) { | ||
@@ -159,3 +131,2 @@ var _context$key = context[key]; | ||
} | ||
var newValues = getGettextValues(context[key], locale, targetKey, options); | ||
@@ -167,3 +138,2 @@ Object.assign(appendTo, newValues); | ||
} | ||
module.exports = exports.default; |
@@ -7,11 +7,7 @@ "use strict"; | ||
exports.default = js2po; | ||
var _poCompiler = _interopRequireDefault(require("./poCompiler.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function js2po(table, options) { | ||
return (0, _poCompiler.default)(table, options); | ||
} | ||
module.exports = exports.default; |
@@ -7,17 +7,9 @@ "use strict"; | ||
exports.getSetLocaleAsLanguageHeader = exports.getPlurals = void 0; | ||
var _plurals = _interopRequireDefault(require("./plurals.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var getPlurals = function getPlurals(options) { | ||
var getPlurals = exports.getPlurals = function getPlurals(options) { | ||
return options.plurals || _plurals.default; | ||
}; | ||
exports.getPlurals = getPlurals; | ||
var getSetLocaleAsLanguageHeader = function getSetLocaleAsLanguageHeader(options) { | ||
var getSetLocaleAsLanguageHeader = exports.getSetLocaleAsLanguageHeader = function getSetLocaleAsLanguageHeader(options) { | ||
return typeof options.setLocaleAsLanguageHeader === 'boolean' ? options.setLocaleAsLanguageHeader : true; | ||
}; | ||
exports.getSetLocaleAsLanguageHeader = getSetLocaleAsLanguageHeader; | ||
}; |
@@ -133,4 +133,3 @@ "use strict"; | ||
}); | ||
var _default = rules; | ||
exports.default = _default; | ||
var _default = exports.default = rules; | ||
module.exports = exports.default; |
@@ -7,9 +7,5 @@ "use strict"; | ||
exports.default = po2i18next; | ||
var _po2js = _interopRequireDefault(require("./po2js.js")); | ||
var _js2i18next = _interopRequireDefault(require("./js2i18next.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function po2i18next(fileContents, options) { | ||
@@ -19,3 +15,2 @@ var js = (0, _po2js.default)(fileContents, options); | ||
} | ||
module.exports = exports.default; |
@@ -7,11 +7,7 @@ "use strict"; | ||
exports.default = po2js; | ||
var _poParser = _interopRequireDefault(require("./poParser.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function po2js(fileContents, options) { | ||
return (0, _poParser.default)(fileContents, options); | ||
} | ||
module.exports = exports.default; |
@@ -7,26 +7,16 @@ "use strict"; | ||
exports.default = _default; | ||
var _contentType = _interopRequireDefault(require("content-type")); | ||
var _encoding = _interopRequireDefault(require("encoding")); | ||
var _shared = require("./shared.js"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } | ||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } | ||
var handleCharset = function handleCharset(table) { | ||
var ct = _contentType.default.parse(table.headers['Content-Type'] || 'text/plain'); | ||
var charset = (0, _shared.formatCharset)(table.charset || ct.parameters.charset || 'utf-8'); | ||
if (ct.parameters.charset) { | ||
ct.parameters.charset = (0, _shared.formatCharset)(ct.parameters.charset); | ||
} | ||
table.charset = charset; | ||
table.headers['Content-Type'] = _contentType.default.format(ct); | ||
}; | ||
var drawComments = function drawComments(comments) { | ||
@@ -58,3 +48,2 @@ var lines = []; | ||
}; | ||
var addPOString = function addPOString() { | ||
@@ -67,14 +56,10 @@ var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; | ||
var lines = [value]; | ||
if (options.foldLength > 0) { | ||
lines = (0, _shared.foldLine)(value, options.foldLength); | ||
} | ||
if (lines.length < 2) { | ||
return "".concat(key, " \"").concat(lines.shift() || '', "\""); | ||
} | ||
return "".concat(key, " \"\"\n\"").concat(lines.join('"\n"'), "\""); | ||
}; | ||
var drawBlock = function drawBlock(block) { | ||
@@ -89,13 +74,9 @@ var override = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var comments = override.comments || block.comments; | ||
if (comments && (comments = drawComments(comments))) { | ||
response.push(comments); | ||
} | ||
if (msgctxt) { | ||
response.push(addPOString('msgctxt', msgctxt, options)); | ||
} | ||
response.push(addPOString('msgid', msgid || '', options)); | ||
if (msgidPlural) { | ||
@@ -106,3 +87,2 @@ response.push(addPOString('msgid_plural', msgidPlural, options)); | ||
}); | ||
if (msgstr.length === 0) { | ||
@@ -114,6 +94,4 @@ response.push(addPOString('msgstr[0]', '', options)); | ||
} | ||
return response.join('\n'); | ||
}; | ||
var compile = function compile(table, options) { | ||
@@ -130,3 +108,2 @@ var headerBlock = table.translations[''] && table.translations[''][''] || {}; | ||
}); | ||
if (options.sort !== false) { | ||
@@ -139,3 +116,2 @@ if (typeof options.sort === 'function') { | ||
} | ||
response = response.map(function (r) { | ||
@@ -147,10 +123,7 @@ return drawBlock(r, {}, options); | ||
}, options)); | ||
if (table.charset === 'utf-8' || table.charset === 'ascii') { | ||
return response.join('\n\n'); | ||
} | ||
return _encoding.default.convert(response.join('\n\n'), table.charset).toString(); | ||
}; | ||
function _default() { | ||
@@ -162,6 +135,5 @@ var table = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var _table$headers = table.headers, | ||
headers = _table$headers === void 0 ? {} : _table$headers; | ||
headers = _table$headers === void 0 ? {} : _table$headers; | ||
headers = Object.keys(headers).reduce(function (result, key) { | ||
var lowerKey = key.toLowerCase(); | ||
if (_shared.HEADERS.has(lowerKey)) { | ||
@@ -172,3 +144,2 @@ result[_shared.HEADERS.get(lowerKey)] = headers[key]; | ||
} | ||
return result; | ||
@@ -183,3 +154,2 @@ }, {}); | ||
} | ||
module.exports = exports.default; |
@@ -7,9 +7,5 @@ "use strict"; | ||
exports.default = _default; | ||
var _encoding = _interopRequireDefault(require("encoding")); | ||
var _shared = require("./shared.js"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var states = { | ||
@@ -33,7 +29,5 @@ none: 0x01, | ||
}; | ||
var toString = function toString(buf, charset) { | ||
return _encoding.default.convert(buf, 'utf-8', charset).toString('utf-8'); | ||
}; | ||
var parseHeader = function parseHeader() { | ||
@@ -44,3 +38,2 @@ var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; | ||
var key = (parts.shift() || '').trim(); | ||
if (key) { | ||
@@ -51,7 +44,5 @@ var value = parts.join(':').trim(); | ||
} | ||
return headers; | ||
}, {}); | ||
}; | ||
var handleCharset = function handleCharset() { | ||
@@ -65,3 +56,2 @@ var buf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; | ||
var charset = defaultCharset; | ||
if ((pos = str.search(/^\s*msgid/im)) >= 0) { | ||
@@ -71,7 +61,5 @@ pos = pos + str.substr(pos + 5).search(/^\s*(msgid|msgctxt)/im); | ||
} | ||
if (match = headers.match(/[; ]charset\s*=\s*([\w-]+)(?:[\s;]|\\n)*"\s*$/mi)) { | ||
charset = (0, _shared.formatCharset)(match[1], defaultCharset); | ||
} | ||
if (charset === 'utf-8') { | ||
@@ -83,3 +71,2 @@ return { | ||
} | ||
return { | ||
@@ -90,3 +77,2 @@ fileContents: toString(buf), | ||
}; | ||
var lexer = function lexer(chunk) { | ||
@@ -99,7 +85,5 @@ var lex = []; | ||
var chr; | ||
for (var i = 0, len = chunk.length; i < len; i++) { | ||
chr = chunk.charAt(i); | ||
if (chr === '\n') lineNumber += 1; | ||
switch (state) { | ||
@@ -130,5 +114,3 @@ case states.none: | ||
} | ||
break; | ||
case states.comments: | ||
@@ -140,5 +122,3 @@ if (chr === '\n') { | ||
} | ||
break; | ||
case states.string: | ||
@@ -150,15 +130,11 @@ if (escaped) { | ||
break; | ||
case 'n': | ||
node.value += '\n'; | ||
break; | ||
case 'r': | ||
node.value += '\r'; | ||
break; | ||
default: | ||
node.value += chr; | ||
} | ||
escaped = false; | ||
@@ -174,8 +150,5 @@ } else { | ||
} | ||
escaped = false; | ||
} | ||
break; | ||
case states.key: | ||
@@ -188,3 +161,2 @@ if (!chr.match(symbols.key)) { | ||
} | ||
state = states.none; | ||
@@ -195,14 +167,10 @@ i--; | ||
} | ||
break; | ||
} | ||
} | ||
return lex; | ||
}; | ||
var joinStringValues = function joinStringValues(tokens) { | ||
var response = []; | ||
var lastNode; | ||
for (var i = 0, len = tokens.length; i < len; i++) { | ||
@@ -218,6 +186,4 @@ if (lastNode && tokens[i].type === types.string && lastNode.type === types.string) { | ||
} | ||
return response; | ||
}; | ||
var parseComments = function parseComments(tokens) { | ||
@@ -227,3 +193,2 @@ tokens.forEach(function (node) { | ||
var lines; | ||
if (node && node.type === types.comments) { | ||
@@ -243,15 +208,11 @@ comment = { | ||
break; | ||
case '.': | ||
comment.extracted.push(line.substr(1).replace(/^\s+/, '')); | ||
break; | ||
case ',': | ||
comment.flag.push(line.substr(1).replace(/^\s+/, '')); | ||
break; | ||
case '|': | ||
comment.previous.push(line.substr(1).replace(/^\s+/, '')); | ||
break; | ||
default: | ||
@@ -270,7 +231,5 @@ comment.translator.push(line.replace(/^\s+/, '')); | ||
}; | ||
var handleKeys = function handleKeys(tokens) { | ||
var response = []; | ||
var lastNode; | ||
for (var i = 0, len = tokens.length; i < len; i++) { | ||
@@ -281,7 +240,5 @@ if (tokens[i].type === types.key) { | ||
}; | ||
if (i && tokens[i - 1].type === types.comments) { | ||
lastNode.comments = tokens[i - 1].value; | ||
} | ||
lastNode.value = ''; | ||
@@ -293,6 +250,4 @@ response.push(lastNode); | ||
} | ||
return response; | ||
}; | ||
var handleValues = function handleValues(tokens) { | ||
@@ -303,3 +258,2 @@ var response = []; | ||
var curComments; | ||
for (var i = 0, len = tokens.length; i < len; i++) { | ||
@@ -331,6 +285,4 @@ if (tokens[i].key.toLowerCase() === 'msgctxt') { | ||
} | ||
return response; | ||
}; | ||
var normalize = function normalize(tokens, charset) { | ||
@@ -343,17 +295,12 @@ var table = { | ||
var msgctxt; | ||
for (var i = 0, len = tokens.length; i < len; i++) { | ||
msgctxt = tokens[i].msgctxt || ''; | ||
if (!table.translations[msgctxt]) table.translations[msgctxt] = {}; | ||
if (!table.headers && !msgctxt && !tokens[i].msgid) { | ||
table.headers = parseHeader(tokens[i].msgstr[0]); | ||
} | ||
table.translations[msgctxt][tokens[i].msgid] = tokens[i]; | ||
} | ||
return table; | ||
}; | ||
var finalize = function finalize(tokens, charset) { | ||
@@ -366,6 +313,4 @@ var data = joinStringValues(tokens); | ||
}; | ||
function _default(fileContents) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
if (typeof options === 'string') { | ||
@@ -376,5 +321,3 @@ options = { | ||
} | ||
options.charset = options.charset || 'iso-8859-1'; | ||
if (typeof fileContents === 'string') { | ||
@@ -387,7 +330,5 @@ options.charset = 'utf-8'; | ||
} | ||
var lex = lexer(fileContents); | ||
return finalize(lex, options.charset); | ||
} | ||
module.exports = exports.default; |
@@ -11,6 +11,4 @@ "use strict"; | ||
exports.generateHeader = generateHeader; | ||
var HEADERS = new Map([['project-id-version', 'Project-Id-Version'], ['report-msgid-bugs-to', 'Report-Msgid-Bugs-To'], ['pot-creation-date', 'POT-Creation-Date'], ['po-revision-date', 'PO-Revision-Date'], ['last-translator', 'Last-Translator'], ['language-team', 'Language-Team'], ['language', 'Language'], ['content-type', 'Content-Type'], ['content-transfer-encoding', 'Content-Transfer-Encoding'], ['plural-forms', 'Plural-Forms'], ['mime-version', 'MIME-Version']]); | ||
exports.HEADERS = HEADERS; | ||
var formatCharset = function formatCharset() { | ||
var HEADERS = exports.HEADERS = new Map([['project-id-version', 'Project-Id-Version'], ['report-msgid-bugs-to', 'Report-Msgid-Bugs-To'], ['pot-creation-date', 'POT-Creation-Date'], ['po-revision-date', 'PO-Revision-Date'], ['last-translator', 'Last-Translator'], ['language-team', 'Language-Team'], ['language', 'Language'], ['content-type', 'Content-Type'], ['content-transfer-encoding', 'Content-Transfer-Encoding'], ['plural-forms', 'Plural-Forms'], ['mime-version', 'MIME-Version']]); | ||
var formatCharset = exports.formatCharset = function formatCharset() { | ||
var charset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'iso-8859-1'; | ||
@@ -20,5 +18,2 @@ var defaultCharset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'iso-8859-1'; | ||
}; | ||
exports.formatCharset = formatCharset; | ||
function compareMsgid(_ref, _ref2) { | ||
@@ -31,3 +26,2 @@ var left = _ref.msgid; | ||
} | ||
function foldLine(str) { | ||
@@ -40,10 +34,7 @@ var maxLen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 76; | ||
var match; | ||
while (pos < len) { | ||
curLine = str.substr(pos, maxLen); | ||
while (curLine.substr(-1) === '\\' && pos + curLine.length < len) { | ||
curLine += str.charAt(pos + curLine.length); | ||
} | ||
if (match = /.*?\\n/.exec(curLine)) { | ||
@@ -58,10 +49,7 @@ curLine = match[0]; | ||
} | ||
lines.push(curLine); | ||
pos += curLine.length; | ||
} | ||
return lines; | ||
} | ||
function generateHeader() { | ||
@@ -68,0 +56,0 @@ var header = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; |
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | ||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | ||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | ||
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | ||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } | ||
import cldrConv from './cldrConv.js'; | ||
var FORMS = ['zero', 'one', 'two', 'few', 'many', 'other']; | ||
var regexIndexOf = function regexIndexOf(value, regex, startpos) { | ||
@@ -20,16 +13,13 @@ var indexOf = value.substring(startpos || 0).search(regex); | ||
}; | ||
export default function (input) { | ||
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, | ||
_ref$keyseparator = _ref.keyseparator, | ||
keyseparator = _ref$keyseparator === void 0 ? '##' : _ref$keyseparator, | ||
_ref$ctxSeparator = _ref.ctxSeparator, | ||
ctxSeparator = _ref$ctxSeparator === void 0 ? '_' : _ref$ctxSeparator, | ||
ignorePlurals = _ref.ignorePlurals, | ||
compatibilityJSON = _ref.compatibilityJSON, | ||
language = _ref.language; | ||
_ref$keyseparator = _ref.keyseparator, | ||
keyseparator = _ref$keyseparator === void 0 ? '##' : _ref$keyseparator, | ||
_ref$ctxSeparator = _ref.ctxSeparator, | ||
ctxSeparator = _ref$ctxSeparator === void 0 ? '_' : _ref$ctxSeparator, | ||
ignorePlurals = _ref.ignorePlurals, | ||
compatibilityJSON = _ref.compatibilityJSON, | ||
language = _ref.language; | ||
var locale = arguments.length > 2 ? arguments[2] : undefined; | ||
var flat = {}; | ||
function handleOldFormat(appendTo, obj, parentKey) { | ||
@@ -41,3 +31,2 @@ Object.keys(obj || {}).forEach(function (m) { | ||
var value = obj[m]; | ||
if (key.length > 0) { | ||
@@ -48,3 +37,2 @@ key = key + keyseparator + m; | ||
} | ||
var pluralIndex = key.indexOf('_plural'); | ||
@@ -55,3 +43,2 @@ if (pluralIndex < 0) pluralIndex = regexIndexOf(key, /_\d+$/); | ||
var number; | ||
if (isPlural && key.indexOf('_plural') < 0) { | ||
@@ -65,8 +52,5 @@ number = parseInt(key.substring(pluralIndex + 1), 10); | ||
} | ||
var ctxKey = key; | ||
if (isPlural) { | ||
ctxKey = ctxKey.substring(0, pluralIndex); | ||
if (ctxKey.indexOf(ctxSeparator) > -1) { | ||
@@ -80,3 +64,2 @@ context = ctxKey.substring(ctxKey.lastIndexOf(ctxSeparator) + ctxSeparator.length, ctxKey.length); | ||
} | ||
if (context === key) context = ''; | ||
@@ -86,3 +69,2 @@ if (context !== '') key = key.replace(ctxSeparator + context, ''); | ||
if (isPlural) appendKey = "".concat(appendKey, "_").concat(number); | ||
if (typeof value === 'string') { | ||
@@ -112,3 +94,2 @@ kv = { | ||
} | ||
function handleNewFormat(appendTo, obj, parentKey) { | ||
@@ -120,3 +101,2 @@ Object.keys(obj).forEach(function (m) { | ||
var value = obj[m]; | ||
if (key.length > 0) { | ||
@@ -127,3 +107,2 @@ key = key + keyseparator + m; | ||
} | ||
var pluralIndex = key.indexOf('_other'); | ||
@@ -134,7 +113,5 @@ if (pluralIndex < 0) pluralIndex = regexIndexOf(key, new RegExp("_(".concat(FORMS.join('|'), ")$"))); | ||
var cldrRule = cldrConv[code] || cldrConv[code.split(/-|_/)[0]]; | ||
if (!cldrRule && locale && language) { | ||
cldrRule = cldrConv[language] || cldrConv[language.split(/-|_/)[0]]; | ||
} | ||
if (!cldrRule) isPlural = false; | ||
@@ -144,7 +121,5 @@ if (ignorePlurals) isPlural = false; | ||
var number = 0; | ||
if (isPlural && key.indexOf('_other') < 0) { | ||
form = key.substring(pluralIndex + 1); | ||
var oldSuffix = cldrRule.fromCldr[FORMS.indexOf(form)]; | ||
if (!oldSuffix) { | ||
@@ -155,3 +130,2 @@ isPlural = false; | ||
} | ||
if (number === 1) isPlural = false; | ||
@@ -164,8 +138,5 @@ key = key.substring(0, pluralIndex); | ||
} | ||
var ctxKey = key; | ||
if (isPlural) { | ||
ctxKey = ctxKey.substring(0, pluralIndex); | ||
if (ctxKey.indexOf(ctxSeparator) > -1) { | ||
@@ -179,3 +150,2 @@ context = ctxKey.substring(ctxKey.lastIndexOf(ctxSeparator) + ctxSeparator.length, ctxKey.length); | ||
} | ||
if (context === key) context = ''; | ||
@@ -185,3 +155,2 @@ if (context !== '') key = key.replace(ctxSeparator + context, ''); | ||
if (isPlural) appendKey = "".concat(appendKey, "_").concat(number); | ||
if (typeof value === 'string') { | ||
@@ -211,3 +180,2 @@ kv = { | ||
} | ||
function recurse(appendTo, obj, parentKey) { | ||
@@ -220,7 +188,5 @@ if (compatibilityJSON === 'v4') { | ||
} | ||
recurse(flat, input, ''); | ||
Object.keys(flat).forEach(function (m) { | ||
var kv = flat[m]; | ||
if (kv.isPlural) { | ||
@@ -233,5 +199,3 @@ if (!flat[kv.key + kv.context]) { | ||
} | ||
var single = flat[kv.key + kv.context]; | ||
if (single) { | ||
@@ -238,0 +202,0 @@ single.plurals = [].concat(_toConsumableArray(single.plurals || []), [kv]); |
@@ -1,7 +0,5 @@ | ||
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } | ||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } | ||
import arrify from 'arrify'; | ||
import flatten from './flatten.js'; | ||
import { getPlurals, getSetLocaleAsLanguageHeader } from './options.js'; | ||
var getGettextPluralPosition = function getGettextPluralPosition(ext, suffix) { | ||
@@ -13,10 +11,7 @@ if (ext) { | ||
} | ||
return -1; | ||
}; | ||
var getPluralArray = function getPluralArray(locale, translation, plurals) { | ||
var ext = plurals[locale.toLowerCase()] || plurals[locale.split(/_|-/)[0].toLowerCase()] || plurals.dev; | ||
var pArray = []; | ||
for (var i = 0, len = translation.plurals.length; i < len; i += 1) { | ||
@@ -26,7 +21,5 @@ var plural = translation.plurals[i]; | ||
} | ||
pArray.splice(getGettextPluralPosition(ext, translation.pluralNumber - 1), 0, translation.value); | ||
return pArray; | ||
}; | ||
var parseGettext = function parseGettext(locale, data) { | ||
@@ -49,3 +42,2 @@ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; | ||
out.headers['plural-forms'] = "nplurals=".concat(ext.numbers.length, "; plural=").concat(ext.plurals); | ||
if (!options.noDate) { | ||
@@ -57,3 +49,2 @@ out.headers['pot-creation-date'] = new Date().toISOString(); | ||
} | ||
if (options.language) out.headers.language = options.language;else if (setLocaleAsLanguageHeader) out.headers.language = locale; | ||
@@ -63,6 +54,4 @@ var delkeys = []; | ||
var kv = data[m]; | ||
if (kv.plurals) { | ||
var pArray = []; | ||
for (var i = 0, len = kv.plurals.length; i < len; i += 1) { | ||
@@ -72,9 +61,6 @@ var plural = kv.plurals[i]; | ||
} | ||
if (ext.numbers.length !== 1) { | ||
pArray.splice(getGettextPluralPosition(ext, kv.pluralNumber - 1), 0, kv.value); | ||
} | ||
if (_typeof(trans[kv.context]) !== 'object') trans[kv.context] = {}; | ||
if (options.keyasareference) { | ||
@@ -94,3 +80,2 @@ if (_typeof(trans[kv.context][kv.value]) === 'object') { | ||
} | ||
if (kv.key !== kv.value) { | ||
@@ -102,3 +87,2 @@ delkeys.push([kv.context, kv.key]); | ||
var msgid_plural = kv.key; | ||
if (kv.key.indexOf('|#|') > -1) { | ||
@@ -109,3 +93,2 @@ var p = kv.key.split('|#|'); | ||
} | ||
trans[kv.context][kv.key] = { | ||
@@ -120,3 +103,2 @@ msgctxt: kv.context, | ||
if (_typeof(trans[kv.context]) !== 'object') trans[kv.context] = {}; | ||
if (options.keyasareference) { | ||
@@ -135,3 +117,2 @@ if (_typeof(trans[kv.context][kv.value]) === 'object') { | ||
} | ||
if (kv.key !== kv.value) { | ||
@@ -164,7 +145,5 @@ delkeys.push([kv.context, kv.key]); | ||
}; | ||
export default function i18next2js(locale, body) { | ||
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; | ||
var flat = flatten(typeof body === 'string' ? JSON.parse(body) : body, options, locale); | ||
if (options.base) { | ||
@@ -183,4 +162,3 @@ var bflat = flatten(JSON.parse(options.base), options); | ||
} | ||
return parseGettext(locale, flat, options); | ||
} |
@@ -1,11 +0,11 @@ | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } | ||
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } | ||
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } | ||
import { getPlurals } from './options.js'; | ||
import cldrConv from './cldrConv.js'; | ||
var FORMS = ['zero', 'one', 'two', 'few', 'many', 'other']; | ||
var isFuzzy = function isFuzzy(translation) { | ||
return !!translation.comments && translation.comments.flag === 'fuzzy'; | ||
}; | ||
var toArrayIfNeeded = function toArrayIfNeeded(value, _ref) { | ||
@@ -15,3 +15,2 @@ var splitNewLine = _ref.splitNewLine; | ||
}; | ||
var emptyOrObject = function emptyOrObject(key, value, options) { | ||
@@ -21,6 +20,4 @@ if (options.skipUntranslated && !value) { | ||
} | ||
return _defineProperty({}, key, toArrayIfNeeded(value, options)); | ||
}; | ||
var getI18nextPluralExtension = function getI18nextPluralExtension(ext, i) { | ||
@@ -30,3 +27,2 @@ if (ext && ext.numbers && ext.numbers.length === 2) return i === 0 ? '' : '_plural'; | ||
}; | ||
var getGettextValues = function getGettextValues(value, locale, targetKey, options) { | ||
@@ -39,9 +35,6 @@ var values = value.msgstr; | ||
var gettextValues = {}; | ||
for (var i = 0; i < values.length; i += 1) { | ||
var pluralSuffix = getI18nextPluralExtension(ext, i); | ||
if (options.compatibilityJSON === 'v4') { | ||
var cldrRule = cldrConv[locale] || cldrConv[locale.split(/-|_/)[0]]; | ||
if (cldrRule && cldrRule.toCldr[pluralSuffix] !== undefined && FORMS[cldrRule.toCldr[pluralSuffix]]) { | ||
@@ -51,14 +44,10 @@ pluralSuffix = "_".concat(FORMS[cldrRule.toCldr[pluralSuffix]]); | ||
} | ||
var pkey = targetKey + pluralSuffix; | ||
Object.assign(gettextValues, emptyOrObject(pkey, values[i], options)); | ||
} | ||
return gettextValues; | ||
}; | ||
export default function (js) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var data = JSON.parse(JSON.stringify(js.translations)); | ||
if (options.keyasareference) { | ||
@@ -72,13 +61,9 @@ var keys = []; | ||
data[ctx][id] = x; | ||
if (options.skipUntranslated && (x.msgstr.length === 1 && !x.msgstr[0] || isFuzzy(x))) { | ||
return; | ||
} | ||
if (x.msgstr[0] === '') x.msgstr[0] = x.msgid; | ||
for (var i = 1; i < x.msgstr.length; i += 1) { | ||
if (x.msgstr[i] === '') x.msgstr[i] = x.msgid_plural; | ||
} | ||
x.msgid = id; | ||
@@ -96,3 +81,2 @@ if (id !== key) keys.push([ctx, key]); | ||
} | ||
var json = {}; | ||
@@ -107,3 +91,2 @@ var separator = options.keyseparator || '##'; | ||
var appendTo = json; | ||
if (key.length === 0) { | ||
@@ -113,3 +96,2 @@ delete context[key]; | ||
} | ||
if (options.skipUntranslated && isFuzzy(context[key])) { | ||
@@ -119,9 +101,6 @@ delete context[key]; | ||
} | ||
if (key.indexOf(separator) > -1) { | ||
var _keys = key.split(separator); | ||
var x = 0; | ||
while (_keys[x]) { | ||
while (_keys[x] !== undefined && _keys[x] !== null) { | ||
if (x < _keys.length - 1) { | ||
@@ -133,9 +112,6 @@ appendTo[_keys[x]] = appendTo[_keys[x]] || {}; | ||
} | ||
x += 1; | ||
} | ||
} | ||
if (m !== '' && !options.ignoreCtx) targetKey = "".concat(targetKey).concat(ctxSeparator).concat(m); | ||
if (options.persistMsgIdPlural) { | ||
@@ -147,3 +123,2 @@ var _context$key = context[key]; | ||
} | ||
var newValues = getGettextValues(context[key], locale, targetKey, options); | ||
@@ -150,0 +125,0 @@ Object.assign(appendTo, newValues); |
@@ -1,19 +0,14 @@ | ||
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } | ||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } | ||
import contentType from 'content-type'; | ||
import encoding from 'encoding'; | ||
import { HEADERS, formatCharset, compareMsgid, foldLine, generateHeader } from './shared.js'; | ||
var handleCharset = function handleCharset(table) { | ||
var ct = contentType.parse(table.headers['Content-Type'] || 'text/plain'); | ||
var charset = formatCharset(table.charset || ct.parameters.charset || 'utf-8'); | ||
if (ct.parameters.charset) { | ||
ct.parameters.charset = formatCharset(ct.parameters.charset); | ||
} | ||
table.charset = charset; | ||
table.headers['Content-Type'] = contentType.format(ct); | ||
}; | ||
var drawComments = function drawComments(comments) { | ||
@@ -45,3 +40,2 @@ var lines = []; | ||
}; | ||
var addPOString = function addPOString() { | ||
@@ -54,14 +48,10 @@ var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; | ||
var lines = [value]; | ||
if (options.foldLength > 0) { | ||
lines = foldLine(value, options.foldLength); | ||
} | ||
if (lines.length < 2) { | ||
return "".concat(key, " \"").concat(lines.shift() || '', "\""); | ||
} | ||
return "".concat(key, " \"\"\n\"").concat(lines.join('"\n"'), "\""); | ||
}; | ||
var drawBlock = function drawBlock(block) { | ||
@@ -76,13 +66,9 @@ var override = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var comments = override.comments || block.comments; | ||
if (comments && (comments = drawComments(comments))) { | ||
response.push(comments); | ||
} | ||
if (msgctxt) { | ||
response.push(addPOString('msgctxt', msgctxt, options)); | ||
} | ||
response.push(addPOString('msgid', msgid || '', options)); | ||
if (msgidPlural) { | ||
@@ -93,3 +79,2 @@ response.push(addPOString('msgid_plural', msgidPlural, options)); | ||
}); | ||
if (msgstr.length === 0) { | ||
@@ -101,6 +86,4 @@ response.push(addPOString('msgstr[0]', '', options)); | ||
} | ||
return response.join('\n'); | ||
}; | ||
var compile = function compile(table, options) { | ||
@@ -117,3 +100,2 @@ var headerBlock = table.translations[''] && table.translations[''][''] || {}; | ||
}); | ||
if (options.sort !== false) { | ||
@@ -126,3 +108,2 @@ if (typeof options.sort === 'function') { | ||
} | ||
response = response.map(function (r) { | ||
@@ -134,10 +115,7 @@ return drawBlock(r, {}, options); | ||
}, options)); | ||
if (table.charset === 'utf-8' || table.charset === 'ascii') { | ||
return response.join('\n\n'); | ||
} | ||
return encoding.convert(response.join('\n\n'), table.charset).toString(); | ||
}; | ||
export default function () { | ||
@@ -149,6 +127,5 @@ var table = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var _table$headers = table.headers, | ||
headers = _table$headers === void 0 ? {} : _table$headers; | ||
headers = _table$headers === void 0 ? {} : _table$headers; | ||
headers = Object.keys(headers).reduce(function (result, key) { | ||
var lowerKey = key.toLowerCase(); | ||
if (HEADERS.has(lowerKey)) { | ||
@@ -159,3 +136,2 @@ result[HEADERS.get(lowerKey)] = headers[key]; | ||
} | ||
return result; | ||
@@ -162,0 +138,0 @@ }, {}); |
@@ -21,7 +21,5 @@ import encoding from 'encoding'; | ||
}; | ||
var toString = function toString(buf, charset) { | ||
return encoding.convert(buf, 'utf-8', charset).toString('utf-8'); | ||
}; | ||
var parseHeader = function parseHeader() { | ||
@@ -32,3 +30,2 @@ var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; | ||
var key = (parts.shift() || '').trim(); | ||
if (key) { | ||
@@ -39,7 +36,5 @@ var value = parts.join(':').trim(); | ||
} | ||
return headers; | ||
}, {}); | ||
}; | ||
var handleCharset = function handleCharset() { | ||
@@ -53,3 +48,2 @@ var buf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; | ||
var charset = defaultCharset; | ||
if ((pos = str.search(/^\s*msgid/im)) >= 0) { | ||
@@ -59,7 +53,5 @@ pos = pos + str.substr(pos + 5).search(/^\s*(msgid|msgctxt)/im); | ||
} | ||
if (match = headers.match(/[; ]charset\s*=\s*([\w-]+)(?:[\s;]|\\n)*"\s*$/mi)) { | ||
charset = formatCharset(match[1], defaultCharset); | ||
} | ||
if (charset === 'utf-8') { | ||
@@ -71,3 +63,2 @@ return { | ||
} | ||
return { | ||
@@ -78,3 +69,2 @@ fileContents: toString(buf), | ||
}; | ||
var lexer = function lexer(chunk) { | ||
@@ -87,7 +77,5 @@ var lex = []; | ||
var chr; | ||
for (var i = 0, len = chunk.length; i < len; i++) { | ||
chr = chunk.charAt(i); | ||
if (chr === '\n') lineNumber += 1; | ||
switch (state) { | ||
@@ -118,5 +106,3 @@ case states.none: | ||
} | ||
break; | ||
case states.comments: | ||
@@ -128,5 +114,3 @@ if (chr === '\n') { | ||
} | ||
break; | ||
case states.string: | ||
@@ -138,15 +122,11 @@ if (escaped) { | ||
break; | ||
case 'n': | ||
node.value += '\n'; | ||
break; | ||
case 'r': | ||
node.value += '\r'; | ||
break; | ||
default: | ||
node.value += chr; | ||
} | ||
escaped = false; | ||
@@ -162,8 +142,5 @@ } else { | ||
} | ||
escaped = false; | ||
} | ||
break; | ||
case states.key: | ||
@@ -176,3 +153,2 @@ if (!chr.match(symbols.key)) { | ||
} | ||
state = states.none; | ||
@@ -183,14 +159,10 @@ i--; | ||
} | ||
break; | ||
} | ||
} | ||
return lex; | ||
}; | ||
var joinStringValues = function joinStringValues(tokens) { | ||
var response = []; | ||
var lastNode; | ||
for (var i = 0, len = tokens.length; i < len; i++) { | ||
@@ -206,6 +178,4 @@ if (lastNode && tokens[i].type === types.string && lastNode.type === types.string) { | ||
} | ||
return response; | ||
}; | ||
var parseComments = function parseComments(tokens) { | ||
@@ -215,3 +185,2 @@ tokens.forEach(function (node) { | ||
var lines; | ||
if (node && node.type === types.comments) { | ||
@@ -231,15 +200,11 @@ comment = { | ||
break; | ||
case '.': | ||
comment.extracted.push(line.substr(1).replace(/^\s+/, '')); | ||
break; | ||
case ',': | ||
comment.flag.push(line.substr(1).replace(/^\s+/, '')); | ||
break; | ||
case '|': | ||
comment.previous.push(line.substr(1).replace(/^\s+/, '')); | ||
break; | ||
default: | ||
@@ -258,7 +223,5 @@ comment.translator.push(line.replace(/^\s+/, '')); | ||
}; | ||
var handleKeys = function handleKeys(tokens) { | ||
var response = []; | ||
var lastNode; | ||
for (var i = 0, len = tokens.length; i < len; i++) { | ||
@@ -269,7 +232,5 @@ if (tokens[i].type === types.key) { | ||
}; | ||
if (i && tokens[i - 1].type === types.comments) { | ||
lastNode.comments = tokens[i - 1].value; | ||
} | ||
lastNode.value = ''; | ||
@@ -281,6 +242,4 @@ response.push(lastNode); | ||
} | ||
return response; | ||
}; | ||
var handleValues = function handleValues(tokens) { | ||
@@ -291,3 +250,2 @@ var response = []; | ||
var curComments; | ||
for (var i = 0, len = tokens.length; i < len; i++) { | ||
@@ -319,6 +277,4 @@ if (tokens[i].key.toLowerCase() === 'msgctxt') { | ||
} | ||
return response; | ||
}; | ||
var normalize = function normalize(tokens, charset) { | ||
@@ -331,17 +287,12 @@ var table = { | ||
var msgctxt; | ||
for (var i = 0, len = tokens.length; i < len; i++) { | ||
msgctxt = tokens[i].msgctxt || ''; | ||
if (!table.translations[msgctxt]) table.translations[msgctxt] = {}; | ||
if (!table.headers && !msgctxt && !tokens[i].msgid) { | ||
table.headers = parseHeader(tokens[i].msgstr[0]); | ||
} | ||
table.translations[msgctxt][tokens[i].msgid] = tokens[i]; | ||
} | ||
return table; | ||
}; | ||
var finalize = function finalize(tokens, charset) { | ||
@@ -354,6 +305,4 @@ var data = joinStringValues(tokens); | ||
}; | ||
export default function (fileContents) { | ||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
if (typeof options === 'string') { | ||
@@ -364,5 +313,3 @@ options = { | ||
} | ||
options.charset = options.charset || 'iso-8859-1'; | ||
if (typeof fileContents === 'string') { | ||
@@ -375,5 +322,4 @@ options.charset = 'utf-8'; | ||
} | ||
var lex = lexer(fileContents); | ||
return finalize(lex, options.charset); | ||
} |
@@ -21,10 +21,7 @@ export var HEADERS = new Map([['project-id-version', 'Project-Id-Version'], ['report-msgid-bugs-to', 'Report-Msgid-Bugs-To'], ['pot-creation-date', 'POT-Creation-Date'], ['po-revision-date', 'PO-Revision-Date'], ['last-translator', 'Last-Translator'], ['language-team', 'Language-Team'], ['language', 'Language'], ['content-type', 'Content-Type'], ['content-transfer-encoding', 'Content-Transfer-Encoding'], ['plural-forms', 'Plural-Forms'], ['mime-version', 'MIME-Version']]); | ||
var match; | ||
while (pos < len) { | ||
curLine = str.substr(pos, maxLen); | ||
while (curLine.substr(-1) === '\\' && pos + curLine.length < len) { | ||
curLine += str.charAt(pos + curLine.length); | ||
} | ||
if (match = /.*?\\n/.exec(curLine)) { | ||
@@ -39,7 +36,5 @@ curLine = match[0]; | ||
} | ||
lines.push(curLine); | ||
pos += curLine.length; | ||
} | ||
return lines; | ||
@@ -46,0 +41,0 @@ } |
@@ -64,3 +64,3 @@ // inspired by https://github.com/i18next/i18next-gettext-converter/blob/master/src/lib/gettext2json.js | ||
options.skipUntranslated && | ||
((x.msgstr.length === 1 && !x.msgstr[0]) || isFuzzy(x)) | ||
((x.msgstr.length === 1 && !x.msgstr[0]) || isFuzzy(x)) | ||
) { | ||
@@ -114,3 +114,3 @@ return | ||
while (keys[x]) { | ||
while (keys[x] !== undefined && keys[x] !== null) { | ||
if (x < keys.length - 1) { | ||
@@ -117,0 +117,0 @@ appendTo[keys[x]] = appendTo[keys[x]] || {} |
{ | ||
"name": "gettext-converter", | ||
"version": "1.2.3", | ||
"version": "1.2.4", | ||
"description": "po2js and js2po and i18next2po and po2i18next converter gettext resource utils", | ||
@@ -77,21 +77,21 @@ "type": "module", | ||
"arrify": "^2.0.1", | ||
"content-type": "1.0.4", | ||
"content-type": "1.0.5", | ||
"encoding": "0.1.13" | ||
}, | ||
"devDependencies": { | ||
"@babel/cli": "7.18.6", | ||
"@babel/core": "7.18.6", | ||
"@babel/preset-env": "7.18.6", | ||
"@babel/cli": "7.23.4", | ||
"@babel/core": "7.23.3", | ||
"@babel/preset-env": "7.23.3", | ||
"babel-plugin-add-module-exports": "1.0.4", | ||
"browserify": "17.0.0", | ||
"eslint": "8.19.0", | ||
"eslint-config-standard": "17.0.0", | ||
"eslint-plugin-import": "2.26.0", | ||
"eslint-plugin-n": "15.2.4", | ||
"eslint-plugin-promise": "6.0.0", | ||
"eslint": "8.54.0", | ||
"eslint-config-standard": "17.1.0", | ||
"eslint-plugin-import": "2.29.0", | ||
"eslint-plugin-n": "16.3.1", | ||
"eslint-plugin-promise": "6.1.1", | ||
"eslint-plugin-require-path-exists": "1.1.9", | ||
"eslint-plugin-standard": "5.0.0", | ||
"expect.js": "0.3.1", | ||
"mocha": "10.0.0", | ||
"uglify-js": "3.16.2" | ||
"mocha": "10.2.0", | ||
"uglify-js": "3.17.4" | ||
}, | ||
@@ -98,0 +98,0 @@ "scripts": { |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
940573
0.26%12883
0.02%+ Added
- Removed
Updated