i18n-stex
Version:
i18n STrings EXtractor
47 lines (46 loc) • 1.9 kB
JavaScript
;
exports.__esModule = true;
var ts = require("typescript");
var _1 = require("./");
var utils_1 = require("../utils");
// Plural translation
function translate(d) {
return function (signatureItems, identInfo, comments) {
var plurals = signatureItems[0], factor = signatureItems[2], _a = signatureItems[4], args = _a === void 0 ? null : _a;
// Checks
if (!factor || !utils_1.isValidQuantifier(factor)) {
_1.panic('_nt: parameter #1 (factor) should be a numeric literal, value or expression', identInfo);
return;
}
if (!plurals || plurals.kind !== ts.SyntaxKind.ArrayLiteralExpression) {
_1.panic('_nt: parameter #0 (plurality strings) should be an array literal', identInfo);
return;
}
var list = utils_1.getArrayListNode(plurals);
if (!list) {
_1.panic('_nt: parameter #0 (plurality strings) should be an array literal', identInfo);
return;
}
var _b = utils_1.getArrayListElements(list), items = _b.items, strings = _b.strings;
if (items.length !== strings.length) {
_1.panic('_nt: parameter #0 (plurality strings) should contain only strings', identInfo);
return;
}
if (!utils_1.validatePluralPlaceholders(args, strings)) {
// TODO check %n match also, what if %1 then %5 in string?
_1.panic('_nt: optional arguments count mismatch', identInfo);
return;
}
// All ok, add to dict
var entry = {
type: 'plural',
entry: [strings[0], strings[strings.length - 1]],
occurences: [],
translations: [],
comments: comments
};
var key = utils_1.makeKey(entry);
utils_1.addToDict(d, key, entry, identInfo);
};
}
exports.translate = translate;