diff options
Diffstat (limited to 'www/wiki/resources/src/moment-locale-overrides.js')
-rw-r--r-- | www/wiki/resources/src/moment-locale-overrides.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/www/wiki/resources/src/moment-locale-overrides.js b/www/wiki/resources/src/moment-locale-overrides.js new file mode 100644 index 00000000..bafb86a2 --- /dev/null +++ b/www/wiki/resources/src/moment-locale-overrides.js @@ -0,0 +1,44 @@ +/* global mediaWiki, moment */ + +( function ( mw ) { + // HACK: Overwrite moment's i18n with MediaWiki's for the current language so that + // wgTranslateNumerals is respected. + moment.updateLocale( moment.locale(), { + preparse: function ( s ) { + var i, + table = mw.language.getDigitTransformTable(); + if ( mw.config.get( 'wgTranslateNumerals' ) ) { + for ( i = 0; i < 10; i++ ) { + if ( table[ i ] !== undefined ) { + s = s.replace( new RegExp( mw.RegExp.escape( table[ i ] ), 'g' ), i ); + } + } + } + // HACK: momentjs replaces commas in some languages, which is the only other use of preparse + // aside from digit transformation. We can only override preparse, not extend it, so we + // have to replicate the comma replacement functionality here. + if ( [ 'ar', 'ar-sa', 'fa' ].indexOf( mw.config.get( 'wgUserLanguage' ) ) !== -1 ) { + s = s.replace( /،/g, ',' ); + } + return s; + }, + postformat: function ( s ) { + var i, + table = mw.language.getDigitTransformTable(); + if ( mw.config.get( 'wgTranslateNumerals' ) ) { + for ( i = 0; i < 10; i++ ) { + if ( table[ i ] !== undefined ) { + s = s.replace( new RegExp( i, 'g' ), table[ i ] ); + } + } + } + // HACK: momentjs replaces commas in some languages, which is the only other use of postformat + // aside from digit transformation. We can only override postformat, not extend it, so we + // have to replicate the comma replacement functionality here. + if ( [ 'ar', 'ar-sa', 'fa' ].indexOf( mw.config.get( 'wgUserLanguage' ) ) !== -1 ) { + s = s.replace( /,/g, '،' ); + } + return s; + } + } ); +}( mediaWiki ) ); |