var parser = new mw.jqueryMsg.parser( options );
return function ( args ) {
- var key = args[0],
+ var fallback,
+ key = args[0],
argsArray = $.isArray( args[1] ) ? args[1] : slice.call( args, 1 );
try {
return parser.parse( key, argsArray );
} catch ( e ) {
- var fallback = parser.settings.messages.get( key );
+ fallback = parser.settings.messages.get( key );
mw.log.warn( 'mediawiki.jqueryMsg: ' + key + ': ' + e.message );
return $( '<span>' ).text( fallback );
}
} else {
$el = $( '<a>' );
if ( typeof arg === 'function' ) {
- $el.click( arg ).attr( 'href', '#' );
+ $el.attr( 'href', '#' )
+ .click( function ( e ) {
+ e.preventDefault();
+ } )
+ .click( arg );
} else {
$el.attr( 'href', arg.toString() );
}
* @return {string} selected pluralized form according to current language
*/
plural: function ( nodes ) {
- var forms, count;
+ var forms, formIndex, node, count;
count = parseFloat( this.language.convertNumber( nodes[0], true ) );
forms = nodes.slice( 1 );
+ for ( formIndex = 0; formIndex < forms.length; formIndex++ ) {
+ node = forms[formIndex];
+ if ( node.jquery && node.hasClass( 'mediaWiki_htmlEmitter' ) ) {
+ // This is a nested node, already expanded.
+ forms[formIndex] = forms[formIndex].html();
+ }
+ }
return forms.length ? this.language.convertPlural( count, forms ) : '';
},