lib/po2icu.js
function (msgs, pluralForms) {
        var msgKey = 'digit';
        var hasVariableName = false;
        for (var i=0; i<msgs.length; i++) {
            if (msgs[i].match(/%\([a-zA-Z0-9_.|]+\)d/g) !== null) {
                var match = msgs[i].match(/%\([a-zA-Z0-9_.|]+\)d/g)[0];
                msgKey = match.substring(2, (match.length - 2));
                hasVariableName = true;
                break;
            }
        }

        var icuMsg = '{' + msgKey + ', plural,\n';
        var self = this;
        pluralForms.forEach(function (plural) {
            var msg = msgs[plural.poPlural];
            msg = self.cleanWhiteSpace(msg);
            if (hasVariableName) {
                msg = msg.replace(/%\([a-zA-Z0-9_.|]+\)d/g, '{' + msgKey + '}');
            } else {
                msg = msg.replace(/%(d|i)/g, '{' + msgKey + '}');
            }
            icuMsg = icuMsg + '    ' + plural.icuPlural + ' {' + msg + '}\n';
        });
        icuMsg = icuMsg + '}';
        return icuMsg;
    }
function (msgs, pluralForms) {
        var msgKey = 'digit';
        var hasVariableName = false;
        for (var i=0; i<msgs.length; i++) {
            if (msgs[i].match(/%\([a-zA-Z0-9_.|]+\)d/g) !== null) {
                var match = msgs[i].match(/%\([a-zA-Z0-9_.|]+\)d/g)[0];
                msgKey = match.substring(2, (match.length - 2));
                hasVariableName = true;
                break;
            }
        }

        var icuMsg = '{' + msgKey + ', plural,\n';
        var self = this;
        pluralForms.forEach(function (plural) {
            var msg = msgs[plural.poPlural];
            msg = self.cleanWhiteSpace(msg);
            if (hasVariableName) {
                msg = msg.replace(/%\([a-zA-Z0-9_.|]+\)d/g, '{' + msgKey + '}');
            } else {
                msg = msg.replace(/%(d|i)/g, '{' + msgKey + '}');
            }
            icuMsg = icuMsg + '    ' + plural.icuPlural + ' {' + msg + '}\n';
        });
        icuMsg = icuMsg + '}';
        return icuMsg;
    }
function ( msgs , pluralForms ) { var msgKey = 'digit' ; var hasVariableName = false ; for ( var i = 0 ; i < msgs . length ; i ++ ) { if ( msgs [ i ] . match ( / %\([a-zA-Z0-9_.|]+\)d / g ) !== null ) { var match = msgs [ i ] . match ( / %\([a-zA-Z0-9_.|]+\)d / g ) [ 0 ] ; msgKey = match . substring ( 2 , ( match . length - 2 ) ) ; hasVariableName = true ; break ; } } var icuMsg = '{' + msgKey + ', plural,\n' ; var self = this ; pluralForms . forEach ( function ( plural ) { var msg = msgs [ plural . poPlural ] ; msg = self . cleanWhiteSpace ( msg ) ; if ( hasVariableName ) { msg = msg . replace ( / %\([a-zA-Z0-9_.|]+\)d / g , '{' + msgKey + '}' ) ; } else { msg = msg . replace ( / %(d|i) / g , '{' + msgKey + '}' ) ; } icuMsg = icuMsg + '    ' + plural . icuPlural + ' {' + msg + '}\n' ; } ) ; icuMsg = icuMsg + '}' ; return icuMsg ; }
Converts a python po-formatted plural msg into an icu-formatted plural.

@param {list} [msgs] list of strings for each plural form
@param {list} [pluralForms] list of icu plural forms used by this language
choices are: ['zero', 'one', 'two', 'few', 'many', 'other']
Converts a python po - formatted plural msg into an icu - formatted plural .