WordPress.org

Make WordPress Core

Ticket #20491: 20491-applied.2.diff

File 20491-applied.2.diff, 247.1 KB (added by swissspidy, 5 years ago)
  • src/wp-admin/js/color-picker.js

    diff --git src/wp-admin/js/color-picker.js src/wp-admin/js/color-picker.js
    index 96f55da..6c423fc 100644
     
    3838                        // Set up HTML structure, hide things
    3939                        el.addClass( 'wp-color-picker' ).hide().wrap( _wrap );
    4040                        self.wrap = el.parent();
    41                         self.toggler = $( _before ).insertBefore( el ).css( { backgroundColor: self.initialValue } ).attr( 'title', wpColorPickerL10n.pick ).attr( 'data-current', wpColorPickerL10n.current );
     41                        self.toggler = $( _before ).insertBefore( el ).css( { backgroundColor: self.initialValue } ).attr( 'title', wp.i18n.__( 'Select Color' ) ).attr( 'data-current', wp.i18n.__( 'Current Color' ) );
    4242                        self.pickerContainer = $( _after ).insertAfter( el );
    4343                        self.button = $( _button );
    4444
    4545                        if ( self.options.defaultColor ) {
    46                                 self.button.addClass( 'wp-picker-default' ).val( wpColorPickerL10n.defaultString );
     46                                self.button.addClass( 'wp-picker-default' ).val( wp.i18n.__( 'Default' ) );
    4747                        } else {
    48                                 self.button.addClass( 'wp-picker-clear' ).val( wpColorPickerL10n.clear );
     48                                self.button.addClass( 'wp-picker-clear' ).val( wp.i18n.__( 'Clear' ) );
    4949                        }
    5050
    5151                        el.wrap( '<span class="wp-picker-input-wrap" />' ).after(self.button);
  • src/wp-admin/js/comment.js

    diff --git src/wp-admin/js/comment.js src/wp-admin/js/comment.js
    index d194148..29ea8f7 100644
    jQuery(document).ready( function($) { 
    4646                }
    4747
    4848                $timestamp.html(
    49                         commentL10n.submittedOn + ' <b>' +
    50                         commentL10n.dateFormat
     49                        wp.i18n.__( 'Submitted on:' ) + ' <b>' +
     50                        /* translators: 1: month, 2: day, 3: year, 4: hour, 5: minute */
     51                        __( '%1$s %2$s, %3$s @ %4$s:%5$s' )
    5152                                .replace( '%1$s', $( 'option[value="' + mm + '"]', '#mm' ).attr( 'data-text' ) )
    5253                                .replace( '%2$s', parseInt( jj, 10 ) )
    5354                                .replace( '%3$s', aa )
  • src/wp-admin/js/common.js

    diff --git src/wp-admin/js/common.js src/wp-admin/js/common.js
    index 43a8f09..094d873 100644
     
    1 /* global setUserSetting, ajaxurl, commonL10n, alert, confirm, pagenow */
     1/* global setUserSetting, ajaxurl, alert, confirm, pagenow */
    22var showNotice, adminMenu, columns, validateForm, screenMeta;
    33( function( $, window, undefined ) {
    44        var $document = $( document ),
    validateForm = function( form ) { 
    8989// stub for doing better warnings
    9090showNotice = {
    9191        warn : function() {
    92                 var msg = commonL10n.warnDelete || '';
     92                var msg = wp.i18n.__( "You are about to permanently delete these items.\n  'Cancel' to stop, 'OK' to delete." );
     93
    9394                if ( confirm(msg) ) {
    9495                        return true;
    9596                }
    $document.ready( function() { 
    404405                $( '.notice.is-dismissible' ).each( function() {
    405406                        var $el = $( this ),
    406407                                $button = $( '<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>' ),
    407                                 btnText = commonL10n.dismiss || '';
     408                                btnText = wp.i18n.__( 'Dismiss this notice.' );
    408409
    409410                        // Ensure plain text
    410411                        $button.find( '.screen-reader-text' ).text( btnText );
  • src/wp-admin/js/customize-controls.js

    diff --git src/wp-admin/js/customize-controls.js src/wp-admin/js/customize-controls.js
    index 4410593..2e830fb 100644
     
    1 /* global _wpCustomizeHeader, _wpCustomizeBackground, _wpMediaViewsL10n, MediaElementPlayer */
     1/* global _wpCustomizeHeader, _wpCustomizeBackground, MediaElementPlayer */
    22(function( exports, $ ){
    33        var Container, focus, normalizedTransitionendEventName, api = wp.customize;
    44
     
    22592259                 * Create a media modal select frame, and store it so the instance can be reused when needed.
    22602260                 */
    22612261                initFrame: function() {
    2262                         var l10n = _wpMediaViewsL10n;
    2263 
    22642262                        this.frame = wp.media({
    22652263                                button: {
    2266                                         text: l10n.select,
     2264                                        text: wp.i18n.__( 'Select' ),
    22672265                                        close: false
    22682266                                },
    22692267                                states: [
     
    24502448                 * Create a media modal select frame, and store it so the instance can be reused when needed.
    24512449                 */
    24522450                initFrame: function() {
    2453                         var l10n = _wpMediaViewsL10n;
    2454 
    24552451                        this.frame = wp.media({
    24562452                                button: {
    2457                                         text: l10n.select,
     2453                                        text: wp.i18n.__( 'Select' ),
    24582454                                        close: false
    24592455                                },
    24602456                                states: [
     
    27062702                 * @param {event} event
    27072703                 */
    27082704                openMedia: function(event) {
    2709                         var l10n = _wpMediaViewsL10n;
    2710 
    27112705                        event.preventDefault();
    27122706
    27132707                        this.frame = wp.media({
    27142708                                button: {
    2715                                         text: l10n.selectAndCrop,
     2709                                        text: wp.i18n.__( 'Select and Crop' ),
    27162710                                        close: false
    27172711                                },
    27182712                                states: [
    27192713                                        new wp.media.controller.Library({
    2720                                                 title:     l10n.chooseImage,
     2714                                                title:     wp.i18n.__( 'Choose Image' ),
    27212715                                                library:   wp.media.query({ type: 'image' }),
    27222716                                                multiple:  false,
    27232717                                                date:      false,
     
    31043098                                response = response.slice( 0, index ) + response.slice( index + signature.length );
    31053099
    31063100                                // Create the iframe and inject the html content.
    3107                                 self.iframe = $( '<iframe />', { 'title': api.l10n.previewIframeTitle } ).appendTo( self.container );
     3101                                self.iframe = $( '<iframe />', { 'title': wp.i18n.__( 'Site Preview' ) } ).appendTo( self.container );
    31083102                                self.iframe.attr( 'onmousewheel', '' ); // Workaround for Safari bug. See WP Trac #38149.
    31093103
    31103104                                // Bind load event after the iframe has been added to the page;
     
    31513145                                        reject();
    31523146                                }
    31533147
    3154                                 iframe = $( '<iframe />', { 'src': self.previewUrl(), 'title': api.l10n.previewIframeTitle } ).hide();
     3148                                iframe = $( '<iframe />', { 'src': self.previewUrl(), 'title': wp.i18n.__( 'Site Preview' ) } ).hide();
    31553149                                iframe.appendTo( self.container );
    31563150                                iframe.on( 'load', function() {
    31573151                                        self.triedLogin = true;
     
    34233417                                url:     api.settings.url.login
    34243418                        });
    34253419
    3426                         iframe = $( '<iframe />', { 'src': api.settings.url.login, 'title': api.l10n.loginIframeTitle } ).appendTo( this.container );
     3420                        iframe = $( '<iframe />', { 'src': api.settings.url.login, 'title': wp.i18n.__( 'Session expired' ) } ).appendTo( this.container );
    34273421
    34283422                        messenger.targetWindow( iframe[0].contentWindow );
    34293423
     
    34513445
    34523446                cheatin: function() {
    34533447                        $( document.body ).empty().addClass( 'cheatin' ).append(
    3454                                 '<h1>' + api.l10n.cheatin + '</h1>' +
    3455                                 '<p>' + api.l10n.notAllowed + '</p>'
     3448                                '<h1>' + wp.i18n.__( 'Cheatin&#8217; uh?' ) + '</h1>' +
     3449                                '<p>' + wp.i18n.__( 'Sorry, you are not allowed to customize this site.' ) + '</p>'
    34563450                        );
    34573451                },
    34583452
     
    36673661
    36683662        $( function() {
    36693663                api.settings = window._wpCustomizeSettings;
    3670                 api.l10n = window._wpCustomizeControlsL10n;
    36713664
    36723665                // Check if we can run the Customizer.
    36733666                if ( ! api.settings ) {
     
    39803973
    39813974                        state.bind( 'change', function() {
    39823975                                if ( ! activated() ) {
    3983                                         saveBtn.val( api.l10n.activate ).prop( 'disabled', false );
    3984                                         closeBtn.find( '.screen-reader-text' ).text( api.l10n.cancel );
     3976                                        saveBtn.val( wp.i18n.__( 'Save &amp; Activate' ) ).prop( 'disabled', false );
     3977                                        closeBtn.find( '.screen-reader-text' ).text( wp.i18n.__( 'Cancel' ) );
    39853978
    39863979                                } else if ( saved() ) {
    3987                                         saveBtn.val( api.l10n.saved ).prop( 'disabled', true );
    3988                                         closeBtn.find( '.screen-reader-text' ).text( api.l10n.close );
     3980                                        saveBtn.val( wp.i18n.__( 'Saved' ) ).prop( 'disabled', true );
     3981                                        closeBtn.find( '.screen-reader-text' ).text( wp.i18n.__( 'Close' ) );
    39893982
    39903983                                } else {
    3991                                         saveBtn.val( api.l10n.save ).prop( 'disabled', false );
    3992                                         closeBtn.find( '.screen-reader-text' ).text( api.l10n.cancel );
     3984                                        saveBtn.val( wp.i18n.__( 'Save &amp; Publish' ) ).prop( 'disabled', false );
     3985                                        closeBtn.find( '.screen-reader-text' ).text( wp.i18n.__( 'Cancel' ) );
    39933986                                }
    39943987                        });
    39953988
     
    40474040                        overlay.toggleClass( 'collapsed', ! paneVisible );
    40484041
    40494042                        if ( ! paneVisible ) {
    4050                                 $( '.collapse-sidebar' ).attr({ 'aria-expanded': 'false', 'aria-label': api.l10n.expandSidebar });
     4043                                $( '.collapse-sidebar' ).attr({ 'aria-expanded': 'false', 'aria-label': wp.i18n.__( 'Expand Sidebar' ) });
    40514044                        } else {
    4052                                 $( '.collapse-sidebar' ).attr({ 'aria-expanded': 'true', 'aria-label': api.l10n.collapseSidebar });
     4045                                $( '.collapse-sidebar' ).attr({ 'aria-expanded': 'true', 'aria-label': wp.i18n.__( 'Expand Sidebar' ) });
    40534046                        }
    40544047                });
    40554048
     
    41394132                if ( title.length ) {
    41404133                        api( 'blogname', function( setting ) {
    41414134                                var updateTitle = function() {
    4142                                         title.text( $.trim( setting() ) || api.l10n.untitledBlogName );
     4135                                        title.text( $.trim( setting() ) || wp.i18n.__( '(Untitled)' ) );
    41434136                                };
    41444137                                setting.bind( updateTitle );
    41454138                                updateTitle();
     
    41744167                                setTimeout( function() {
    41754168                                        overlay.removeClass( 'customize-loading' );
    41764169                                }, 1 );
    4177                                 return api.l10n.saveAlert;
     4170                                return wp.i18n.__( 'The changes you made will be lost if you navigate away from this page.' );
    41784171                        }
    41794172                } );
    41804173
  • src/wp-admin/js/customize-nav-menus.js

    diff --git src/wp-admin/js/customize-nav-menus.js src/wp-admin/js/customize-nav-menus.js
    index 71052a1..f96b8b3 100644
     
    291291                        } else if ( page > 1 ) {
    292292                                $section.addClass( 'loading-more' );
    293293                                $content.attr( 'aria-busy', 'true' );
    294                                 wp.a11y.speak( api.Menus.data.l10n.itemsLoadingMore );
     294                                wp.a11y.speak( wp.i18n.__( 'Loading more results... please wait.' ) );
    295295                        } else if ( '' === self.searchTerm ) {
    296296                                $content.html( '' );
    297297                                wp.a11y.speak( '' );
     
    330330                                        self.pages.search = self.pages.search + 1;
    331331                                }
    332332                                if ( items && page > 1 ) {
    333                                         wp.a11y.speak( api.Menus.data.l10n.itemsFoundMore.replace( '%d', items.length ) );
     333                                        wp.a11y.speak( wp.i18n.__( 'Additional items found: %d' ).replace( '%d', items.length ) );
    334334                                } else if ( items && page === 1 ) {
    335                                         wp.a11y.speak( api.Menus.data.l10n.itemsFound.replace( '%d', items.length ) );
     335                                        wp.a11y.speak( wp.i18n.__( 'Number of items found: %d' ).replace( '%d', items.length ) );
    336336                                }
    337337                        });
    338338
     
    510510                                'title': itemName.val(),
    511511                                'url': itemUrl.val(),
    512512                                'type': 'custom',
    513                                 'type_label': api.Menus.data.l10n.custom_label,
     513                                'type_label': wp.i18n.__( 'Custom Link' ),
    514514                                'object': 'custom'
    515515                        };
    516516
     
    875875                                        params: {
    876876                                                type: 'nav_menu_name',
    877877                                                content: '<li id="customize-control-' + section.id.replace( '[', '-' ).replace( ']', '' ) + '-name" class="customize-control customize-control-nav_menu_name"></li>', // @todo core should do this for us; see #30741
    878                                                 label: api.Menus.data.l10n.menuNameLabel,
     878                                                label: wp.i18n.__( 'Menu Name' ),
    879879                                                active: true,
    880880                                                section: section.id,
    881881                                                priority: 0,
     
    959959                                var $label, locationName;
    960960                                $label = $( '<span class="menu-in-location"></span>' );
    961961                                locationName = api.Menus.data.locationSlugMappedToName[ themeLocationSlug ];
    962                                 $label.text( api.Menus.data.l10n.menuLocation.replace( '%s', locationName ) );
     962                                /* translators: %s: menu location */
     963                                $label.text( wp.i18n._x( '(Currently set to: %s)', 'menu' ).replace( '%s', locationName ) );
    963964                                $title.append( $label );
    964965                        });
    965966
     
    13971398
    13981399                                control.container.slideUp( function() {
    13991400                                        control.setting.set( false );
    1400                                         wp.a11y.speak( api.Menus.data.l10n.itemDeleted );
     1401                                        wp.a11y.speak( wp.i18n.__( 'Menu item deleted' ) );
    14011402                                        $adjacentFocusTarget.focus(); // keyboard accessibility
    14021403                                } );
    14031404                        } );
     
    14271428                                }
    14281429
    14291430                                var titleEl = control.container.find( '.menu-item-title' ),
    1430                                     titleText = item.title || item.original_title || api.Menus.data.l10n.untitled;
     1431                                    titleText = item.title || item.original_title || wp.i18n._x( '(no label)', 'missing menu item navigation label' );
    14311432
    14321433                                if ( item._invalid ) {
    1433                                         titleText = api.Menus.data.l10n.invalidTitleTpl.replace( '%s', titleText );
     1434                                        /* translators: %s: title of menu item which is invalid */
     1435                                        titleText = wp.i18n.__( '%s (Invalid)' ).replace( '%s', titleText );
    14341436                                }
    14351437
    14361438                                // Don't update to an empty title.
     
    14861488
    14871489                        if ( settingValue._invalid ) {
    14881490                                containerClasses.push( 'menu-item-invalid' );
    1489                                 control.params.title = api.Menus.data.l10n.invalidTitleTpl.replace( '%s', control.params.title );
     1491                                /* translators: %s: title of menu item which is invalid */
     1492                                control.params.title = wp.i18n.__( '%s (Invalid)' ).replace( '%s', control.params.title );
    14901493                        } else if ( 'draft' === settingValue.status ) {
    14911494                                containerClasses.push( 'pending' );
    1492                                 control.params.title = api.Menus.data.pendingTitleTpl.replace( '%s', control.params.title );
     1495                                /* translators: %s: title of menu item in draft status */
     1496                                control.params.title = wp.i18n.__( '%s (Pending)' ).replace( '%s', control.params.title );
    14931497                        }
    14941498
    14951499                        control.params.el_classes = containerClasses.join( ' ' );
     
    17181722                 */
    17191723                moveUp: function() {
    17201724                        this._changePosition( -1 );
    1721                         wp.a11y.speak( api.Menus.data.l10n.movedUp );
     1725                        wp.a11y.speak( wp.i18n.__( 'Menu item moved up' ) );
    17221726                },
    17231727
    17241728                /**
     
    17261730                 */
    17271731                moveDown: function() {
    17281732                        this._changePosition( 1 );
    1729                         wp.a11y.speak( api.Menus.data.l10n.movedDown );
     1733                        wp.a11y.speak( wp.i18n.__( 'Menu item moved down' ) );
    17301734                },
    17311735                /**
    17321736                 * Move menu item and all children up one level of depth.
    17331737                 */
    17341738                moveLeft: function() {
    17351739                        this._changeDepth( -1 );
    1736                         wp.a11y.speak( api.Menus.data.l10n.movedLeft );
     1740                        wp.a11y.speak( wp.i18n.__( 'Menu item moved out of submenu' ) );
    17371741                },
    17381742
    17391743                /**
     
    17411745                 */
    17421746                moveRight: function() {
    17431747                        this._changeDepth( 1 );
    1744                         wp.a11y.speak( api.Menus.data.l10n.movedRight );
     1748                        wp.a11y.speak( wp.i18n.__( 'Menu item is now a sub-item' ) );
    17451749                },
    17461750
    17471751                /**
     
    22392243                                section.collapse({
    22402244                                        completeCallback: function() {
    22412245                                                removeSection();
    2242                                                 wp.a11y.speak( api.Menus.data.l10n.menuDeleted );
     2246                                                wp.a11y.speak( wp.i18n.__( 'Menu deleted' ) );
    22432247                                                api.panel( 'nav_menus' ).focus();
    22442248                                        }
    22452249                                });
     
    23842388                        this.$sectionContent.sortable( this.isReordering ? 'disable' : 'enable' );
    23852389                        if ( this.isReordering ) {
    23862390                                addNewItemBtn.attr({ 'tabindex': '-1', 'aria-hidden': 'true' });
    2387                                 reorderBtn.attr( 'aria-label', api.Menus.data.l10n.reorderLabelOff );
    2388                                 wp.a11y.speak( api.Menus.data.l10n.reorderModeOn );
     2391                                reorderBtn.attr( 'aria-label', wp.i18n.esc_attr__( 'Close reorder mode' ) );
     2392                                wp.a11y.speak( wp.i18n.__( 'Reorder mode enabled' ) );
    23892393                                itemsTitle.attr( 'aria-hidden', 'false' );
    23902394                        } else {
    23912395                                addNewItemBtn.removeAttr( 'tabindex aria-hidden' );
    2392                                 reorderBtn.attr( 'aria-label', api.Menus.data.l10n.reorderLabelOn );
    2393                                 wp.a11y.speak( api.Menus.data.l10n.reorderModeOff );
     2396                                reorderBtn.attr( 'aria-label', wp.i18n.esc_attr__( 'Reorder menu items' ) );
     2397                                wp.a11y.speak( wp.i18n.__( 'Reorder mode closed' ) );
    23942398                                itemsTitle.attr( 'aria-hidden', 'true' );
    23952399                        }
    23962400
     
    25652569                        setting.preview();
    25662570                        menuControl.debouncedReflowMenuItems();
    25672571
    2568                         wp.a11y.speak( api.Menus.data.l10n.itemAdded );
     2572                        wp.a11y.speak( wp.i18n.__( 'Menu item added' ) );
    25692573
    25702574                        return menuItemControl;
    25712575                }
     
    26612665                        nameInput.val( '' );
    26622666                        nameInput.removeClass( 'invalid' );
    26632667
    2664                         wp.a11y.speak( api.Menus.data.l10n.menuAdded );
     2668                        wp.a11y.speak( wp.i18n.__( 'Menu created' ) );
    26652669
    26662670                        // Focus on the new menu section.
    26672671                        api.section( customizeId ).focus(); // @todo should we focus on the new menu's control and open the add-items panel? Thinking user flow...
     
    30093013                name = name || '';
    30103014                name = $( '<div>' ).text( name ).html(); // Emulate esc_html() which is used in wp-admin/nav-menus.php.
    30113015                name = $.trim( name );
    3012                 return name || api.Menus.data.l10n.unnamed;
     3016                return name || wp.i18n._x( '(unnamed)', 'Missing menu name.' );
    30133017        }
    30143018
    30153019})( wp.customize, wp, jQuery );
  • src/wp-admin/js/customize-widgets.js

    diff --git src/wp-admin/js/customize-widgets.js src/wp-admin/js/customize-widgets.js
    index 2799b82..3d14df1 100644
     
    44        if ( ! wp || ! wp.customize ) { return; }
    55
    66        // Set up our namespace...
    7         var api = wp.customize,
    8                 l10n;
     7        var api = wp.customize;
    98
    109        api.Widgets = api.Widgets || {};
    1110        api.Widgets.savedWidgetIds = {};
    1211
    1312        // Link settings
    1413        api.Widgets.data = _wpCustomizeWidgetsSettings || {};
    15         l10n = api.Widgets.data.l10n;
    16         delete api.Widgets.data.l10n;
    1714
    1815        /**
    1916         * wp.customize.Widgets.WidgetModel
     
    250247
    251248                // Send a message to the aria-live region to announce how many search results.
    252249                announceSearchMatches: _.debounce( function() {
    253                         var message = l10n.widgetsFound.replace( '%d', this.searchMatchesCount ) ;
     250                        var message = wp.i18n.__( 'Number of widgets found: %d' )( '%d', this.searchMatchesCount ) ;
    254251
    255252                        if ( ! this.searchMatchesCount ) {
    256                                 message = l10n.noWidgetsFound;
     253                                message = wp.i18n.__( 'No widgets found.' );
    257254                        }
    258255
    259256                        wp.a11y.speak( message );
     
    799796
    800797                                        if ( isMoveUp ) {
    801798                                                self.moveUp();
    802                                                 wp.a11y.speak( l10n.widgetMovedUp );
     799                                                wp.a11y.speak( wp.i18n.__( 'Widget moved up' ) );
    803800                                        } else {
    804801                                                self.moveDown();
    805                                                 wp.a11y.speak( l10n.widgetMovedDown );
     802                                                wp.a11y.speak( wp.i18n.__( 'Widget moved down' ) );
    806803                                        }
    807804
    808805                                        $( this ).focus(); // re-focus after the container was moved
     
    876873
    877874                        // Configure update button
    878875                        $saveBtn = this.container.find( '.widget-control-save' );
    879                         $saveBtn.val( l10n.saveBtnLabel );
    880                         $saveBtn.attr( 'title', l10n.saveBtnTooltip );
     876                        $saveBtn.val( wp.i18n.__( 'Apply' ) );
     877                        $saveBtn.attr( 'title', wp.i18n.__( 'Save and preview changes before publishing them.' ) );
    881878                        $saveBtn.removeClass( 'button-primary' );
    882879                        $saveBtn.on( 'click', function( e ) {
    883880                                e.preventDefault();
     
    989986                        } );
    990987
    991988                        replaceDeleteWithRemove = function() {
    992                                 $removeBtn.text( l10n.removeBtnLabel ); // wp_widget_control() outputs the link as "Delete"
    993                                 $removeBtn.attr( 'title', l10n.removeBtnTooltip );
     989                                $removeBtn.text( wp.i18n.__( 'Remove' ) ); // wp_widget_control() outputs the link as "Delete"
     990                                $removeBtn.attr( 'title', wp.i18n.__( 'Trash widget by moving it to the inactive widgets sidebar.' ) );
    994991                        };
    995992
    996993                        if ( this.params.is_new ) {
     
    12661263                                        }
    12671264                                } else {
    12681265                                        // General error message
    1269                                         message = l10n.error;
     1266                                        message = wp.i18n.__( 'An error has occurred. Please reload the page and try again.' );
    12701267
    12711268                                        if ( r.data && r.data.message ) {
    12721269                                                message = r.data.message;
     
    15831580                                        'class': 'no-widget-areas-rendered-notice'
    15841581                                });
    15851582                                noRenderedAreasNotice.append( $( '<em></em>', {
    1586                                         text: l10n.noAreasRendered
     1583                                        text: wp.i18n.__( 'There are no widget areas currently rendered in the preview. Navigate in the preview to a template that makes use of a widget area in order to access its widgets here.' )
    15871584                                } ) );
    15881585                                panelMetaContainer.append( noRenderedAreasNotice );
    15891586
     
    19361933                                } );
    19371934
    19381935                                addNewWidgetBtn.attr({ 'tabindex': '-1', 'aria-hidden': 'true' });
    1939                                 reorderBtn.attr( 'aria-label', l10n.reorderLabelOff );
    1940                                 wp.a11y.speak( l10n.reorderModeOn );
     1936                                reorderBtn.attr( 'aria-label', wp.i18n.esc_attr__( 'Close reorder mode' ) );
     1937                                wp.a11y.speak( wp.i18n.__( 'Reorder mode enabled' ) );
    19411938                                // Hide widget titles while reordering: title is already in the reorder controls.
    19421939                                widgetsTitle.attr( 'aria-hidden', 'true' );
    19431940                        } else {
    19441941                                addNewWidgetBtn.removeAttr( 'tabindex aria-hidden' );
    1945                                 reorderBtn.attr( 'aria-label', l10n.reorderLabelOn );
    1946                                 wp.a11y.speak( l10n.reorderModeOff );
     1942                                reorderBtn.attr( 'aria-label', wp.i18n.esc_attr__( 'Reorder widgets' ) );
     1943                                wp.a11y.speak( wp.i18n.__( 'Reorder mode closed' ) );
    19471944                                widgetsTitle.attr( 'aria-hidden', 'false' );
    19481945                        }
    19491946                },
  • src/wp-admin/js/edit-comments.js

    diff --git src/wp-admin/js/edit-comments.js src/wp-admin/js/edit-comments.js
    index 3de0310..6288564 100644
    var getCount, updateCount, updateCountText, updatePending, updateApproved, 
    9898        updateHtmlTitle = function ( diff ) {
    9999                var newTitle, regExMatch, titleCount, commentFrag;
    100100
    101                 titleRegEx = titleRegEx || new RegExp( adminCommentsL10n.docTitleCommentsCount.replace( '%s', '\\([0-9' + thousandsSeparator + ']+\\)' ) + '?' );
     101                /* translators: %s: comments count */
     102                titleRegEx = titleRegEx || new RegExp( wp.i18n.__( 'Comments (%s)' ).replace( '%s', '\\([0-9' + thousandsSeparator + ']+\\)' ) + '?' );
    102103                // count funcs operate on a $'d element
    103104                titleDiv = titleDiv || $( '<div />' );
    104105                newTitle = adminTitle;
    var getCount, updateCount, updateCountText, updatePending, updateApproved, 
    117118                        updateCount( titleDiv, titleCount );
    118119                        regExMatch = titleRegEx.exec( document.title );
    119120                        if ( regExMatch ) {
    120                                 newTitle = document.title.replace( regExMatch[0], adminCommentsL10n.docTitleCommentsCount.replace( '%s', titleDiv.text() ) + ' ' );
     121                                /* translators: %s: comments count */
     122                                newTitle = document.title.replace( regExMatch[0], wp.i18n.__( 'Comments (%s)' ).replace( '%s', titleDiv.text() ) + ' ' );
    121123                        }
    122124                } else {
    123125                        regExMatch = titleRegEx.exec( newTitle );
    124126                        if ( regExMatch ) {
    125                                 newTitle = newTitle.replace( regExMatch[0], adminCommentsL10n.docTitleComments );
     127                                newTitle = newTitle.replace( regExMatch[0], wp.i18n.__( 'Comments' ) );
    126128                        }
    127129                }
    128130                document.title = newTitle;
    setCommentsList = function() { 
    218220
    219221                if ( c.is('.unapproved') ) {
    220222                        if ( settings.data.id == replyID )
    221                                 replyButton.text(adminCommentsL10n.replyApprove);
     223                                replyButton.text( wp.i18n.__( 'Approve and Reply' ) );
    222224
    223225                        c.find( '.row-actions span.view' ).addClass( 'hidden' ).end()
    224226                                .find( 'div.comment_status' ).html( '0' );
    225227
    226228                } else {
    227229                        if ( settings.data.id == replyID )
    228                                 replyButton.text(adminCommentsL10n.reply);
     230                                replyButton.text( wp.i18n.__( 'Reply' ) );
    229231
    230232                        c.find( '.row-actions span.view' ).removeClass( 'hidden' ).end()
    231233                                .find( 'div.comment_status' ).html( '1' );
    commentReply = { 
    607609        },
    608610
    609611        toggle : function(el) {
    610                 if ( 'none' !== $( el ).css( 'display' ) && ( $( '#replyrow' ).parent().is('#com-reply') || window.confirm( adminCommentsL10n.warnQuickEdit ) ) ) {
     612                if ( 'none' !== $( el ).css( 'display' ) && ( $( '#replyrow' ).parent().is('#com-reply') || window.confirm( wp.i18n.__( "Are you sure you want to edit this comment?\nThe changes you made will be lost." ) ) ) ) {
    611613                        $( el ).find( 'a.vim-q' ).click();
    612614                }
    613615        },
    commentReply = { 
    715717                        c.after(editRow);
    716718
    717719                        if ( c.hasClass('unapproved') ) {
    718                                 replyButton.text(adminCommentsL10n.replyApprove);
     720                                replyButton.text( wp.i18n.__( 'Approve and Reply' ) );
    719721                        } else {
    720                                 replyButton.text(adminCommentsL10n.reply);
     722                                replyButton.text( wp.i18n.__( 'Reply' ) );
    721723                        }
    722724
    723725                        $('#replyrow').fadeIn(300, function(){ $(this).show(); });
    commentReply = { 
    875877                        return true;
    876878                }
    877879
    878                 return window.confirm( adminCommentsL10n.warnCommentChanges );
     880                return window.confirm( __( "Are you sure you want to do this?\nThe comment changes you made will be lost." ) );
    879881        }
    880882};
    881883
  • src/wp-admin/js/inline-edit-post.js

    diff --git src/wp-admin/js/inline-edit-post.js src/wp-admin/js/inline-edit-post.js
    index 3a65805..adad7ea 100644
     
    1 /* global inlineEditL10n, ajaxurl, typenow */
     1/* global ajaxurl, typenow */
    22window.wp = window.wp || {};
    33
    44var inlineEditPost;
    inlineEditPost = { 
    9595                        if ( $(this).prop('checked') ) {
    9696                                c = false;
    9797                                var id = $(this).val(), theTitle;
    98                                 theTitle = $('#inline_'+id+' .post_title').html() || inlineEditL10n.notitle;
    99                                 te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
     98                                theTitle = $('#inline_'+id+' .post_title').html() || wp.i18n.__( '(no title)' );
     99                                te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="' + wp.i18n.__( 'Remove From Bulk Edit' ) + '">X</a>'+theTitle+'</div>';
    100100                        }
    101101                });
    102102
    inlineEditPost = { 
    116116                if ( 'post' === type ) {
    117117                        // support multi taxonomies?
    118118                        tax = 'post_tag';
    119                         $('tr.inline-editor textarea[name="tax_input['+tax+']"]').suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma } );
     119                        $('tr.inline-editor textarea[name="tax_input['+tax+']"]').suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: wp.i18n._x( ',', 'tag delimiter' ).trim() } );
    120120                }
    121121                $('html, body').animate( { scrollTop: 0 }, 'fast' );
    122122        },
    inlineEditPost = { 
    184184                        var terms = $(this),
    185185                                taxname = $(this).attr('id').replace('_' + id, ''),
    186186                                textarea = $('textarea.tax_input_' + taxname, editRow),
    187                                 comma = inlineEditL10n.comma;
     187                                comma = wp.i18n._x( ',', 'tag delimiter' ).trim();
    188188
    189189                        terms.find( 'img' ).replaceWith( function() { return this.alt; } );
    190190                        terms = terms.text();
    inlineEditPost = { 
    196196                                textarea.val(terms);
    197197                        }
    198198
    199                         textarea.suggest( ajaxurl + '?action=ajax-tag-search&tax=' + taxname, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma } );
     199                        textarea.suggest( ajaxurl + '?action=ajax-tag-search&tax=' + taxname, { delay: 500, minchars: 2, multiple: true, multipleSep: wp.i18n._x( ',', 'tag delimiter' ).trim() } );
    200200                });
    201201
    202202                // handle the post status
    inlineEditPost = { 
    276276                                                $( inlineEditPost.what + id ).hide().fadeIn( 400, function() {
    277277                                                        // Move focus back to the Quick Edit link. $( this ) is the row being animated.
    278278                                                        $( this ).find( '.editinline' ).focus();
    279                                                         wp.a11y.speak( inlineEditL10n.saved );
     279                                                        wp.a11y.speak( wp.i18n.__( 'Changes saved.' ) );
    280280                                                });
    281281                                        } else {
    282282                                                r = r.replace( /<.[^<>]*?>/g, '' );
    inlineEditPost = { 
    284284                                                wp.a11y.speak( $errorSpan.text() );
    285285                                        }
    286286                                } else {
    287                                         $errorSpan.html( inlineEditL10n.error ).show();
    288                                         wp.a11y.speak( inlineEditL10n.error );
     287                                        $errorSpan.html( wp.i18n.__( 'Error while saving the changes.' ) ).show();
     288                                        wp.a11y.speak( wp.i18n.__( 'Error while saving the changes.' ), 'polite' );
    289289                                }
    290290                        },
    291291                'html');
  • src/wp-admin/js/inline-edit-tax.js

    diff --git src/wp-admin/js/inline-edit-tax.js src/wp-admin/js/inline-edit-tax.js
    index daad73f..8b4701c 100644
     
    1 /* global inlineEditL10n, ajaxurl */
     1/* global ajaxurl */
    22/**
    33 * This file is used on the term overview page to power quick-editing terms.
    44 */
    inlineEditTax = { 
    221221                                                row.hide().fadeIn( 400, function() {
    222222                                                        // Move focus back to the Quick Edit link.
    223223                                                        row.find( '.editinline' ).focus();
    224                                                         wp.a11y.speak( inlineEditL10n.saved );
     224                                                        wp.a11y.speak( wp.i18n.__( 'Changes saved.' ), 'polite' );
    225225                                                });
    226226
    227227                                        } else {
    inlineEditTax = { 
    233233                                                wp.a11y.speak( $errorSpan.text() );
    234234                                        }
    235235                                } else {
    236                                         $errorSpan.html( inlineEditL10n.error ).show();
    237                                         wp.a11y.speak( inlineEditL10n.error );
     236                                        $errorSpan.html( wp.i18n.__( 'Error while saving the changes.' ) ).show();
     237                                        wp.a11y.speak( wp.i18n.__( 'Error while saving the changes.' ), 'polite' );
    238238                                }
    239239                        }
    240240                );
  • src/wp-admin/js/media.js

    diff --git src/wp-admin/js/media.js src/wp-admin/js/media.js
    index e23adeb..77e0508 100644
     
    1 /* global ajaxurl, attachMediaBoxL10n, _wpMediaGridSettings, showNotice */
     1/* global ajaxurl, _wpMediaGridSettings, showNotice */
    22
    33var findPosts;
    44( function( $ ){
    var findPosts; 
    6161                                spinner.removeClass( 'is-active' );
    6262                        }).done( function( x ) {
    6363                                if ( ! x.success ) {
    64                                         $( '#find-posts-response' ).text( attachMediaBoxL10n.error );
     64                                        $( '#find-posts-response' ).text( wp.i18n.__( 'Could not load the preview image. Please reload the page and try again.' ) );
    6565                                }
    6666
    6767                                $( '#find-posts-response' ).html( x.data );
    6868                        }).fail( function() {
    69                                 $( '#find-posts-response' ).text( attachMediaBoxL10n.error );
     69                                $( '#find-posts-response' ).text( wp.i18n.__( 'Could not load the preview image. Please reload the page and try again.' ) );
    7070                        });
    7171                }
    7272        };
  • src/wp-admin/js/nav-menu.js

    diff --git src/wp-admin/js/nav-menu.js src/wp-admin/js/nav-menu.js
    index 2410efe..c7c817f 100644
     
    88 * @subpackage Administration
    99 */
    1010
    11 /* global menus, postboxes, columns, isRtl, navMenuL10n, ajaxurl */
     11/* global menus, postboxes, columns, isRtl, ajaxurl */
    1212
    1313var wpNavMenu;
    1414
    var wpNavMenu; 
    583583                                if ( title ) {
    584584                                        titleEl.text( title ).removeClass( 'no-title' );
    585585                                } else {
    586                                         titleEl.text( navMenuL10n.untitled ).addClass( 'no-title' );
     586                                        titleEl.text( wp.i18n._x( '(no label)', 'missing menu item navigation label' ) ).addClass( 'no-title' );
    587587                                }
    588588                        } );
    589589                },
    var wpNavMenu; 
    10251025                        if ( 0 !== $('#menu-to-edit').length || 0 !== $('.menu-location-menus select').length ) {
    10261026                                window.onbeforeunload = function(){
    10271027                                        if ( api.menusChanged )
    1028                                                 return navMenuL10n.saveAlert;
     1028                                                return wp.i18n.__( 'The changes you made will be lost if you navigate away from this page.' );
    10291029                                };
    10301030                        } else {
    10311031                                // Make the post boxes read-only, as they can't be used yet
    var wpNavMenu; 
    11721172
    11731173                eventOnClickMenuDelete : function() {
    11741174                        // Delete warning AYS
    1175                         if ( window.confirm( navMenuL10n.warnDeleteMenu ) ) {
     1175                        if ( window.confirm( wp.i18n.__( "You are about to permanently delete this menu. \n 'Cancel' to stop, 'OK' to delete." ) ) ) {
    11761176                                window.onbeforeunload = null;
    11771177                                return true;
    11781178                        }
    var wpNavMenu; 
    12031203                        $item;
    12041204
    12051205                        if( ! $items.length ) {
    1206                                 $('.categorychecklist', panel).html( '<li><p>' + navMenuL10n.noResultsFound + '</p></li>' );
     1206                                $('.categorychecklist', panel).html( '<li><p>' + wp.i18n.__( 'No results found.' ) + '</p></li>' );
    12071207                                $( '.spinner', panel ).removeClass( 'is-active' );
    12081208                                wrapper.addClass( 'has-no-menu-item' );
    12091209                                return;
  • src/wp-admin/js/plugin-install.js

    diff --git src/wp-admin/js/plugin-install.js src/wp-admin/js/plugin-install.js
    index 71b0e70..a32d5dc 100644
     
    1 /* global plugininstallL10n, tb_click, tb_remove */
     1/* global tb_click, tb_remove */
    22
    33/**
    44 * Functionality for the plugin install screens.
    jQuery( document ).ready( function( $ ) { 
    139139        // Open the Plugin details modal.
    140140        $( '.thickbox.open-plugin-details-modal' ).on( 'click', function( e ) {
    141141                // The `data-title` attribute is used only in the Plugin screens.
    142                 var title = $( this ).data( 'title' ) ? plugininstallL10n.plugin_information + ' ' + $( this ).data( 'title' ) : plugininstallL10n.plugin_modal_label;
     142                var title = $( this ).data( 'title' ) ? wp.i18n.__( 'Plugin:' ) + ' ' + $( this ).data( 'title' ) : wp.i18n.__( 'Plugin details' );
    143143
    144144                e.preventDefault();
    145145                e.stopPropagation();
    jQuery( document ).ready( function( $ ) { 
    152152                // Set ARIA role and ARIA label.
    153153                tbWindow.attr({
    154154                        'role': 'dialog',
    155                         'aria-label': plugininstallL10n.plugin_modal_label
     155                        'aria-label': wp.i18n.__( 'Plugin details' )
    156156                });
    157157
    158158                // Set title attribute on the iframe.
  • src/wp-admin/js/post.js

    diff --git src/wp-admin/js/post.js src/wp-admin/js/post.js
    index af9015b..dc4bb25 100644
     
    1 /* global postL10n, ajaxurl, wpAjax, setPostThumbnailL10n, postboxes, pagenow, tinymce, alert, deleteUserSetting */
     1/* global ajaxurl, wpAjax, postboxes, pagenow, tinymce, alert, deleteUserSetting */
    22/* global theList:true, theExtraList:true, getUserSetting, setUserSetting, commentReply */
    33
    44/**
    window.wp = window.wp || {}; 
    7373                                                if ( commentsBox.st > commentsBox.total )
    7474                                                        $('#show-comments').hide();
    7575                                                else
    76                                                         $('#show-comments').show().children('a').html(postL10n.showcomm);
     76                                                        $('#show-comments').show().children('a').html( wp.i18n.__( 'Show more comments' ) );
    7777
    7878                                                return;
    7979                                        } else if ( 1 == r ) {
    80                                                 $('#show-comments').html(postL10n.endcomm);
     80                                                $('#show-comments').html( wp.i18n.__( 'No more comments found.' ) );
    8181                                                return;
    8282                                        }
    8383
    window.wp = window.wp || {}; 
    105105         * Overwrite the content of the Featured Image postbox
    106106         *
    107107         * @param {string} html New HTML to be displayed in the content area of the postbox.
    108          * 
     108         *
    109109         * @global
    110110         */
    111111        WPSetThumbnailHTML = function(html){
    window.wp = window.wp || {}; 
    144144                         */
    145145                        function(str){
    146146                        if ( str == '0' ) {
    147                                 alert( setPostThumbnailL10n.error );
     147                                alert( wp.i18n.__( 'Could not set that as the thumbnail image. Try a different attachment.' ) );
    148148                        } else {
    149149                                WPSetThumbnailHTML(str);
    150150                        }
    jQuery(document).ready( function($) { 
    465465                        $submitButtons.removeClass( 'disabled' );
    466466                }
    467467        }).on( 'before-autosave.edit-post', function() {
    468                 $( '.autosave-message' ).text( postL10n.savingText );
     468                $( '.autosave-message' ).text( wp.i18n.__( 'Saving...' ) ); // No ellipsis.
    469469        }).on( 'after-autosave.edit-post', function( event, data ) {
    470470                $( '.autosave-message' ).text( data.message );
    471471
    jQuery(document).ready( function($) { 
    484484                if ( ( editor && ! editor.isHidden() && editor.isDirty() ) ||
    485485                        ( wp.autosave && wp.autosave.server.postChanged() ) ) {
    486486
    487                         return postL10n.saveAlert;
     487                        return wp.i18n.__( 'The changes you made will be lost if you navigate away from this page.' );
    488488                }
    489489        }).on( 'unload.edit-post', function( event ) {
    490490                if ( ! releaseLock ) {
    jQuery(document).ready( function($) { 
    729729
    730730                        // Determine what the publish should be depending on the date and post status.
    731731                        if ( attemptedDate > currentDate && $('#original_post_status').val() != 'future' ) {
    732                                 publishOn = postL10n.publishOnFuture;
    733                                 $('#publish').val( postL10n.schedule );
     732                                publishOn = wp.i18n.__( 'Schedule for:' );
     733                                $('#publish').val( wp.i18n.__( 'Schedule' ) );
    734734                        } else if ( attemptedDate <= currentDate && $('#original_post_status').val() != 'publish' ) {
    735                                 publishOn = postL10n.publishOn;
    736                                 $('#publish').val( postL10n.publish );
     735                                publishOn = wp.i18n.__( 'Publish on:' );
     736                                $('#publish').val( wp.i18n.__( 'Publish' ) );
    737737                        } else {
    738                                 publishOn = postL10n.publishOnPast;
    739                                 $('#publish').val( postL10n.update );
     738                                publishOn = wp.i18n.__( 'Published on:' );
     739                                $('#publish').val( wp.i18n.__( 'Update' ) );
    740740                        }
    741741
    742742                        // If the date is the same, set it to trigger update events.
    jQuery(document).ready( function($) { 
    746746                        } else {
    747747                                $('#timestamp').html(
    748748                                        '\n' + publishOn + ' <b>' +
    749                                         postL10n.dateFormat
     749                                        /* translators: 1: month, 2: day, 3: year, 4: hour, 5: minute */
     750                                        wp.i18n.__( '%1$s %2$s, %3$s @ %4$s:%5$s' )
    750751                                                .replace( '%1$s', $( 'option[value="' + mm + '"]', '#mm' ).attr( 'data-text' ) )
    751752                                                .replace( '%2$s', parseInt( jj, 10 ) )
    752753                                                .replace( '%3$s', aa )
    jQuery(document).ready( function($) { 
    758759
    759760                        // Add "privately published" to post status when applies.
    760761                        if ( $postVisibilitySelect.find('input:radio:checked').val() == 'private' ) {
    761                                 $('#publish').val( postL10n.update );
     762                                $('#publish').val( wp.i18n.__( 'Update' ) );
    762763                                if ( 0 === optPublish.length ) {
    763                                         postStatus.append('<option value="publish">' + postL10n.privatelyPublished + '</option>');
     764                                        postStatus.append('<option value="publish">' + wp.i18n.__( 'Privately Published' ) + '</option>');
    764765                                } else {
    765                                         optPublish.html( postL10n.privatelyPublished );
     766                                        optPublish.html( wp.i18n.__( 'Privately Published' ) );
    766767                                }
    767768                                $('option[value="publish"]', postStatus).prop('selected', true);
    768769                                $('#misc-publishing-actions .edit-post-status').hide();
    jQuery(document).ready( function($) { 
    773774                                                postStatus.val($('#hidden_post_status').val());
    774775                                        }
    775776                                } else {
    776                                         optPublish.html( postL10n.published );
     777                                        optPublish.html( wp.i18n.__( 'Published' ) );
    777778                                }
    778779                                if ( postStatus.is(':hidden') )
    779780                                        $('#misc-publishing-actions .edit-post-status').show();
    jQuery(document).ready( function($) { 
    788789                        } else {
    789790                                $('#save-post').show();
    790791                                if ( $('option:selected', postStatus).val() == 'pending' ) {
    791                                         $('#save-post').show().val( postL10n.savePending );
     792                                        $('#save-post').show().val( wp.i18n.__( 'Save as Pending' ) );
    792793                                } else {
    793                                         $('#save-post').show().val( postL10n.saveDraft );
     794                                        $('#save-post').show().val( wp.i18n.__( 'Save Draft' ) );
    794795                                }
    795796                        }
    796797                        return true;
    jQuery(document).ready( function($) { 
    822823
    823824                // Set the selected visibility as current.
    824825                $postVisibilitySelect.find('.save-post-visibility').click( function( event ) { // crazyhorse - multiple ok cancels
     826                        var visibility;
     827
    825828                        $postVisibilitySelect.slideUp('fast');
    826829                        $('#visibility .edit-visibility').show().focus();
    827830                        updateText();
    jQuery(document).ready( function($) { 
    830833                                $('#sticky').prop('checked', false);
    831834                        }
    832835
    833                         if ( $('#sticky').prop('checked') ) {
    834                                 sticky = 'Sticky';
    835                         } else {
    836                                 sticky = '';
     836                        switch ( $postVisibilitySelect.find( 'input:radio:checked' ).val() ) {
     837                                case 'password':
     838                                        visibility = wp.i18n.__( 'Password Protected' );
     839                                        break;
     840                                case 'private':
     841                                        visibility = wp.i18n.__( 'Private' );
     842                                        break;
     843                                default:
     844                                        visibility = $( '#sticky' ).prop( 'checked' ) ? wp.i18n.__( 'Public, Sticky' ) : wp.i18n.__( 'Public' );
     845                                        break;
    837846                        }
    838847
    839                         $('#post-visibility-display').html(     postL10n[ $postVisibilitySelect.find('input:radio:checked').val() + sticky ]    );
     848                        $('#post-visibility-display').html(     visibility );
    840849                        event.preventDefault();
    841850                });
    842851
    jQuery(document).ready( function($) { 
    950959                $el = $( '#editable-post-name' );
    951960                revert_e = $el.html();
    952961
    953                 buttons.html( '<button type="button" class="save button button-small">' + postL10n.ok + '</button> <button type="button" class="cancel button-link">' + postL10n.cancel + '</button>' );
     962                buttons.html( '<button type="button" class="save button button-small">' + wp.i18n.__( 'OK' ) + '</button> <button type="button" class="cancel button-link">' + wp.i18n.__( 'Cancel' ) + '</button>' );
    954963
    955964                // Save permalink changes.
    956965                buttons.children( '.save' ).click( function() {
    jQuery(document).ready( function($) { 
    983992                                        permalink.html(permalinkOrig);
    984993                                        real_slug.val(new_slug);
    985994                                        $( '.edit-slug' ).focus();
    986                                         wp.a11y.speak( postL10n.permalinkSaved );
     995                                        wp.a11y.speak( wp.i18n.__( 'Permalink saved' ) );
    987996                                }
    988997                        );
    989998                });
  • src/wp-admin/js/postbox.js

    diff --git src/wp-admin/js/postbox.js src/wp-admin/js/postbox.js
    index bbc73b2..c28cf13 100644
    var postboxes; 
    348348                                        t.removeClass('empty-container');
    349349                                }
    350350                                else {
    351                                         t.addClass('empty-container');
    352                                         t.attr('data-emptyString', postBoxL10n.postBoxEmptyString);
     351                                        t.addClass( 'empty-container' );
     352                                        t.attr( 'data-emptyString', wp.i18n.__( 'Drag boxes here' ) );
    353353                                }
    354354                        });
    355355
  • src/wp-admin/js/press-this.js

    diff --git src/wp-admin/js/press-this.js src/wp-admin/js/press-this.js
    index bf2e830..e85ac64 100644
     
    4242                 *************************************************************** */
    4343
    4444                /**
    45                  * Emulates our PHP __() gettext function, powered by the strings exported in pressThisL10n.
    46                  *
    47                  * @param key string Key of the string to be translated, as found in pressThisL10n.
    48                  * @returns string Original or translated string, or empty string if no key.
    49                  */
    50                 function __( key ) {
    51                         if ( key && window.pressThisL10n ) {
    52                                 return window.pressThisL10n[key] || key;
    53                         }
    54 
    55                         return key || '';
    56                 }
    57 
    58                 /**
    5945                 * Strips HTML tags
    6046                 *
    6147                 * @param string string Text to have the HTML tags striped out of.
     
    301287                                        }
    302288                                }
    303289                        }).fail( function() {
    304                                 renderError( __( 'serverError' ) );
     290                                renderError( wp.i18n.__( 'Connection lost or the server is busy. Please try again later.' ) );
    305291                        });
    306292                }
    307293
     
    451437                        var $element = $mediaThumbWrap.clone().addClass( 'is-image' );
    452438
    453439                        $element.attr( 'data-wp-src', src ).css( 'background-image', 'url(' + displaySrc + ')' )
    454                                 .find( 'span' ).text( __( 'suggestedImgAlt' ).replace( '%d', i + 1 ) );
     440                                /* translators: %d: nth image found in a post */
     441                                .find( 'span' ).text( wp.i18n.__( 'Suggested image #%d' ).replace( '%d', i + 1 ) );
    455442
    456443                        $mediaList.append( $element );
    457444                }
     
    490477                                                cssClass += ' is-video';
    491478                                        }
    492479
    493                                         $element.attr( 'data-wp-src', src ).find( 'span' ).text( __( 'suggestedEmbedAlt' ).replace( '%d', i + 1 ) );
     480                                        /* translators: %d: nth embed found in a post */
     481                                        $element.attr( 'data-wp-src', src ).find( 'span' ).text( wp.i18n.__( 'Suggested embed #%d' ).replace( '%d', i + 1 ) );
    494482
    495483                                        if ( displaySrc ) {
    496484                                                $element.css( 'background-image', 'url(' + displaySrc + ')' );
     
    854842
    855843                        $window.on( 'beforeunload.press-this', function() {
    856844                                if ( saveAlert || ( editor && editor.isDirty() ) ) {
    857                                         return __( 'saveAlert' );
     845                                        return wp.i18n.__( 'The changes you made will be lost if you navigate away from this page.' );
    858846                                }
    859847                        } ).on( 'resize.press-this', function() {
    860848                                if ( ! editor || editor.isHidden() ) {
  • src/wp-admin/js/set-post-thumbnail.js

    diff --git src/wp-admin/js/set-post-thumbnail.js src/wp-admin/js/set-post-thumbnail.js
    index 68abbcc..27c032b 100644
     
    1 /* global setPostThumbnailL10n, ajaxurl, post_id, alert */
     1/* global ajaxurl, post_id, alert */
    22/* exported WPSetAsThumbnail */
    33
    44function WPSetAsThumbnail( id, nonce ) {
    55        var $link = jQuery('a#wp-post-thumbnail-' + id);
    66
    7         $link.text( setPostThumbnailL10n.saving );
     7        $link.text( wp.i18n.__( 'Saving...' ) ); // No ellipsis.
    88        jQuery.post(ajaxurl, {
    99                action: 'set-post-thumbnail', post_id: post_id, thumbnail_id: id, _ajax_nonce: nonce, cookie: encodeURIComponent( document.cookie )
    1010        }, function(str){
    1111                var win = window.dialogArguments || opener || parent || top;
    12                 $link.text( setPostThumbnailL10n.setThumbnail );
     12                $link.text( wp.i18n.__( 'Use as featured image' ) );
    1313                if ( str == '0' ) {
    14                         alert( setPostThumbnailL10n.error );
     14                        alert( wp.i18n.__( 'Could not set that as the thumbnail image. Try a different attachment.' ) );
    1515                } else {
    1616                        jQuery('a.wp-post-thumbnail').show();
    17                         $link.text( setPostThumbnailL10n.done );
     17                        $link.text( wp.i18n.__( 'Done' ) );
    1818                        $link.fadeOut( 2000 );
    1919                        win.WPSetThumbnailID(id);
    2020                        win.WPSetThumbnailHTML(str);
  • src/wp-admin/js/tags-box.js

    diff --git src/wp-admin/js/tags-box.js src/wp-admin/js/tags-box.js
    index af823ac..8766ec7 100644
    var tagBox, array_unique_noempty; 
    2121
    2222        tagBox = {
    2323                clean : function(tags) {
    24                         var comma = window.tagsBoxL10n.tagDelimiter;
     24                        var comma = wp.i18n._x( ',', 'tag delimiter' );
    2525                        if ( ',' !== comma )
    2626                                tags = tags.replace(new RegExp(comma, 'g'), ',');
    2727                        tags = tags.replace(/\s*,\s*/g, ',').replace(/,+/g, ',').replace(/[,\s]+$/, '').replace(/^[,\s]+/, '');
    var tagBox, array_unique_noempty; 
    3535                                num = id.split('-check-num-')[1],
    3636                                taxbox = $(el).closest('.tagsdiv'),
    3737                                thetags = taxbox.find('.the-tags'),
    38                                 comma = window.tagsBoxL10n.tagDelimiter,
     38                                comma = wp.i18n._x( ',', 'tag delimiter' ),
    3939                                current_tags = thetags.val().split( comma ),
    4040                                new_tags = [];
    4141
    var tagBox, array_unique_noempty; 
    6565
    6666                        disabled = thetags.prop('disabled');
    6767
    68                         current_tags = thetags.val().split( window.tagsBoxL10n.tagDelimiter );
     68                        current_tags = thetags.val().split( wp.i18n._x( ',', 'tag delimiter' ) );
    6969                        tagchecklist.empty();
    7070
    7171                        $.each( current_tags, function( key, val ) {
    var tagBox, array_unique_noempty; 
    107107                        var tagsval, newtags, text,
    108108                                tags = $( '.the-tags', el ),
    109109                                newtag = $( 'input.newtag', el ),
    110                                 comma = window.tagsBoxL10n.tagDelimiter;
     110                                comma = wp.i18n._x( ',', 'tag delimiter' );
    111111
    112112                        a = a || false;
    113113
    var tagBox, array_unique_noempty; 
    177177                                var tax = $(this).closest('div.tagsdiv').attr('id');
    178178                                $(this).suggest(
    179179                                        ajaxurl + '?action=ajax-tag-search&tax=' + tax,
    180                                         { delay: 500, minchars: 2, multiple: true, multipleSep: window.tagsBoxL10n.tagDelimiter }
     180                                        { delay: 500, minchars: 2, multiple: true, multipleSep: wp.i18n._x( ',', 'tag delimiter' ) }
    181181                                );
    182182                        });
    183183
  • src/wp-admin/js/tags.js

    diff --git src/wp-admin/js/tags.js src/wp-admin/js/tags.js
    index 333a2eb..5628ad0 100644
    jQuery(document).ready(function($) { 
    1616                                        $('select#parent option[value="' + data.match(/tag_ID=(\d+)/)[1] + '"]').remove();
    1717                                        $('a.tag-link-' + data.match(/tag_ID=(\d+)/)[1]).remove();
    1818                                } else if ( '-1' == r ) {
    19                                         $('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.noPerm + '</p></div>');
     19                                        $('#ajax-response').empty().append('<div class="error"><p>' + wp.i18n.__( 'Sorry, you are not allowed to do that.' ) + '</p></div>');
    2020                                        tr.children().css('backgroundColor', '');
    2121                                } else {
    22                                         $('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.broken + '</p></div>');
     22                                        $('#ajax-response').empty().append('<div class="error"><p>' + wp.i18n.__( 'An unidentified error has occurred.' ) + '</p></div>');
    2323                                        tr.children().css('backgroundColor', '');
    2424                                }
    2525                        });
  • src/wp-admin/js/theme.js

    diff --git src/wp-admin/js/theme.js src/wp-admin/js/theme.js
    index 1be6f18..7842c77 100644
    window.wp = window.wp || {}; 
    44( function($) {
    55
    66// Set up our namespace...
    7 var themes, l10n;
    8 themes = wp.themes = wp.themes || {};
     7var themes = wp.themes = wp.themes || {};
    98
    109// Store the theme data and settings for organized and quick access
    11 // themes.data.settings, themes.data.themes, themes.data.l10n
     10// themes.data.settings, themes.data.themes
    1211themes.data = _wpThemeSettings;
    13 l10n = themes.data.l10n;
    1412
    1513// Shortcut for isInstall check
    1614themes.isInstall = !! themes.data.settings.isInstall;
    themes.view.Appearance = wp.Backbone.View.extend({ 
    104102                // Render and append after screen title
    105103                view.render();
    106104                this.searchContainer
    107                         .append( $.parseHTML( '<label class="screen-reader-text" for="wp-filter-search-input">' + l10n.search + '</label>' ) )
     105                        .append( $.parseHTML( '<label class="screen-reader-text" for="wp-filter-search-input">' + wp.i18n.__( 'Search Themes' ) + '</label>' ) )
    108106                        .append( view.el );
    109107        },
    110108
    themes.view.Preview = themes.view.Details.extend({ 
    916914        collapse: function( event ) {
    917915                var $button = $( event.currentTarget );
    918916                if ( 'true' === $button.attr( 'aria-expanded' ) ) {
    919                         $button.attr({ 'aria-expanded': 'false', 'aria-label': l10n.expandSidebar });
     917                        $button.attr({ 'aria-expanded': 'false', 'aria-label': wp.i18n.__( 'Expand Sidebar' ) });
    920918                } else {
    921                         $button.attr({ 'aria-expanded': 'true', 'aria-label': l10n.collapseSidebar });
     919                        $button.attr({ 'aria-expanded': 'true', 'aria-label': wp.i18n.__( 'Collapse Sidebar' ) });
    922920                }
    923921
    924922                this.$el.toggleClass( 'collapsed' ).toggleClass( 'expanded' );
    themes.view.Themes = wp.Backbone.View.extend({ 
    11551153
    11561154                // 'Add new theme' element shown at the end of the grid
    11571155                if ( ! themes.isInstall && themes.data.settings.canInstall ) {
    1158                         this.$el.append( '<div class="theme add-new-theme"><a href="' + themes.data.settings.installURI + '"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">' + l10n.addNew + '</h2></a></div>' );
     1156                        this.$el.append( '<div class="theme add-new-theme"><a href="' + themes.data.settings.installURI + '"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">' + wp.i18n.__( 'Add New Theme' ) + '</h2></a></div>' );
    11591157                }
    11601158
    11611159                this.parent.page++;
    themes.view.Themes = wp.Backbone.View.extend({ 
    12111209                                $modal.find( '.notice-warning' )
    12121210                                        .removeClass( 'notice-large' )
    12131211                                        .addClass( 'updating-message' )
    1214                                         .find( 'p' ).text( wp.updates.l10n.updating );
     1212                                        .find( 'p' ).text( wp.i18n.__( 'Updating...' ) );
    12151213                        } else if ( $card.find( '.notice-error' ).length ) {
    12161214                                $modal.find( '.notice-warning' ).remove();
    12171215                        }
    themes.view.Themes = wp.Backbone.View.extend({ 
    12871285        // Dispatch audible search results feedback message
    12881286        announceSearchResults: function( count ) {
    12891287                if ( 0 === count ) {
    1290                         wp.a11y.speak( l10n.noThemesFound );
     1288                        wp.a11y.speak( __( 'No themes found. Try a different search.' ), 'polite' );
    12911289                } else {
    1292                         wp.a11y.speak( l10n.themesFound.replace( '%d', count ) );
     1290                        wp.a11y.speak( wp.i18n._n( '%d Theme found', '%d Themes found', count ).replace( '%d', count ), 'polite' );
    12931291                }
    12941292        }
    12951293});
    themes.view.Search = wp.Backbone.View.extend({ 
    13031301        searching: false,
    13041302
    13051303        attributes: {
    1306                 placeholder: l10n.searchPlaceholder,
     1304                placeholder: __( 'Search themes...' ), // No ellipsis.
    13071305                type: 'search',
    13081306                'aria-describedby': 'live-search-desc'
    13091307        },
    themes.view.Installer = themes.view.Appearance.extend({ 
    15851583                this.listenTo( this.collection, 'query:fail', function() {
    15861584                        $( 'body' ).removeClass( 'loading-content' );
    15871585                        $( '.theme-browser' ).find( 'div.error' ).remove();
    1588                         $( '.theme-browser' ).find( 'div.themes' ).before( '<div class="error"><p>' + l10n.error + '</p></div>' );
     1586                        $( '.theme-browser' ).find( 'div.themes' ).before( '<div class="error"><p>' + wp.i18n.__( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="https://wordpress.org/support/">support forums</a>.' ) + '</p></div>' );
    15891587                });
    15901588
    15911589                if ( this.view ) {
    themes.view.Installer = themes.view.Appearance.extend({ 
    16951693                }
    16961694
    16971695                if ( ! tags ) {
    1698                         wp.a11y.speak( l10n.selectFeatureFilter );
     1696                        /* translators: hidden accessibility text */
     1697                        wp.a11y.speak( wp.i18n.__( 'Select one or more Theme features to filter by' ) );
    16991698                        return;
    17001699                }
    17011700
  • src/wp-admin/js/updates.js

    diff --git src/wp-admin/js/updates.js src/wp-admin/js/updates.js
    index 200241b..2106442 100644
     
    1414 * @param {object}  wp                                  WP object.
    1515 * @param {object}  settings                            WP Updates settings.
    1616 * @param {string}  settings.ajax_nonce                 AJAX nonce.
    17  * @param {object}  settings.l10n                       Translation strings.
     17 * @param {bool}    settings.isNetworkAdmin             Whether we're in the network admin or not.
    1818 * @param {object=} settings.plugins                    Base names of plugins in their different states.
    1919 * @param {Array}   settings.plugins.all                Base names of all plugins.
    2020 * @param {Array}   settings.plugins.active             Base names of active plugins.
     
    5050        wp.updates.ajaxNonce = settings.ajax_nonce;
    5151
    5252        /**
    53          * Localized strings.
     53         * Whether we're in the network admin or not.
    5454         *
    55          * @since 4.2.0
     55         * @since 4.7.0
    5656         *
    57          * @type {object}
     57         * @type {bool}
    5858         */
    59         wp.updates.l10n = settings.l10n;
     59        wp.updates.isNetworkAdmin = settings.isNetworkAdmin;
    6060
    6161        /**
    6262         * Current search term.
     
    351351                if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
    352352                        $updateRow = $( 'tr[data-plugin="' + args.plugin + '"]' );
    353353                        $message   = $updateRow.find( '.update-message' ).removeClass( 'notice-error' ).addClass( 'updating-message notice-warning' ).find( 'p' );
    354                         message    = wp.updates.l10n.updatingLabel.replace( '%s', $updateRow.find( '.plugin-title strong' ).text() );
     354                        /* translators: %s: Plugin name and version */
     355                        message    = wp.i18n.__( 'Updating %s...' ).replace( '%s', $updateRow.find( '.plugin-title strong' ).text() );
    355356                } else if ( 'plugin-install' === pagenow || 'plugin-install-network' === pagenow ) {
    356357                        $card    = $( '.plugin-card-' + args.slug );
    357358                        $message = $card.find( '.update-now' ).addClass( 'updating-message' );
    358                         message  = wp.updates.l10n.updatingLabel.replace( '%s', $message.data( 'name' ) );
     359                        /* translators: %s: Plugin name and version */
     360                        message  = wp.i18n.__( 'Updating %s...' ).replace( '%s', $message.data( 'name' ) );
    359361
    360362                        // Remove previous error messages, if any.
    361363                        $card.removeClass( 'plugin-card-update-failed' ).find( '.notice.notice-error' ).remove();
    362364                }
    363365
    364                 if ( $message.html() !== wp.updates.l10n.updating ) {
     366                if ( $message.html() !== wp.i18n.__( 'Updating...' ) ) {
    365367                        $message.data( 'originaltext', $message.html() );
    366368                }
    367369
    368370                $message
    369371                        .attr( 'aria-label', message )
    370                         .text( wp.updates.l10n.updating );
     372                        .text( wp.i18n.__( 'Updating...' ) );
    371373
    372374                $document.trigger( 'wp-plugin-updating', args );
    373375
     
    409411                }
    410412
    411413                $updateMessage
    412                         .attr( 'aria-label', wp.updates.l10n.updatedLabel.replace( '%s', response.pluginName ) )
    413                         .text( wp.updates.l10n.updated );
     414                        /* translators: %s: Plugin name and version */
     415                        .attr( 'aria-label', wp.i18n.__( '%s updated!' ).replace( '%s', response.pluginName ) )
     416                        .text( wp.i18n.__( 'Updated!' ) );
    414417
    415                 wp.a11y.speak( wp.updates.l10n.updatedMsg, 'polite' );
     418                /* translators: JavaScript accessible string */
     419                wp.a11y.speak( wp.i18n.__( 'Update completed successfully.' ), 'polite' );
    416420
    417421                wp.updates.decrementCount( 'plugin' );
    418422
     
    444448                        return;
    445449                }
    446450
    447                 errorMessage = wp.updates.l10n.updateFailed.replace( '%s', response.errorMessage );
     451                /* translators: %s: Error string for a failed update */
     452                errorMessage = wp.i18n.__( 'Update Failed: %s' ).replace( '%s', response.errorMessage );
    448453
    449454                if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
    450455                        if ( response.plugin ) {
     
    456461
    457462                        if ( response.pluginName ) {
    458463                                $message.find( 'p' )
    459                                         .attr( 'aria-label', wp.updates.l10n.updateFailedLabel.replace( '%s', response.pluginName ) );
     464                                        /* translators: %s: Plugin name and version */
     465                                        .attr( 'aria-label', wp.i18n.__( '%s update failed' ).replace( '%s', response.pluginName ) );
    460466                        } else {
    461467                                $message.find( 'p' ).removeAttr( 'aria-label' );
    462468                        }
     
    469475                                } ) );
    470476
    471477                        $card.find( '.update-now' )
    472                                 .text( wp.updates.l10n.updateFailedShort ).removeClass( 'updating-message' );
     478                                .text( wp.i18n.__( 'Update Failed!' ) ).removeClass( 'updating-message' );
    473479
    474480                        if ( response.pluginName ) {
    475481                                $card.find( '.update-now' )
    476                                         .attr( 'aria-label', wp.updates.l10n.updateFailedLabel.replace( '%s', response.pluginName ) );
     482                                        /* translators: %s: Plugin name and version */
     483                                        .attr( 'aria-label', wp.i18n.__( '%s update failed' ).replace( '%s', response.pluginName ) );
    477484                        } else {
    478485                                $card.find( '.update-now' ).removeAttr( 'aria-label' );
    479486                        }
     
    488495
    489496                                        $card.find( '.update-now' )
    490497                                                .attr( 'aria-label', false )
    491                                                 .text( wp.updates.l10n.updateNow );
     498                                                .text( wp.i18n.__( 'Update Now' ) );
    492499                                }, 200 );
    493500                        } );
    494501                }
     
    523530                        $message = $( '[data-slug="' + args.slug + '"]' );
    524531                }
    525532
    526                 if ( $message.html() !== wp.updates.l10n.installing ) {
     533                if ( $message.html() !== wp.i18n.__( 'Installing...' ) ) {
    527534                        $message.data( 'originaltext', $message.html() );
    528535                }
    529536
    530537                $message
    531538                        .addClass( 'updating-message' )
    532                         .attr( 'aria-label', wp.updates.l10n.pluginInstallingLabel.replace( '%s', $message.data( 'name' ) ) )
    533                         .text( wp.updates.l10n.installing );
     539                        /* translators: %s: Plugin name and version */
     540                        .attr( 'aria-label', wp.i18n._x( 'Installing %s...', 'plugin' ).replace( '%s', $message.data( 'name' ) ) )
     541                        .text( wp.i18n.__( 'Installing...' ) );
    534542
    535                 wp.a11y.speak( wp.updates.l10n.installingMsg, 'polite' );
     543                wp.a11y.speak( wp.i18n.__( 'Installing... please wait.' ), 'polite' );
    536544
    537545                // Remove previous error messages, if any.
    538546                $card.removeClass( 'plugin-card-install-failed' ).find( '.notice.notice-error' ).remove();
     
    554562         * @param {string} response.activateUrl URL to activate the just installed plugin.
    555563         */
    556564        wp.updates.installPluginSuccess = function( response ) {
    557                 var $message = $( '.plugin-card-' + response.slug ).find( '.install-now' );
     565                var $message            = $( '.plugin-card-' + response.slug ).find( '.install-now' ),
     566                    activatePlugin      = wp.i18n.__( 'Activate' ),
     567                    /* translators: %s: Plugin name */
     568                    activatePluginLabel = wp.i18n._x( 'Activate %s', 'plugin' );
    558569
    559570                $message
    560571                        .removeClass( 'updating-message' )
    561572                        .addClass( 'updated-message installed button-disabled' )
    562                         .attr( 'aria-label', wp.updates.l10n.pluginInstalledLabel.replace( '%s', response.pluginName ) )
    563                         .text( wp.updates.l10n.installed );
     573                        /* translators: %s: Plugin name and version */
     574                        .attr( 'aria-label', wp.i18n._x( '%s installed!', 'plugin' ).replace( '%s', response.pluginName ) )
     575                        .text( wp.i18n.__( 'Installed!' ) );
    564576
    565                 wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
     577                wp.a11y.speak( wp.i18n.__( 'Installation completed successfully.' ), 'polite' );
    566578
    567579                $document.trigger( 'wp-plugin-install-success', response );
    568580
    569581                if ( response.activateUrl ) {
    570582                        setTimeout( function() {
     583                                if ( wp.updates.isNetworkAdmin ) {
     584                                        activatePlugin = wp.i18n.__( 'Network Activate' );
     585                                        /* translators: %s: Plugin name */
     586                                        activatePluginLabel = wp.i18n._x( 'Network Activate %s', 'plugin' );
     587                                }
    571588
    572589                                // Transform the 'Install' button into an 'Activate' button.
    573590                                $message.removeClass( 'install-now installed button-disabled updated-message' ).addClass( 'activate-now button-primary' )
    574591                                        .attr( 'href', response.activateUrl )
    575                                         .attr( 'aria-label', wp.updates.l10n.activatePluginLabel.replace( '%s', response.pluginName ) )
    576                                         .text( wp.updates.l10n.activatePlugin );
     592                                        .attr( 'aria-label', activatePluginLabel.replace( '%s', response.pluginName ) )
     593                                        .text( activatePlugin );
    577594                        }, 1000 );
    578595                }
    579596        };
     
    603620                        return;
    604621                }
    605622
    606                 errorMessage = wp.updates.l10n.installFailed.replace( '%s', response.errorMessage );
     623                /* translators: %s: Error string for a failed installation */
     624                errorMessage = wp.i18n.__( 'Installation failed: %s' ).replace( '%s', response.errorMessage );
    607625
    608626                $card
    609627                        .addClass( 'plugin-card-update-failed' )
     
    621639
    622640                $button
    623641                        .removeClass( 'updating-message' ).addClass( 'button-disabled' )
    624                         .attr( 'aria-label', wp.updates.l10n.pluginInstallFailedLabel.replace( '%s', $button.data( 'name' ) ) )
    625                         .text( wp.updates.l10n.installFailedShort );
     642                        /* translators: %s: Plugin name and version */
     643                        .attr( 'aria-label', wp.i18n._x( '%s installation failed', 'plugin' ).replace( '%s', $button.data( 'name' ) ) )
     644                        .text( wp.i18n.__( 'Install Failed!' ) );
    626645
    627646                wp.a11y.speak( errorMessage, 'assertive' );
    628647
     
    644663                wp.updates.addAdminNotice( {
    645664                        id:        'install-success',
    646665                        className: 'notice-success is-dismissible',
    647                         message:   wp.updates.l10n.importerInstalledMsg.replace( '%s', response.activateUrl + '&from=import' )
     666                        /* translators: %s: Activation URL */
     667                        message:   wp.i18n.__( 'Importer installed successfully. <a href="%s">Run importer</a>' ).replace( '%s', response.activateUrl + '&from=import' )
    648668                } );
    649669
    650670                $( '[data-slug="' + response.slug + '"]' )
     
    652672                        .addClass( 'activate-now' )
    653673                        .attr({
    654674                                'href': response.activateUrl + '&from=import',
    655                                 'aria-label': wp.updates.l10n.activateImporterLabel.replace( '%s', response.pluginName )
     675                                /* translators: %s: Importer name */
     676                                'aria-label': wp.i18n.__( 'Run %s' ).replace( '%s', response.pluginName )
    656677                        })
    657                         .text( wp.updates.l10n.activateImporter );
     678                        .text( wp.i18n.__( 'Run Importer' ) );
    658679
    659                 wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
     680                wp.a11y.speak( wp.i18n.__( 'Installation completed successfully.' ), 'polite' );
    660681
    661682                $document.trigger( 'wp-importer-install-success', response );
    662683        };
     
    674695         * @param {string}  response.errorMessage The error that occurred.
    675696         */
    676697        wp.updates.installImporterError = function( response ) {
    677                 var errorMessage = wp.updates.l10n.installFailed.replace( '%s', response.errorMessage ),
     698                /* translators: %s: Error string for a failed installation */
     699                var errorMessage = wp.i18n.__( 'Installation failed: %s' ).replace( '%s', response.errorMessage ),
    678700                        $installLink = $( '[data-slug="' + response.slug + '"]' ),
    679701                        pluginName = $installLink.data( 'name' );
    680702
     
    694716
    695717                $installLink
    696718                        .removeClass( 'updating-message' )
    697                         .text( wp.updates.l10n.installNow )
    698                         .attr( 'aria-label', wp.updates.l10n.installNowLabel.replace( '%s', pluginName ) );
     719                        .text( wp.i18n.__( 'Install Now' ) )
     720                        /* translators: %s: Plugin name */
     721                        .attr( 'aria-label', wp.i18n.__( 'Install %s now' ).replace( '%s', pluginName ) );
    699722
    700723                wp.a11y.speak( errorMessage, 'assertive' );
    701724
     
    723746                        error: wp.updates.deletePluginError
    724747                }, args );
    725748
    726                 if ( $link.html() !== wp.updates.l10n.deleting ) {
     749                if ( $link.html() !== wp.i18n.__( 'Deleting...' ) ) {
    727750                        $link
    728751                                .data( 'originaltext', $link.html() )
    729                                 .text( wp.updates.l10n.deleting );
     752                                .text( wp.i18n.__( 'Deleting...' ) );
    730753                }
    731754
    732                 wp.a11y.speak( wp.updates.l10n.deleting, 'polite' );
     755                wp.a11y.speak( wp.i18n.__( 'Deleting...' ), 'polite' );
    733756
    734757                $document.trigger( 'wp-plugin-deleting', args );
    735758
     
    816839                                $views.find( '.all' ).remove();
    817840
    818841                                if ( ! $form.find( 'tr.no-items' ).length ) {
    819                                         $form.find( '#the-list' ).append( '<tr class="no-items"><td class="colspanchange" colspan="' + columnCount + '">' + wp.updates.l10n.noPlugins + '</td></tr>' );
     842                                        $form.find( '#the-list' ).append( '<tr class="no-items"><td class="colspanchange" colspan="' + columnCount + '">' + wp.i18n.__( 'You do not appear to have any plugins available at this time.' ) + '</td></tr>' );
    820843                                }
    821844                        }
    822845                } );
    823846
    824                 wp.a11y.speak( wp.updates.l10n.deleted, 'polite' );
     847                wp.a11y.speak( wp.i18n.__( 'Deleted!' ), 'polite' );
    825848
    826849                $document.trigger( 'wp-plugin-delete-success', response );
    827850        };
     
    916939                        $notice = $notice.addClass( 'updating-message' ).find( 'p' );
    917940                }
    918941
    919                 if ( $notice.html() !== wp.updates.l10n.updating ) {
     942                if ( $notice.html() !== wp.i18n.__( 'Updating...' ) ) {
    920943                        $notice.data( 'originaltext', $notice.html() );
    921944                }
    922945
    923                 wp.a11y.speak( wp.updates.l10n.updatingMsg, 'polite' );
    924                 $notice.text( wp.updates.l10n.updating );
     946                /* translators: JavaScript accessible string */
     947                wp.a11y.speak( __( 'Updating... please wait.' ), 'polite' ); // No ellipsis.
     948                $notice.text( wp.i18n.__( 'Updating...' ) ); // No ellipsis.
    925949
    926950                $document.trigger( 'wp-theme-updating', args );
    927951
     
    945969                        $theme         = $( '[data-slug="' + response.slug + '"]' ),
    946970                        updatedMessage = {
    947971                                className: 'updated-message notice-success notice-alt',
    948                                 message:   wp.updates.l10n.updated
     972                                message:   wp.i18n.__( 'Updated!' )
    949973                        },
    950974                        $notice, newText;
    951975
     
    967991                }
    968992
    969993                wp.updates.addAdminNotice( _.extend( { selector: $notice }, updatedMessage ) );
    970                 wp.a11y.speak( wp.updates.l10n.updatedMsg, 'polite' );
     994                /* translators: JavaScript accessible string */
     995                wp.a11y.speak( wp.i18n.__( 'Update completed successfully.' ), 'polite' );
    971996
    972997                wp.updates.decrementCount( 'theme' );
    973998
     
    9921017         */
    9931018        wp.updates.updateThemeError = function( response ) {
    9941019                var $theme       = $( '[data-slug="' + response.slug + '"]' ),
    995                         errorMessage = wp.updates.l10n.updateFailed.replace( '%s', response.errorMessage ),
     1020                    /* translators: %s: Error string for a failed update */
     1021                        errorMessage = wp.i18n.__( 'Update Failed: %s' ).replace( '%s', response.errorMessage ),
    9961022                        $notice;
    9971023
    9981024                if ( ! wp.updates.isValidResponse( response, 'update' ) ) {
     
    10441070
    10451071                $message.addClass( 'updating-message' );
    10461072                $message.parents( '.theme' ).addClass( 'focus' );
    1047                 if ( $message.html() !== wp.updates.l10n.installing ) {
     1073                if ( $message.html() !== wp.i18n.__( 'Installing...' ) ) {
    10481074                        $message.data( 'originaltext', $message.html() );
    10491075                }
    10501076
    10511077                $message
    1052                         .text( wp.updates.l10n.installing )
    1053                         .attr( 'aria-label', wp.updates.l10n.themeInstallingLabel.replace( '%s', $message.data( 'name' ) ) );
    1054                 wp.a11y.speak( wp.updates.l10n.installingMsg, 'polite' );
     1078                        .text( wp.i18n__( 'Installing...' ) )
     1079                        /* translators: %s: Theme name and version */
     1080                        .attr( 'aria-label', wp.i18n._x( 'Installing %s...', 'theme' ).replace( '%s', $message.data( 'name' ) ) );
     1081                wp.a11y.speak( wp.i18n.__( 'Installing... please wait.' ), 'polite' );
    10551082
    10561083                // Remove previous error messages, if any.
    10571084                $( '.install-theme-info, [data-slug="' + args.slug + '"]' ).removeClass( 'theme-install-failed' ).find( '.notice.notice-error' ).remove();
     
    10731100         * @param {string} response.activateUrl  URL to activate the just installed theme.
    10741101         */
    10751102        wp.updates.installThemeSuccess = function( response ) {
    1076                 var $card = $( '.wp-full-overlay-header, [data-slug=' + response.slug + ']' ),
    1077                         $message;
     1103                var $card              = $( '.wp-full-overlay-header, [data-slug=' + response.slug + ']' ),
     1104                    activateTheme      = wp.i18n.__( 'Activate' ),
     1105                    activateThemeLabel = wp.i18n._x( 'Activate %s', 'theme' ),
     1106                    $message;
    10781107
    10791108                $document.trigger( 'wp-theme-install-success', response );
    10801109
    10811110                $message = $card.find( '.button-primary' )
    10821111                        .removeClass( 'updating-message' )
    10831112                        .addClass( 'updated-message disabled' )
    1084                         .attr( 'aria-label', wp.updates.l10n.themeInstalledLabel.replace( '%s', response.themeName ) )
    1085                         .text( wp.updates.l10n.installed );
     1113                        /* translators: %s: Theme name and version */
     1114                        .attr( 'aria-label', wp.i18n._x( '%s installed!', 'theme' ).replace( '%s', response.themeName ) )
     1115                        .text( wp.i18n.__( 'Installed!' ) );
    10861116
    1087                 wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
     1117                wp.a11y.speak( wp.i18n.__( 'Installation completed successfully.' ), 'polite' );
    10881118
    10891119                setTimeout( function() {
    10901120
    10911121                        if ( response.activateUrl ) {
     1122                                if ( wp.updates.isNetworkAdmin ) {
     1123                                        activateTheme = wp.i18n.__( 'Network Enable' );
     1124                                        /* translators: %s: Theme name */
     1125                                        activateThemeLabel = wp.i18n._x( 'Network Activate %s', 'theme' );
     1126                                }
    10921127
    10931128                                // Transform the 'Install' button into an 'Activate' button.
    10941129                                $message
    10951130                                        .attr( 'href', response.activateUrl )
    10961131                                        .removeClass( 'theme-install updated-message disabled' )
    10971132                                        .addClass( 'activate' )
    1098                                         .attr( 'aria-label', wp.updates.l10n.activateThemeLabel.replace( '%s', response.themeName ) )
    1099                                         .text( wp.updates.l10n.activateTheme );
     1133                                        .attr( 'aria-label', activateThemeLabel.replace( '%s', response.themeName ) )
     1134                                        .text( activateTheme );
    11001135                        }
    11011136
    11021137                        if ( response.customizeUrl ) {
     
    11061141                                        return $( '<a>' )
    11071142                                                .attr( 'href', response.customizeUrl )
    11081143                                                .addClass( 'button load-customize' )
    1109                                                 .text( wp.updates.l10n.livePreview );
     1144                                                .text( wp.i18n.__( 'Live Preview' ) );
    11101145                                } );
    11111146                        }
    11121147                }, 1000 );
     
    11251160         */
    11261161        wp.updates.installThemeError = function( response ) {
    11271162                var $card, $button,
    1128                         errorMessage = wp.updates.l10n.installFailed.replace( '%s', response.errorMessage ),
     1163                    /* translators: %s: Error string for a failed installation */
     1164                        errorMessage = wp.i18n.__( 'Installation failed: %s' ).replace( '%s', response.errorMessage ),
    11291165                        $message     = wp.updates.adminNotice( {
    11301166                                className: 'update-message notice-error notice-alt',
    11311167                                message:   errorMessage
     
    11491185
    11501186                $button
    11511187                        .removeClass( 'updating-message' )
    1152                         .attr( 'aria-label', wp.updates.l10n.themeInstallFailedLabel.replace( '%s', $button.data( 'name' ) ) )
    1153                         .text( wp.updates.l10n.installFailedShort );
     1188                        /* translators: %s: Theme name and version */
     1189                        .attr( 'aria-label', wp.i18n._x( '%s installation failed', 'theme' ).replace( '%s', $button.data( 'name' ) ) )
     1190                        .text( wp.i18n.__( 'Install Failed!' ) );
    11541191
    11551192                wp.a11y.speak( errorMessage, 'assertive' );
    11561193
     
    11831220                        error: wp.updates.deleteThemeError
    11841221                }, args );
    11851222
    1186                 if ( $button && $button.html() !== wp.updates.l10n.deleting ) {
     1223                if ( $button && $button.html() !== wp.i18n.__( 'Deleting...' ) ) {
    11871224                        $button
    11881225                                .data( 'originaltext', $button.html() )
    1189                                 .text( wp.updates.l10n.deleting );
     1226                                .text( wp.i18n.__( 'Deleting...' ) );
    11901227                }
    11911228
    1192                 wp.a11y.speak( wp.updates.l10n.deleting, 'polite' );
     1229                wp.a11y.speak( wp.i18n.__( 'Deleting...' ), 'polite' );
    11931230
    11941231                // Remove previous error messages, if any.
    11951232                $( '.theme-info .update-message' ).remove();
     
    12531290                        } );
    12541291                }
    12551292
    1256                 wp.a11y.speak( wp.updates.l10n.deleted, 'polite' );
     1293                wp.a11y.speak( wp.i18n.__( 'Deleted!' ), 'polite' );
    12571294
    12581295                $document.trigger( 'wp-theme-delete-success', response );
    12591296        };
     
    12741311                        $button      = $( '.theme-actions .delete-theme' ),
    12751312                        updateRow    = wp.template( 'item-update-row' ),
    12761313                        $updateRow   = $themeRow.siblings( '#' + response.slug + '-update' ),
    1277                         errorMessage = wp.updates.l10n.deleteFailed.replace( '%s', response.errorMessage ),
     1314                        /* translators: %s: Error string for a failed deletion */
     1315                        errorMessage = wp.i18n.__( 'Deletion failed: %s' ).replace( '%s', response.errorMessage ),
    12781316                        $message     = wp.updates.adminNotice( {
    12791317                                className: 'update-message notice-error notice-alt',
    12801318                                message:   errorMessage
     
    15661604         *                                                'update' or 'install'.
    15671605         */
    15681606        wp.updates.isValidResponse = function( response, action ) {
    1569                 var error = wp.updates.l10n.unknownError,
     1607                var error = wp.i18n.__( 'An unknown error occurred' ),
    15701608                    errorMessage;
    15711609
    15721610                // Make sure the response is a valid data object and not a Promise object.
     
    15751613                }
    15761614
    15771615                if ( _.isString( response ) && '-1' === response ) {
    1578                         error = wp.updates.l10n.nonceError;
     1616                        error = wp.i18n.__( 'An error has occurred. Please reload the page and try again.' );
    15791617                } else if ( _.isString( response ) ) {
    15801618                        error = response;
    15811619                } else if ( 'undefined' !== typeof response.readyState && 0 === response.readyState ) {
    1582                         error = wp.updates.l10n.connectionError;
     1620                        error = wp.i18n.__( 'Connection lost or the server is busy. Please try again later.' );
    15831621                } else if ( _.isString( response.responseText ) && '' !== response.responseText ) {
    15841622                        error = response.responseText;
    15851623                } else if ( _.isString( response.statusText ) ) {
     
    15881626
    15891627                switch ( action ) {
    15901628                        case 'update':
    1591                                 errorMessage = wp.updates.l10n.updateFailed;
     1629                                /* translators: %s: Error string for a failed update */
     1630                                errorMessage = wp.i18n.__( 'Update Failed: %s' );
    15921631                                break;
    15931632
    15941633                        case 'install':
    1595                                 errorMessage = wp.updates.l10n.installFailed;
     1634                                /* translators: %s: Error string for a failed installation */
     1635                                errorMessage = wp.i18n.__( 'Installation failed: %s' );
    15961636                                break;
    15971637
    15981638                        case 'delete':
    1599                                 errorMessage = wp.updates.l10n.deleteFailed;
     1639                                /* translators: %s: Error string for a failed deletion */
     1640                                errorMessage = wp.i18n.__( 'Deletion failed: %s' );
    16001641                                break;
    16011642                }
    16021643
     
    16201661                        .removeClass( 'updating-message' )
    16211662                        .removeAttr( 'aria-label' )
    16221663                        .prop( 'disabled', true )
    1623                         .text( wp.updates.l10n.updateFailedShort );
     1664                        .text( wp.i18n.__( 'Update Failed!' ) );
    16241665
    16251666                $( '.updating-message:not(.button):not(.thickbox)' )
    16261667                        .removeClass( 'updating-message notice-warning' )
     
    16441685         */
    16451686        wp.updates.beforeunload = function() {
    16461687                if ( wp.updates.ajaxLocked ) {
    1647                         return wp.updates.l10n.beforeunload;
     1688                        return wp.i18n.__( 'Updates may not complete if you navigate away from this page.' );
    16481689                }
    16491690        };
    16501691
     
    17491790
    17501791                                if ( 'plugin-install' === pagenow || 'plugin-install-network' === pagenow ) {
    17511792                                        if ( 'update-plugin' === job.action ) {
    1752                                                 $message.attr( 'aria-label', wp.updates.l10n.updateNowLabel.replace( '%s', $message.data( 'name' ) ) );
     1793                                                /* translators: %s: Plugin name and version */
     1794                                                $message.attr( 'aria-label', wp.i18n.__( 'Update %s now' ).replace( '%s', $message.data( 'name' ) ) );
    17531795                                        } else if ( 'install-plugin' === job.action ) {
    1754                                                 $message.attr( 'aria-label', wp.updates.l10n.installNowLabel.replace( '%s', $message.data( 'name' ) ) );
     1796                                                /* translators: %s: Plugin name */
     1797                                                $message.attr( 'aria-label', wp.i18n.__( 'Install %s now' ).replace( '%s', $message.data( 'name' ) ) );
    17551798                                        }
    17561799                                }
    17571800                        }
    17581801
    1759                         wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
     1802                        /* translators: JavaScript accessible string */
     1803                        wp.a11y.speak( wp.i18n.__( 'Update canceled.' ), 'polite' );
    17601804                } );
    17611805
    17621806                /**
     
    18321876
    18331877                                        $message
    18341878                                                .removeClass( 'updating-message' )
    1835                                                 .text( wp.updates.l10n.installNow );
     1879                                                .text( wp.i18n.__( 'Install Now' ) );
    18361880
    1837                                         wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
     1881                                        /* translators: JavaScript accessible string */
     1882                                        wp.a11y.speak( wp.i18n.__( 'Update canceled.' ), 'polite' );
    18381883                                } );
    18391884                        }
    18401885
     
    18671912
    18681913                                        $button
    18691914                                                .removeClass( 'updating-message' )
    1870                                                 .text( wp.updates.l10n.installNow )
    1871                                                 .attr( 'aria-label', wp.updates.l10n.installNowLabel.replace( '%s', pluginName ) );
     1915                                                .text( wp.i18n.__( 'Install Now' ) )
     1916                                                /* translators: %s: Plugin name */
     1917                                                .attr( 'aria-label', wp.i18n.__( 'Install %s now' ).replace( '%s', pluginName ) );
    18721918
    1873                                         wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
     1919                                        /* translators: JavaScript accessible string */
     1920                                        wp.a11y.speak( wp.i18n.__( 'Update canceled.' ), 'polite' );
    18741921                                } );
    18751922                        }
    18761923
     
    18941941
    18951942                        event.preventDefault();
    18961943
    1897                         if ( ! window.confirm( wp.updates.l10n.aysDeleteUninstall.replace( '%s', $pluginRow.find( '.plugin-title strong' ).text() ) ) ) {
     1944                        /* translators: %s: Plugin name */
     1945                        if ( ! window.confirm( wp.i18n.__( 'Are you sure you want to delete %s and its data?' ).replace( '%s', $pluginRow.find( '.plugin-title strong' ).text() ) ) ) {
    18981946                                return;
    18991947                        }
    19001948
     
    19451993
    19461994                        event.preventDefault();
    19471995
    1948                         if ( ! window.confirm( wp.updates.l10n.aysDelete.replace( '%s', $themeRow.find( '.theme-title strong' ).text() ) ) ) {
     1996                        /* translators: %s: Theme name */
     1997                        if ( ! window.confirm( wp.i18n.__( 'Are you sure you want to delete %s?' ).replace( '%s', $themeRow.find( '.theme-title strong' ).text() ) ) ) {
    19491998                                return;
    19501999                        }
    19512000
     
    19712020                                success       = 0,
    19722021                                error         = 0,
    19732022                                errorMessages = [],
    1974                                 type, action;
     2023                                type, action, bulkDeleteMsg;
    19752024
    19762025                        // Determine which type of item we're dealing with.
    19772026                        switch ( pagenow ) {
     
    19962045                                return wp.updates.addAdminNotice( {
    19972046                                        id:        'no-items-selected',
    19982047                                        className: 'notice-error is-dismissible',
    1999                                         message:   wp.updates.l10n.noItemsSelected
     2048                                        message:   wp.i18n.__( 'Please select at least one item to perform this action on.' )
    20002049                                } );
    20012050                        }
    20022051
     
    20072056                                        break;
    20082057
    20092058                                case 'delete-selected':
    2010                                         if ( ! window.confirm( 'plugin' === type ? wp.updates.l10n.aysBulkDelete : wp.updates.l10n.aysBulkDeleteThemes ) ) {
     2059                                        bulkDeleteMsg = wp.i18n.__( 'Caution: These themes may be active on other sites in the network. Are you sure you want to proceed?' );
     2060
     2061                                        if ( 'plugin' === type ) {
     2062                                                bulkDeleteMsg = wp.i18n.__( 'Are you sure you want to delete the selected plugins and their data?' );
     2063                                        }
     2064
     2065                                        if ( ! window.confirm( bulkDeleteMsg ) ) {
    20112066                                                event.preventDefault();
    20122067                                                return;
    20132068                                        }
     
    21442199                                        .append( $( '<a />', {
    21452200                                                'class': 'current',
    21462201                                                'href': searchLocation,
    2147                                                 'text': wp.updates.l10n.searchResultsLabel
     2202                                                'text': wp.i18n.__( 'Search Results' )
    21482203                                        } ) );
    21492204
    21502205                                $( '.wp-filter .filter-links .current' )
     
    21672222                                delete wp.updates.searchRequest;
    21682223
    21692224                                if ( 0 === response.count ) {
    2170                                         wp.a11y.speak( wp.updates.l10n.noPluginsFound );
     2225                                        wp.a11y.speak( wp.i18n.__( 'No plugins found. Try a different search.' ) );
    21712226                                } else {
    2172                                         wp.a11y.speak( wp.updates.l10n.pluginsFound.replace( '%d', response.count ) );
     2227                                        wp.a11y.speak( wp.i18n._n( '%d plugin found', '%d plugins found', response.count ) );
    21732228                                }
    21742229                        } );
    21752230                }, 500 ) );
     
    22162271                        wp.updates.searchRequest = wp.ajax.post( 'search-plugins', data ).done( function( response ) {
    22172272
    22182273                                // Can we just ditch this whole subtitle business?
    2219                                 var $subTitle    = $( '<span />' ).addClass( 'subtitle' ).html( wp.updates.l10n.searchResults.replace( '%s', _.escape( data.s ) ) ),
     2274                                /* translators: %s: Search string */
     2275                                var $subTitle    = $( '<span />' ).addClass( 'subtitle' ).html( wp.i18n.__( 'Search results for &#8220;%s&#8221;' ).replace( '%s', _.escape( data.s ) ) ),
    22202276                                        $oldSubTitle = $( '.wrap .subtitle' );
    22212277
    22222278                                if ( ! data.s.length ) {
     
    22322288                                delete wp.updates.searchRequest;
    22332289
    22342290                                if ( 0 === response.count ) {
    2235                                         wp.a11y.speak( wp.updates.l10n.noPluginsFound );
     2291                                        wp.a11y.speak( wp.i18n.__( 'No plugins found. Try a different search.' ) );
    22362292                                } else {
    2237                                         wp.a11y.speak( wp.updates.l10n.pluginsFound.replace( '%d', response.count ) );
     2293                                        wp.a11y.speak( wp.i18n._n( '%d plugin found', '%d plugins found', response.count ) );
    22382294                                }
    22392295                        } );
    22402296                }, 500 ) );
  • src/wp-admin/js/user-profile.js

    diff --git src/wp-admin/js/user-profile.js src/wp-admin/js/user-profile.js
    index 650fbd5..feb054a 100644
     
    1 /* global ajaxurl, pwsL10n, userProfileL10n */
     1/* global ajaxurl */
    22(function($) {
    33        var updateLock = false,
    44
     
    5050                }
    5151
    5252                // Once zxcvbn loads, passwords strength is known.
    53                 $( '#pw-weak-text-label' ).html( userProfileL10n.warnWeak );
     53                $( '#pw-weak-text-label' ).html( wp.i18n.__( 'Confirm use of weak password' ) );
    5454        }
    5555
    5656        function bindPass1() {
     
    100100                $toggleButton
    101101                        .data( 'toggle', 0 )
    102102                        .attr({
    103                                 'aria-label': userProfileL10n.ariaHide
     103                                'aria-label': wp.i18n.esc_attr__( 'Hide password' )
    104104                        })
    105105                        .find( '.text' )
    106                                 .text( userProfileL10n.hide )
     106                                .text( wp.i18n.__( 'Hide' ) )
    107107                        .end()
    108108                        .find( '.dashicons' )
    109109                                .removeClass( 'dashicons-visibility' )
     
    130130                                $toggleButton
    131131                                        .data( 'toggle', 1 )
    132132                                        .attr({
    133                                                 'aria-label': userProfileL10n.ariaShow
     133                                                'aria-label': wp.i18n.esc_attr__( 'Show password' )
    134134                                        })
    135135                                        .find( '.text' )
    136                                                 .text( userProfileL10n.show )
     136                                                .text( wp.i18n.__( 'Show' ) )
    137137                                        .end()
    138138                                        .find( '.dashicons' )
    139139                                                .removeClass('dashicons-hidden')
     
    290290
    291291                switch ( strength ) {
    292292                        case -1:
    293                                 $( '#pass-strength-result' ).addClass( 'bad' ).html( pwsL10n.unknown );
     293                                $( '#pass-strength-result' ).addClass( 'bad' ).html( wp.i18n._x( 'Password strength unknown', 'password strength' ) );
    294294                                break;
    295295                        case 2:
    296                                 $('#pass-strength-result').addClass('bad').html( pwsL10n.bad );
     296                                $('#pass-strength-result').addClass('bad').html( wp.i18n._x( 'Weak', 'password strength' ) );
    297297                                break;
    298298                        case 3:
    299                                 $('#pass-strength-result').addClass('good').html( pwsL10n.good );
     299                                $('#pass-strength-result').addClass('good').html( wp.i18n._x( 'Medium', 'password strength' ) );
    300300                                break;
    301301                        case 4:
    302                                 $('#pass-strength-result').addClass('strong').html( pwsL10n.strong );
     302                                $('#pass-strength-result').addClass('strong').html( wp.i18n._x( 'Strong', 'password strength' ) );
    303303                                break;
    304304                        case 5:
    305                                 $('#pass-strength-result').addClass('short').html( pwsL10n.mismatch );
     305                                $('#pass-strength-result').addClass('short').html( wp.i18n._x( 'Mismatch', 'password mismatch' ) );
    306306                                break;
    307307                        default:
    308                                 $('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
     308                                $('#pass-strength-result').addClass('short').html( wp.i18n._x( 'Very weak', 'password strength' ) );
    309309                }
    310310        }
    311311
     
    448448        /* Warn the user if password was generated but not saved */
    449449        $( window ).on( 'beforeunload', function () {
    450450                if ( true === updateLock ) {
    451                         return userProfileL10n.warn;
     451                        return wp.i18n.__( 'Your new password has not been saved.' );
    452452                }
    453453        } );
    454454
  • src/wp-admin/js/word-count.js

    diff --git src/wp-admin/js/word-count.js src/wp-admin/js/word-count.js
    index 89afdcc..9f8790b 100644
     
    3737         * @param {RegExp} settings.shortcodesRegExp                  Optional. Regular expression to find shortcodes.
    3838         * @param {Object} settings.l10n                              Optional. Localization object containing specific
    3939         *                                                            configuration for the current localization.
    40          * @param {String} settings.l10n.type                         Optional. Method of finding words to count.
    4140         * @param {Array}  settings.l10n.shortcodes                   Optional. Array of shortcodes that should be removed
    4241         *                                                            from the text.
    4342         *
     
    136135                 * \u2028 = line separator
    137136                 * \u2029 = paragraph separator
    138137                 */
    139                 characters_including_spacesRegExp: /[^\f\n\r\t\v\u00AD\u2028\u2029]/g,
    140                 l10n: window.wordCountL10n || {}
     138                characters_including_spacesRegExp: /[^\f\n\r\t\v\u00AD\u2028\u2029]/g
    141139        };
    142140
    143141        /**
     
    157155                var count = 0;
    158156
    159157                // Use default type if none was provided.
    160                 type = type || this.settings.l10n.type;
     158
     159                /*
     160                 * translators: If your word count is based on single characters (e.g. East Asian characters),
     161                 * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.
     162                 * Do not translate into your own language.
     163                 */
     164                type = type || wp.i18n._x( 'words', 'Word count type. Do not translate!' );
    161165
    162166                // Sanitize type to one of three possibilities: 'words', 'characters_excluding_spaces' or 'characters_including_spaces'.
    163167                if ( type !== 'characters_excluding_spaces' && type !== 'characters_including_spaces' ) {
  • src/wp-admin/theme-install.php

    diff --git src/wp-admin/theme-install.php src/wp-admin/theme-install.php
    index 2347248..aa7f069 100644
    wp_localize_script( 'theme', '_wpThemeSettings', array( 
    4242                'installURI' => current_user_can( 'install_themes' ) ? self_admin_url( 'theme-install.php' ) : null,
    4343                'adminUrl'   => parse_url( self_admin_url(), PHP_URL_PATH )
    4444        ),
    45         'l10n' => array(
    46                 'addNew'              => __( 'Add New Theme' ),
    47                 'search'              => __( 'Search Themes' ),
    48                 'searchPlaceholder'   => __( 'Search themes...' ), // placeholder (no ellipsis)
    49                 'upload'              => __( 'Upload Theme' ),
    50                 'back'                => __( 'Back' ),
    51                 'error'               => __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="https://wordpress.org/support/">support forums</a>.' ),
    52                 'themesFound'         => __( 'Number of Themes found: %d' ),
    53                 'noThemesFound'       => __( 'No themes found. Try a different search.' ),
    54                 'collapseSidebar'     => __( 'Collapse Sidebar' ),
    55                 'expandSidebar'       => __( 'Expand Sidebar' ),
    56                 /* translators: hidden accessibility text */
    57                 'selectFeatureFilter' => __( 'Select one or more Theme features to filter by' ),
    58         ),
    5945        'installedThemes' => array_keys( $installed_themes ),
    6046) );
    6147
  • src/wp-includes/class-wp-customize-manager.php

    diff --git src/wp-includes/class-wp-customize-manager.php src/wp-includes/class-wp-customize-manager.php
    index bb892b5..fe4ae6f 100644
    final class WP_Customize_Manager { 
    835835                        'activeControls' => array(),
    836836                        'settingValidities' => $exported_setting_validities,
    837837                        'nonce' => $this->get_nonces(),
    838                         'l10n' => array(
    839                                 'shiftClickToEdit' => __( 'Shift-click to edit this element.' ),
    840                         ),
    841838                        '_dirty' => array_keys( $this->unsanitized_post_values() ),
    842839                );
    843840
  • src/wp-includes/class-wp-customize-nav-menus.php

    diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
    index f102cd8..84e4fbf 100644
    final class WP_Customize_Nav_Menus { 
    366366                        'itemTypes'            => $this->available_item_types(),
    367367                        'l10n'                 => array(
    368368                                'untitled'          => _x( '(no label)', 'missing menu item navigation label' ),
    369                                 'unnamed'           => _x( '(unnamed)', 'Missing menu name.' ),
    370                                 'custom_label'      => __( 'Custom Link' ),
    371                                 /* translators: %s: menu location */
    372                                 'menuLocation'      => _x( '(Currently set to: %s)', 'menu' ),
    373                                 'menuNameLabel'     => __( 'Menu Name' ),
    374                                 'itemAdded'         => __( 'Menu item added' ),
    375                                 'itemDeleted'       => __( 'Menu item deleted' ),
    376                                 'menuAdded'         => __( 'Menu created' ),
    377                                 'menuDeleted'       => __( 'Menu deleted' ),
    378                                 'movedUp'           => __( 'Menu item moved up' ),
    379                                 'movedDown'         => __( 'Menu item moved down' ),
    380                                 'movedLeft'         => __( 'Menu item moved out of submenu' ),
    381                                 'movedRight'        => __( 'Menu item is now a sub-item' ),
    382369                                /* translators: &#9656; is the unicode right-pointing triangle, and %s is the section title in the Customizer */
    383370                                'customizingMenus'  => sprintf( __( 'Customizing &#9656; %s' ), esc_html( $this->manager->get_panel( 'nav_menus' )->title ) ),
    384                                 /* translators: %s: title of menu item which is invalid */
    385                                 'invalidTitleTpl'   => __( '%s (Invalid)' ),
    386                                 /* translators: %s: title of menu item in draft status */
    387                                 'pendingTitleTpl'   => __( '%s (Pending)' ),
    388                                 'itemsFound'        => __( 'Number of items found: %d' ),
    389                                 'itemsFoundMore'    => __( 'Additional items found: %d' ),
    390                                 'itemsLoadingMore'  => __( 'Loading more results... please wait.' ),
    391                                 'reorderModeOn'     => __( 'Reorder mode enabled' ),
    392                                 'reorderModeOff'    => __( 'Reorder mode closed' ),
    393                                 'reorderLabelOn'    => esc_attr__( 'Reorder menu items' ),
    394                                 'reorderLabelOff'   => esc_attr__( 'Close reorder mode' ),
    395371                        ),
    396372                        'settingTransport'     => 'postMessage',
    397373                        'phpIntMax'            => PHP_INT_MAX,
  • src/wp-includes/class-wp-customize-widgets.php

    diff --git src/wp-includes/class-wp-customize-widgets.php src/wp-includes/class-wp-customize-widgets.php
    index 2189067..8b00fa8 100644
    final class WP_Customize_Widgets { 
    721721                        'registeredSidebars'   => array_values( $wp_registered_sidebars ),
    722722                        'registeredWidgets'    => $wp_registered_widgets,
    723723                        'availableWidgets'     => $available_widgets, // @todo Merge this with registered_widgets
    724                         'l10n' => array(
    725                                 'saveBtnLabel'     => __( 'Apply' ),
    726                                 'saveBtnTooltip'   => __( 'Save and preview changes before publishing them.' ),
    727                                 'removeBtnLabel'   => __( 'Remove' ),
    728                                 'removeBtnTooltip' => __( 'Trash widget by moving it to the inactive widgets sidebar.' ),
    729                                 'error'            => __( 'An error has occurred. Please reload the page and try again.' ),
    730                                 'widgetMovedUp'    => __( 'Widget moved up' ),
    731                                 'widgetMovedDown'  => __( 'Widget moved down' ),
    732                                 'noAreasRendered'  => __( 'There are no widget areas currently rendered in the preview. Navigate in the preview to a template that makes use of a widget area in order to access its widgets here.' ),
    733                                 'reorderModeOn'    => __( 'Reorder mode enabled' ),
    734                                 'reorderModeOff'   => __( 'Reorder mode closed' ),
    735                                 'reorderLabelOn'   => esc_attr__( 'Reorder widgets' ),
    736                                 'widgetsFound'     => __( 'Number of widgets found: %d' ),
    737                                 'noWidgetsFound'   => __( 'No widgets found.' ),
    738                         ),
    739724                        'tpl' => array(
    740725                                'widgetReorderNav' => $widget_reorder_nav_tpl,
    741726                                'moveWidgetArea'   => $move_widget_area_tpl,
    final class WP_Customize_Widgets { 
    11261111                        'renderedWidgets'    => array_fill_keys( array_keys( $this->rendered_widgets ), true ),
    11271112                        'registeredSidebars' => array_values( $wp_registered_sidebars ),
    11281113                        'registeredWidgets'  => $wp_registered_widgets,
    1129                         'l10n'               => array(
    1130                                 'widgetTooltip'  => __( 'Shift-click to edit this widget.' ),
    1131                         ),
    11321114                        'selectiveRefreshableWidgets' => $this->get_selective_refreshable_widgets(),
    11331115                );
    11341116                foreach ( $settings['registeredWidgets'] as &$registered_widget ) {
  • src/wp-includes/customize/class-wp-customize-selective-refresh.php

    diff --git src/wp-includes/customize/class-wp-customize-selective-refresh.php src/wp-includes/customize/class-wp-customize-selective-refresh.php
    index 95c1934..3bfb924 100644
    final class WP_Customize_Selective_Refresh { 
    182182                $exports = array(
    183183                        'partials'       => $partials,
    184184                        'renderQueryVar' => self::RENDER_QUERY_VAR,
    185                         'l10n'           => array(
    186                                 'shiftClickToEdit' => __( 'Shift-click to edit this element.' ),
    187                                 /* translators: %s: document.write() */
    188                                 'badDocumentWrite' => sprintf( __( '%s is forbidden' ), 'document.write()' ),
    189                         ),
    190185                );
    191186
    192187                // Export data to JS.
  • src/wp-includes/js/customize-loader.js

    diff --git src/wp-includes/js/customize-loader.js src/wp-includes/js/customize-loader.js
    index 85ad745..764c603 100644
    window.wp = window.wp || {}; 
    8989
    9090                beforeunload: function () {
    9191                        if ( ! Loader.saved() ) {
    92                                 return Loader.settings.l10n.saveAlert;
     92                                return wp.i18n.__( 'The changes you made will be lost if you navigate away from this page.' );
    9393                        }
    9494                },
    9595
    window.wp = window.wp || {}; 
    122122                         */
    123123                        this.saved = new api.Value( true );
    124124
    125                         this.iframe = $( '<iframe />', { 'src': src, 'title': Loader.settings.l10n.mainIframeTitle } ).appendTo( this.element );
     125                        this.iframe = $( '<iframe />', { 'src': src, 'title': wp.i18n.__( 'Customizer' ) } ).appendTo( this.element );
    126126                        this.iframe.one( 'load', this.loaded );
    127127
    128128                        // Create a postMessage connection with the iframe.
    window.wp = window.wp || {}; 
    195195                        }
    196196
    197197                        // Display AYS dialog if Customizer is dirty
    198                         if ( ! this.saved() && ! confirm( Loader.settings.l10n.saveAlert ) ) {
     198                        if ( ! this.saved() && ! confirm( wp.i18n.__( 'The changes you made will be lost if you navigate away from this page.' ) ) ) {
    199199                                // Go forward since Customizer is exited by history.back()
    200200                                history.forward();
    201201                                return;
  • src/wp-includes/js/customize-preview-widgets.js

    diff --git src/wp-includes/js/customize-preview-widgets.js src/wp-includes/js/customize-preview-widgets.js
    index 5adaf05..ebdbc5a 100644
    wp.customize.widgetsPreview = wp.customize.WidgetCustomizerPreview = (function( 
    1010                registeredWidgets: {},
    1111                widgetSelectors: [],
    1212                preview: null,
    13                 l10n: {
    14                         widgetTooltip: ''
    15                 },
     13
    1614                selectiveRefreshableWidgets: {}
    1715        };
    1816
    wp.customize.widgetsPreview = wp.customize.WidgetCustomizerPreview = (function( 
    572570                var self = this,
    573571                        selector = this.widgetSelectors.join( ',' );
    574572
    575                 $( selector ).attr( 'title', this.l10n.widgetTooltip );
     573                $( selector ).attr( 'title', wp.i18n.__( 'Shift-click to edit this widget.' ) );
    576574
    577575                $( document ).on( 'mouseenter', selector, function() {
    578576                        self.preview.send( 'highlight-widget-control', $( this ).prop( 'id' ) );
  • src/wp-includes/js/customize-selective-refresh.js

    diff --git src/wp-includes/js/customize-selective-refresh.js src/wp-includes/js/customize-selective-refresh.js
    index 6bab103..ab20764 100644
    wp.customize.selectiveRefresh = ( function( $, api ) { 
    8484                ready: function() {
    8585                        var partial = this;
    8686                        _.each( _.pluck( partial.placements(), 'container' ), function( container ) {
    87                                 $( container ).attr( 'title', self.data.l10n.shiftClickToEdit );
     87                                $( container ).attr( 'title', wp.i18n.__( 'Shift-click to edit this element.' ) );
    8888                        } );
    8989                        $( document ).on( 'click', partial.params.selector, function( e ) {
    9090                                if ( ! e.shiftKey ) {
    wp.customize.selectiveRefresh = ( function( $, api ) { 
    275275                        /* jshint ignore:start */
    276276                        self.orginalDocumentWrite = document.write;
    277277                        document.write = function() {
    278                                 throw new Error( self.data.l10n.badDocumentWrite );
     278                                /* translators: %s: document.write() */
     279                                throw new Error( wp.i18n.__( '%s is forbidden' ).relace( '%s', 'document.write()' ) );
    279280                        };
    280281                        /* jshint ignore:end */
    281282                        try {
    wp.customize.selectiveRefresh = ( function( $, api ) { 
    299300                                        placement.removedNodes = placement.container;
    300301                                        placement.container = newContainerElement;
    301302                                        placement.removedNodes.replaceWith( placement.container );
    302                                         placement.container.attr( 'title', self.data.l10n.shiftClickToEdit );
     303                                        placement.container.attr( 'title', wp.i18n.__( 'Shift-click to edit this element.' ) );
    303304                                } else {
    304305                                        placement.removedNodes = document.createDocumentFragment();
    305306                                        while ( placement.container[0].firstChild ) {
  • src/wp-includes/js/media-audiovideo.js

    diff --git src/wp-includes/js/media-audiovideo.js src/wp-includes/js/media-audiovideo.js
    index e37a221..f9e2ce1 100644
     
    11(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
    22var media = wp.media,
    3         baseSettings = window._wpmejsSettings || {},
    4         l10n = window._wpMediaViewsL10n || {};
     3        baseSettings = window._wpmejsSettings || {};
    54
    65/**
    76 * @mixin
    wp.media.mixin = { 
    7978 */
    8079wp.media.playlist = new wp.media.collection({
    8180        tag: 'playlist',
    82         editTitle : l10n.editPlaylistTitle,
     81        editTitle : wp.i18n.__( 'Edit Audio Playlist' ),
    8382        defaults : {
    8483                id: wp.media.view.settings.post.id,
    8584                style: 'light',
    media.view.VideoDetails = require( './views/video-details.js' ); 
    226225 * @augments Backbone.Model
    227226 */
    228227var State = wp.media.controller.State,
    229         l10n = wp.media.view.l10n,
    230228        AudioDetails;
    231229
    232230AudioDetails = State.extend({
    233231        defaults: {
    234232                id: 'audio-details',
    235233                toolbar: 'audio-details',
    236                 title: l10n.audioDetailsTitle,
     234                title: wp.i18n.__( 'Audio Details' ),
    237235                content: 'audio-details',
    238236                menu: 'audio-details',
    239237                router: false,
    module.exports = AudioDetails; 
    259257 * @augments Backbone.Model
    260258 */
    261259var State = wp.media.controller.State,
    262         l10n = wp.media.view.l10n,
    263260        VideoDetails;
    264261
    265262VideoDetails = State.extend({
    266263        defaults: {
    267264                id: 'video-details',
    268265                toolbar: 'video-details',
    269                 title: l10n.videoDetailsTitle,
     266                title: wp.i18n.__( 'Video Details' ),
    270267                content: 'video-details',
    271268                menu: 'video-details',
    272269                router: false,
    AudioDetails = MediaDetails.extend({ 
    389386                content: 'audio-details',
    390387                toolbar: 'audio-details',
    391388                type:    'link',
    392                 title:    l10n.audioDetailsTitle,
     389                title:    wp.i18n.__( 'Audio Details' ),
    393390                priority: 120
    394391        },
    395392
    396393        initialize: function( options ) {
    397394                options.DetailsView = wp.media.view.AudioDetails;
    398                 options.cancelText = l10n.audioDetailsCancel;
    399                 options.addText = l10n.audioAddSourceTitle;
     395                options.cancelText = wp.i18n.__( 'Cancel Edit' );
     396                options.addText = wp.i18n.__( 'Add Audio Source' );
    400397
    401398                MediaDetails.prototype.initialize.call( this, options );
    402399        },
    AudioDetails = MediaDetails.extend({ 
    417414                        new MediaLibrary( {
    418415                                type: 'audio',
    419416                                id: 'replace-audio',
    420                                 title: l10n.audioReplaceTitle,
     417                                title: wp.i18n.__( 'Replace Audio' ),
    421418                                toolbar: 'replace-audio',
    422419                                media: this.media,
    423420                                menu: 'audio-details'
    AudioDetails = MediaDetails.extend({ 
    426423                        new MediaLibrary( {
    427424                                type: 'audio',
    428425                                id: 'add-audio-source',
    429                                 title: l10n.audioAddSourceTitle,
     426                                title: wp.i18n.__( 'Add Audio Source' ),
    430427                                toolbar: 'add-audio-source',
    431428                                media: this.media,
    432429                                menu: false
    MediaDetails = Select.extend({ 
    542539        },
    543540
    544541        renderDetailsToolbar: function() {
    545                 this.setPrimaryButton( l10n.update, function( controller, state ) {
     542                this.setPrimaryButton( wp.i18n.__( 'Update' ), function( controller, state ) {
    546543                        controller.close();
    547544                        state.trigger( 'update', controller.media.toJSON() );
    548545                } );
    549546        },
    550547
    551548        renderReplaceToolbar: function() {
    552                 this.setPrimaryButton( l10n.replace, function( controller, state ) {
     549                this.setPrimaryButton( wp.i18n.__( 'Replace' ), function( controller, state ) {
    553550                        var attachment = state.get( 'selection' ).single();
    554551                        controller.media.changeAttachment( attachment );
    555552                        state.trigger( 'replace', controller.media.toJSON() );
    VideoDetails = MediaDetails.extend({ 
    594591                content: 'video-details',
    595592                toolbar: 'video-details',
    596593                type:    'link',
    597                 title:    l10n.videoDetailsTitle,
     594                title:    wp.i18n.__( 'Video Details' ),
    598595                priority: 120
    599596        },
    600597
    601598        initialize: function( options ) {
    602599                options.DetailsView = wp.media.view.VideoDetails;
    603                 options.cancelText = l10n.videoDetailsCancel;
    604                 options.addText = l10n.videoAddSourceTitle;
     600                options.cancelText = wp.i18n.__( 'Cancel Edit' );
     601                options.addText = wp.i18n.__( 'Add Video Source' );
    605602
    606603                MediaDetails.prototype.initialize.call( this, options );
    607604        },
    VideoDetails = MediaDetails.extend({ 
    624621                        new MediaLibrary( {
    625622                                type: 'video',
    626623                                id: 'replace-video',
    627                                 title: l10n.videoReplaceTitle,
     624                                title: wp.i18n.__( 'Replace Video' ),
    628625                                toolbar: 'replace-video',
    629626                                media: this.media,
    630627                                menu: 'video-details'
    VideoDetails = MediaDetails.extend({ 
    633630                        new MediaLibrary( {
    634631                                type: 'video',
    635632                                id: 'add-video-source',
    636                                 title: l10n.videoAddSourceTitle,
     633                                title: wp.i18n.__( 'Add Video Source' ),
    637634                                toolbar: 'add-video-source',
    638635                                media: this.media,
    639636                                menu: false
    VideoDetails = MediaDetails.extend({ 
    642639                        new MediaLibrary( {
    643640                                type: 'image',
    644641                                id: 'select-poster-image',
    645                                 title: l10n.videoSelectPosterImageTitle,
     642                                title: wp.i18n.__( 'Select Poster Image' ),
    646643                                toolbar: 'select-poster-image',
    647644                                media: this.media,
    648645                                menu: 'video-details'
    VideoDetails = MediaDetails.extend({ 
    651648                        new MediaLibrary( {
    652649                                type: 'text',
    653650                                id: 'add-track',
    654                                 title: l10n.videoAddTrackTitle,
     651                                title: wp.i18n.__( 'Add Subtitles' ),
    655652                                toolbar: 'add-track',
    656653                                media: this.media,
    657654                                menu: 'video-details'
    VideoDetails = MediaDetails.extend({ 
    660657        },
    661658
    662659        renderSelectPosterImageToolbar: function() {
    663                 this.setPrimaryButton( l10n.videoSelectPosterImageTitle, function( controller, state ) {
     660                this.setPrimaryButton( wp.i18n.__( 'Select Poster Image' ), function( controller, state ) {
    664661                        var urls = [], attachment = state.get( 'selection' ).single();
    665662
    666663                        controller.media.set( 'poster', attachment.get( 'url' ) );
    VideoDetails = MediaDetails.extend({ 
    682679        },
    683680
    684681        renderAddTrackToolbar: function() {
    685                 this.setPrimaryButton( l10n.videoAddTrackTitle, function( controller, state ) {
     682                this.setPrimaryButton( wp.i18n.__( 'Add Subtitles' ), function( controller, state ) {
    686683                        var attachment = state.get( 'selection' ).single(),
    687684                                content = controller.media.get( 'content' );
    688685
  • src/wp-includes/js/media-editor.js

    diff --git src/wp-includes/js/media-editor.js src/wp-includes/js/media-editor.js
    index e972f6b..e505c96 100644
     
    509509                         *
    510510                         * @global wp.shortcode
    511511                         * @global wp.media.model.Selection
    512                          * @global wp.media.view.l10n
    513512                         *
    514513                         * @param {string} content Content that is searched for possible
    515514                         *    shortcode markup matching the passed tag name,
     
    613612        wp.media.gallery = new wp.media.collection({
    614613                tag: 'gallery',
    615614                type : 'image',
    616                 editTitle : wp.media.view.l10n.editGalleryTitle,
     615                editTitle : wp.i18n.__( 'Edit Gallery' ),
    617616                defaults : wp.media.galleryDefaults,
    618617
    619618                setDefaults: function( attrs ) {
     
    663662                                _wpnonce:     settings.post.nonce
    664663                        }).done( function( html ) {
    665664                                if ( html == '0' ) {
    666                                         window.alert( window.setPostThumbnailL10n.error );
     665                                        window.alert( wp.i18n.__( 'Could not set that as the thumbnail image. Try a different attachment.' ) );
    667666                                        return;
    668667                                }
    669668                                $( '.inside', '#postimagediv' ).html( html );
     
    824823                 * Setup 'workflow' and add to the 'workflows' cache. 'open' can
    825824                 *  subsequently be called upon it.
    826825                 *
    827                  * @global wp.media.view.l10n
    828                  *
    829826                 * @param {string} id A slug used to identify the workflow.
    830827                 * @param {Object} [options={}]
    831828                 *
     
    844841                        workflow = workflows[ id ] = wp.media( _.defaults( options || {}, {
    845842                                frame:    'post',
    846843                                state:    'insert',
    847                                 title:    wp.media.view.l10n.addMedia,
     844                                title:    wp.i18n.__( 'Add Media' ),
    848845                                multiple: true
    849846                        } ) );
    850847
     
    10931090                },
    10941091
    10951092                /**
    1096                  * Bind click event for .insert-media using event delegation
    1097                  *
    1098                  * @global wp.media.view.l10n
     1093                 * Bind click event for .insert-media using event delegation.
    10991094                 */
    11001095                init: function() {
    11011096                        $(document.body)
     
    11051100                                                options = {
    11061101                                                        frame:    'post',
    11071102                                                        state:    'insert',
    1108                                                         title:    wp.media.view.l10n.addMedia,
     1103                                                        title:    wp.i18n.__( 'Add Media' ),
    11091104                                                        multiple: true
    11101105                                                };
    11111106
     
    11131108
    11141109                                        if ( elem.hasClass( 'gallery' ) ) {
    11151110                                                options.state = 'gallery';
    1116                                                 options.title = wp.media.view.l10n.createGalleryTitle;
     1111                                                options.title = wp.i18n.__( 'Create Gallery' );
    11171112                                        }
    11181113
    11191114                                        wp.media.editor.open( editor, options );
  • src/wp-includes/js/media-grid.js

    diff --git src/wp-includes/js/media-grid.js src/wp-includes/js/media-grid.js
    index 5d0faa2..b5d092a 100644
     
    88 * @augments wp.media.controller.State
    99 * @augments Backbone.Model
    1010 */
    11 var l10n = wp.media.view.l10n,
    12         EditAttachmentMetadata;
    13 
    14 EditAttachmentMetadata = wp.media.controller.State.extend({
     11var EditAttachmentMetadata = wp.media.controller.State.extend({
    1512        defaults: {
    1613                id:      'edit-attachment',
    1714                // Title string passed to the frame's title region view.
    18                 title:   l10n.attachmentDetails,
     15                title:   wp.i18n.__( 'Attachment Details' ),
    1916                // Region mode defaults.
    2017                content: 'edit-metadata',
    2118                menu:    false,
    module.exports = DeleteSelectedPermanently; 
    190187 * @augments Backbone.View
    191188 */
    192189var Button = wp.media.view.Button,
    193         l10n = wp.media.view.l10n,
    194190        DeleteSelected;
    195191
    196192DeleteSelected = Button.extend({
    DeleteSelected = Button.extend({ 
    204200
    205201        filterChange: function( model ) {
    206202                if ( 'trash' === model.get( 'status' ) ) {
    207                         this.model.set( 'text', l10n.untrashSelected );
     203                        this.model.set( 'text', wp.i18n.__( 'Untrash Selected' ) );
    208204                } else if ( wp.media.view.settings.mediaTrash ) {
    209                         this.model.set( 'text', l10n.trashSelected );
     205                        this.model.set( 'text', wp.i18n.__( 'Trash Selected' ) );
    210206                } else {
    211                         this.model.set( 'text', l10n.deleteSelected );
     207                        this.model.set( 'text', wp.i18n.__( 'Delete Selected' ) );
    212208                }
    213209        },
    214210
    module.exports = DeleteSelected; 
    241237 * @augments Backbone.View
    242238 */
    243239var Button = wp.media.view.Button,
    244         l10n = wp.media.view.l10n,
    245240        SelectModeToggle;
    246241
    247242SelectModeToggle = Button.extend({
    SelectModeToggle = Button.extend({ 
    283278                if ( this.controller.isModeActive( 'select' ) ) {
    284279                        this.model.set( {
    285280                                size: 'large',
    286                                 text: l10n.cancelSelection
     281                                text: wp.i18n.__( 'Cancel Selection' )
    287282                        } );
    288283                        children.not( '.spinner, .media-button' ).hide();
    289284                        this.$el.show();
    SelectModeToggle = Button.extend({ 
    291286                } else {
    292287                        this.model.set( {
    293288                                size: '',
    294                                 text: l10n.bulkSelect
     289                                text: wp.i18n.__( 'Bulk Select' )
    295290                        } );
    296291                        this.controller.content.get().$el.removeClass( 'fixed' );
    297292                        toolbar.$el.css( 'width', '' );
  • src/wp-includes/js/media-views.js

    diff --git src/wp-includes/js/media-views.js src/wp-includes/js/media-views.js
    index 91a8e48..ee5d8a7 100644
    module.exports = CollectionAdd; 
    136136 * @param {string}                     attributes.collectionType         The collection type. (e.g. 'playlist').
    137137 */
    138138var Library = wp.media.controller.Library,
    139         l10n = wp.media.view.l10n,
    140139        $ = jQuery,
    141140        CollectionEdit;
    142141
    CollectionEdit = Library.extend({ 
    249248
    250249                // Add the 'Reverse order' button to the toolbar.
    251250                attachmentsBrowserView.toolbar.set( 'reverse', {
    252                         text:     l10n.reverseOrder,
     251                        text:     wp.i18n.__( 'Reverse order' ),
    253252                        priority: 80,
    254253
    255254                        click: function() {
    module.exports = CollectionEdit; 
    271270 * @augments wp.media.controller.State
    272271 * @augments Backbone.Model
    273272 */
    274 var l10n = wp.media.view.l10n,
    275         Cropper;
    276 
    277 Cropper = wp.media.controller.State.extend({
     273var Cropper = wp.media.controller.State.extend({
    278274        defaults: {
    279275                id:          'cropper',
    280                 title:       l10n.cropImage,
     276                title:       wp.i18n.__( 'Crop Image' ),
    281277                // Region mode defaults.
    282278                toolbar:     'crop',
    283279                content:     'crop',
    Cropper = wp.media.controller.State.extend({ 
    323319                        items: {
    324320                                insert: {
    325321                                        style:    'primary',
    326                                         text:     l10n.cropImage,
     322                                        text:     wp.i18n.__( 'Crop Image' ),
    327323                                        priority: 80,
    328324                                        requires: { library: false, selection: false },
    329325
    Cropper = wp.media.controller.State.extend({ 
    334330                                                selection = controller.state().get('selection').first();
    335331                                                selection.set({cropDetails: controller.state().imgSelect.getSelection()});
    336332
    337                                                 this.$el.text(l10n.cropping);
     333                                                this.$el.text( wp.i18n.__( 'Cropping&hellip;' ) );
    338334                                                this.$el.attr('disabled', true);
    339335
    340336                                                controller.state().doCrop( selection ).done( function( croppedImage ) {
    Cropper = wp.media.controller.State.extend({ 
    352348                        _.extend( toolbarOptions.items, {
    353349                                skip: {
    354350                                        style:      'secondary',
    355                                         text:       l10n.skipCropping,
     351                                        text:       wp.i18n.__( 'Skip Cropping' ),
    356352                                        priority:   70,
    357353                                        requires:   { library: false, selection: false },
    358354                                        click:      function() {
    module.exports = CustomizeImageCropper; 
    445441 * @param {string}                    [attributes.menu=false]         Initial mode for the menu region.
    446442 * @param {string}                    [attributes.url]                Unused. @todo Consider removal.
    447443 */
    448 var l10n = wp.media.view.l10n,
    449         EditImage;
    450 
    451 EditImage = wp.media.controller.State.extend({
     444var EditImage = wp.media.controller.State.extend({
    452445        defaults: {
    453446                id:      'edit-image',
    454                 title:   l10n.editImage,
     447                title:   wp.i18n.__( 'Edit Image' ),
    455448                menu:    false,
    456449                toolbar: 'edit-image',
    457450                content: 'edit-image',
    EditImage = wp.media.controller.State.extend({ 
    485478                        items: {
    486479                                back: {
    487480                                        style: 'primary',
    488                                         text:     l10n.back,
     481                                        text:     wp.i18n.__( 'Back' ),
    489482                                        priority: 20,
    490483                                        click:    function() {
    491484                                                if ( previous ) {
    module.exports = EditImage; 
    524517 * @param {string} [attributes.url]                   The embed URL.
    525518 * @param {object} [attributes.metadata={}]           Properties of the embed, which will override attributes.url if set.
    526519 */
    527 var l10n = wp.media.view.l10n,
    528         $ = Backbone.$,
     520var $ = Backbone.$,
    529521        Embed;
    530522
    531523Embed = wp.media.controller.State.extend({
    532524        defaults: {
    533525                id:       'embed',
    534                 title:    l10n.insertFromUrlTitle,
     526                title:    wp.i18n.__( 'Insert from URL' ),
    535527                content:  'embed',
    536528                menu:     'default',
    537529                toolbar:  'main-embed',
    module.exports = FeaturedImage; 
    794786 */
    795787var Selection = wp.media.model.Selection,
    796788        Library = wp.media.controller.Library,
    797         l10n = wp.media.view.l10n,
    798789        GalleryAdd;
    799790
    800791GalleryAdd = Library.extend({
    801792        defaults: _.defaults({
    802793                id:            'gallery-library',
    803                 title:         l10n.addToGalleryTitle,
     794                title:         wp.i18n.__( 'Add to Gallery' ),
    804795                multiple:      'add',
    805796                filterable:    'uploaded',
    806797                menu:          'gallery',
    module.exports = GalleryAdd; 
    885876 *                                                                        If none supplied, defaults to wp.media.view.Attachment.EditLibrary.
    886877 */
    887878var Library = wp.media.controller.Library,
    888         l10n = wp.media.view.l10n,
    889879        GalleryEdit;
    890880
    891881GalleryEdit = Library.extend({
    892882        defaults: {
    893883                id:               'gallery-edit',
    894                 title:            l10n.editGalleryTitle,
     884                title:            wp.i18n.__( 'Edit Gallery' ),
    895885                multiple:         false,
    896886                searchable:       false,
    897887                sortable:         true,
    GalleryEdit = Library.extend({ 
    981971                });
    982972
    983973                browser.toolbar.set( 'reverse', {
    984                         text:     l10n.reverseOrder,
     974                        text:     wp.i18n.__( 'Reverse order' ),
    985975                        priority: 80,
    986976
    987977                        click: function() {
    module.exports = GalleryEdit; 
    10201010 */
    10211011var State = wp.media.controller.State,
    10221012        Library = wp.media.controller.Library,
    1023         l10n = wp.media.view.l10n,
    10241013        ImageDetails;
    10251014
    10261015ImageDetails = State.extend({
    10271016        defaults: _.defaults({
    10281017                id:       'image-details',
    1029                 title:    l10n.imageDetailsTitle,
     1018                title:    wp.i18n.__( 'Image Details' ),
    10301019                content:  'image-details',
    10311020                menu:     false,
    10321021                router:   false,
    module.exports = ImageDetails; 
    10901079 * @param {boolean}                         [attributes.contentUserSetting=true] Whether the content region's mode should be set and persisted per user.
    10911080 * @param {boolean}                         [attributes.syncSelection=true]      Whether the Attachments selection should be persisted from the last state.
    10921081 */
    1093 var l10n = wp.media.view.l10n,
    1094         getUserSetting = window.getUserSetting,
     1082var getUserSetting = window.getUserSetting,
    10951083        setUserSetting = window.setUserSetting,
    10961084        Library;
    10971085
    10981086Library = wp.media.controller.State.extend({
    10991087        defaults: {
    11001088                id:                 'library',
    1101                 title:              l10n.mediaLibraryTitle,
     1089                title:              wp.i18n.__( 'Media Library' ),
    11021090                multiple:           false,
    11031091                content:            'upload',
    11041092                menu:               'default',
    module.exports = Region; 
    16101598 * @param {boolean}                    [attributes.syncSelection=true]      Whether the Attachments selection should be persisted from the last state.
    16111599 */
    16121600var Library = wp.media.controller.Library,
    1613         l10n = wp.media.view.l10n,
    16141601        ReplaceImage;
    16151602
    16161603ReplaceImage = Library.extend({
    16171604        defaults: _.defaults({
    16181605                id:            'replace-image',
    1619                 title:         l10n.replaceImageTitle,
     1606                title:         wp.i18n.__( 'Replace Image' ),
    16201607                multiple:      false,
    16211608                filterable:    'uploaded',
    16221609                toolbar:       'replace',
    All = wp.media.view.AttachmentFilters.extend({ 
    25092496                });
    25102497
    25112498                filters.all = {
    2512                         text:  l10n.allMediaItems,
     2499                        text:  wp.i18n.__( 'All media items' ),
    25132500                        props: {
    25142501                                status:  null,
    25152502                                type:    null,
    All = wp.media.view.AttachmentFilters.extend({ 
    25352522                }
    25362523
    25372524                filters.unattached = {
    2538                         text:  l10n.unattached,
     2525                        text:  wp.i18n.__( 'Unattached' ),
    25392526                        props: {
    25402527                                status:     null,
    25412528                                uploadedTo: 0,
    All = wp.media.view.AttachmentFilters.extend({ 
    25502537                        this.controller.isModeActive( 'grid' ) ) {
    25512538
    25522539                        filters.trash = {
    2553                                 text:  l10n.trash,
     2540                                text:  wp.i18n._x( 'Trash', 'noun' ),
    25542541                                props: {
    25552542                                        uploadedTo: null,
    25562543                                        status:     'trash',
    module.exports = All; 
    25782565 * @augments wp.Backbone.View
    25792566 * @augments Backbone.View
    25802567 */
    2581 var l10n = wp.media.view.l10n,
    2582         DateFilter;
    2583 
    2584 DateFilter = wp.media.view.AttachmentFilters.extend({
     2568var DateFilter = wp.media.view.AttachmentFilters.extend({
    25852569        id: 'media-attachment-date-filters',
    25862570
    25872571        createFilters: function() {
    DateFilter = wp.media.view.AttachmentFilters.extend({ 
    25962580                        };
    25972581                });
    25982582                filters.all = {
    2599                         text:  l10n.allDates,
     2583                        text:  wp.i18n.__( 'All dates' ),
    26002584                        props: {
    26012585                                monthnum: false,
    26022586                                year:  false
    Uploaded = wp.media.view.AttachmentFilters.extend({ 
    26342618
    26352619                this.filters = {
    26362620                        all: {
    2637                                 text:  text || l10n.allMediaItems,
     2621                                text:  text || wp.i18n.__( 'All media items' ),
    26382622                                props: {
    26392623                                        uploadedTo: null,
    26402624                                        orderby: 'date',
    Uploaded = wp.media.view.AttachmentFilters.extend({ 
    26542638                        },
    26552639
    26562640                        unattached: {
    2657                                 text:  l10n.unattached,
     2641                                text:  wp.i18n.__( 'Unattached' ),
    26582642                                props: {
    26592643                                        uploadedTo: 0,
    26602644                                        orderby: 'menuOrder',
    module.exports = Attachment; 
    32253209 * @augments Backbone.View
    32263210 */
    32273211var Attachment = wp.media.view.Attachment,
    3228         l10n = wp.media.view.l10n,
    32293212        Details;
    32303213
    32313214Details = Attachment.extend({
    Details = Attachment.extend({ 
    32803263        deleteAttachment: function( event ) {
    32813264                event.preventDefault();
    32823265
    3283                 if ( window.confirm( l10n.warnDelete ) ) {
     3266                if ( window.confirm( wp.i18n.__( "You are about to permanently delete this item.\n  'Cancel' to stop, 'OK' to delete." ) ) ) {
    32843267                        this.model.destroy();
    32853268                        // Keep focus inside media modal
    32863269                        // after image is deleted
    module.exports = Attachments; 
    37513734 */
    37523735var View = wp.media.View,
    37533736        mediaTrash = wp.media.view.settings.mediaTrash,
    3754         l10n = wp.media.view.l10n,
    37553737        $ = jQuery,
    37563738        AttachmentsBrowser;
    37573739
    AttachmentsBrowser = View.extend({ 
    38293811                        // "Filters" will return a <select>, need to render
    38303812                        // screen reader text before
    38313813                        this.toolbar.set( 'filtersLabel', new wp.media.view.Label({
    3832                                 value: l10n.filterByType,
     3814                                value: wp.i18n.__( 'Filter by type' ),
    38333815                                attributes: {
    38343816                                        'for':  'media-attachment-filters'
    38353817                                },
    AttachmentsBrowser = View.extend({ 
    38693851
    38703852                        // DateFilter is a <select>, screen reader text needs to be rendered before
    38713853                        this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    3872                                 value: l10n.filterByDate,
     3854                                value: wp.i18n.__( 'Filter by date' ),
    38733855                                attributes: {
    38743856                                        'for': 'media-attachment-date-filters'
    38753857                                },
    AttachmentsBrowser = View.extend({ 
    38833865
    38843866                        // BulkSelection is a <div> with subviews, including screen reader text
    38853867                        this.toolbar.set( 'selectModeToggleButton', new wp.media.view.SelectModeToggleButton({
    3886                                 text: l10n.bulkSelect,
     3868                                text: wp.i18n.__( 'Bulk Select' ),
    38873869                                controller: this.controller,
    38883870                                priority: -70
    38893871                        }).render() );
    AttachmentsBrowser = View.extend({ 
    38923874                                filters: Filters,
    38933875                                style: 'primary',
    38943876                                disabled: true,
    3895                                 text: mediaTrash ? l10n.trashSelected : l10n.deleteSelected,
     3877                                text: mediaTrash ? wp.i18n.__( 'Trash Selected' ) : wp.i18n.__( 'Delete Selected' ),
    38963878                                controller: this.controller,
    38973879                                priority: -60,
    38983880                                click: function() {
    AttachmentsBrowser = View.extend({ 
    39043886                                                return;
    39053887                                        }
    39063888
    3907                                         if ( ! mediaTrash && ! window.confirm( l10n.warnBulkDelete ) ) {
     3889                                        if ( ! mediaTrash && ! window.confirm( wp.i18n.__( "You are about to permanently delete these items.\n  'Cancel' to stop, 'OK' to delete." ) ) ) {
    39083890                                                return;
    39093891                                        }
    39103892
    39113893                                        if ( mediaTrash &&
    39123894                                                'trash' !== selection.at( 0 ).get( 'status' ) &&
    3913                                                 ! window.confirm( l10n.warnBulkTrash ) ) {
     3895                                                ! window.confirm( wp.i18n.__( "You are about to trash these items.\n  'Cancel' to stop, 'OK' to delete." ) ) ) {
    39143896
    39153897                                                return;
    39163898                                        }
    AttachmentsBrowser = View.extend({ 
    39523934                                        filters: Filters,
    39533935                                        style: 'primary',
    39543936                                        disabled: true,
    3955                                         text: l10n.deleteSelected,
     3937                                        text: wp.i18n.__( 'Delete Selected' ),
    39563938                                        controller: this.controller,
    39573939                                        priority: -55,
    39583940                                        click: function() {
    39593941                                                var removed = [], selection = this.controller.state().get( 'selection' );
    39603942
    3961                                                 if ( ! selection.length || ! window.confirm( l10n.warnBulkDelete ) ) {
     3943                                                if ( ! selection.length || ! window.confirm( wp.i18n.__( "You are about to permanently delete these items.\n  'Cancel' to stop, 'OK' to delete." ) ) ) {
    39623944                                                        return;
    39633945                                                }
    39643946
    AttachmentsBrowser = View.extend({ 
    39803962                } else if ( this.options.date ) {
    39813963                        // DateFilter is a <select>, screen reader text needs to be rendered before
    39823964                        this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    3983                                 value: l10n.filterByDate,
     3965                                value: wp.i18n.__( 'Filter by date' ),
    39843966                                attributes: {
    39853967                                        'for': 'media-attachment-date-filters'
    39863968                                },
    AttachmentsBrowser = View.extend({ 
    39963978                if ( this.options.search ) {
    39973979                        // Search is an input, screen reader text needs to be rendered before
    39983980                        this.toolbar.set( 'searchLabel', new wp.media.view.Label({
    3999                                 value: l10n.searchMediaLabel,
     3981                                value: wp.i18n.__( 'Search Media' ),
    40003982                                attributes: {
    40013983                                        'for': 'media-search-input'
    40023984                                },
    AttachmentsBrowser = View.extend({ 
    40113993
    40123994                if ( this.options.dragInfo ) {
    40133995                        this.toolbar.set( 'dragInfo', new View({
    4014                                 el: $( '<div class="instructions">' + l10n.dragInfo + '</div>' )[0],
     3996                                el: $( '<div class="instructions">' + wp.i18n.__( 'Drag and drop to reorder media files.' ) + '</div>' )[0],
    40153997                                priority: -40
    40163998                        }) );
    40173999                }
    40184000
    40194001                if ( this.options.suggestedWidth && this.options.suggestedHeight ) {
    40204002                        this.toolbar.set( 'suggestedDimensions', new View({
    4021                                 el: $( '<div class="instructions">' + l10n.suggestedDimensions + ' ' + this.options.suggestedWidth + ' &times; ' + this.options.suggestedHeight + '</div>' )[0],
     4003                                el: $( '<div class="instructions">' + wp.i18n.__( 'Suggested image dimensions:' ) + ' ' + this.options.suggestedWidth + ' &times; ' + this.options.suggestedHeight + '</div>' )[0],
    40224004                                priority: -40
    40234005                        }) );
    40244006                }
    AttachmentsBrowser = View.extend({ 
    40544036                this.uploader = new wp.media.view.UploaderInline({
    40554037                        controller: this.controller,
    40564038                        status:     false,
    4057                         message:    this.controller.isModeActive( 'grid' ) ? '' : l10n.noItemsFound,
     4039                        message:    this.controller.isModeActive( 'grid' ) ? '' : wp.i18n.__( 'No items found.' ),
    40584040                        canClose:   this.controller.isModeActive( 'grid' )
    40594041                });
    40604042
    AttachmentsBrowser = View.extend({ 
    40984080                        });
    40994081
    41004082                        this.attachmentsNoResults.$el.addClass( 'hidden no-media' );
    4101                         this.attachmentsNoResults.$el.html( l10n.noMedia );
     4083                        this.attachmentsNoResults.$el.html( wp.i18n.__( 'No media files found.' ) );
    41024084
    41034085                        this.views.add( this.attachmentsNoResults );
    41044086                }
    module.exports = Button; 
    43514333 */
    43524334var View = wp.media.View,
    43534335        UploaderStatus = wp.media.view.UploaderStatus,
    4354         l10n = wp.media.view.l10n,
    43554336        $ = jQuery,
    43564337        Cropper;
    43574338
    Cropper = View.extend({ 
    43754356        },
    43764357        prepare: function() {
    43774358                return {
    4378                         title: l10n.cropYourImage,
     4359                        title: wp.i18n.__( 'Crop your image' ),
    43794360                        url: this.options.attachment.get('url')
    43804361                };
    43814362        },
    Cropper = View.extend({ 
    43944375
    43954376                this.views.add( '.upload-errors', new wp.media.view.UploaderStatusError({
    43964377                        filename: UploaderStatus.prototype.filename(filename),
    4397                         message: window._wpMediaViewsL10n.cropError
     4378                        message: wp.i18n.__( 'There has been an error cropping your image.' )
    43984379                }), { at: 0 });
    43994380        }
    44004381});
    module.exports = Frame; 
    49514932 * @mixes wp.media.controller.StateMachine
    49524933 */
    49534934var Select = wp.media.view.MediaFrame.Select,
    4954         l10n = wp.media.view.l10n,
    49554935        ImageDetails;
    49564936
    49574937ImageDetails = Select.extend({
    ImageDetails = Select.extend({ 
    49624942                content: 'image-details',
    49634943                toolbar: 'image-details',
    49644944                type:    'link',
    4965                 title:    l10n.imageDetailsTitle,
     4945                title:    wp.i18n.__( 'Image Details' ),
    49664946                priority: 120
    49674947        },
    49684948
    ImageDetails = Select.extend({ 
    49934973                                library: wp.media.query( { type: 'image' } ),
    49944974                                image: this.image,
    49954975                                multiple:  false,
    4996                                 title:     l10n.imageReplaceTitle,
     4976                                title:     wp.i18n.__( 'Replace Image' ),
    49974977                                toolbar: 'replace',
    49984978                                priority:  80,
    49994979                                displaySettings: true
    ImageDetails = Select.extend({ 
    50375017                        items: {
    50385018                                select: {
    50395019                                        style:    'primary',
    5040                                         text:     l10n.update,
     5020                                        text:     wp.i18n.__( 'Update' ),
    50415021                                        priority: 80,
    50425022
    50435023                                        click: function() {
    ImageDetails = Select.extend({ 
    50685048                        controller: this,
    50695049                        items: {
    50705050                                back: {
    5071                                         text:     l10n.back,
     5051                                        text:     wp.i18n.__( 'Back' ),
    50725052                                        priority: 20,
    50735053                                        click:    function() {
    50745054                                                if ( previous ) {
    ImageDetails = Select.extend({ 
    50815061
    50825062                                replace: {
    50835063                                        style:    'primary',
    5084                                         text:     l10n.replace,
     5064                                        text:     wp.i18n.__( 'Replace' ),
    50855065                                        priority: 80,
    50865066
    50875067                                        click: function() {
    Post = Select.extend({ 
    51675147                        // Main states.
    51685148                        new Library({
    51695149                                id:         'insert',
    5170                                 title:      l10n.insertMediaTitle,
     5150                                title:      wp.i18n.__( 'Insert Media' ),
    51715151                                priority:   20,
    51725152                                toolbar:    'main-insert',
    51735153                                filterable: 'all',
    Post = Select.extend({ 
    51885168
    51895169                        new Library({
    51905170                                id:         'gallery',
    5191                                 title:      l10n.createGalleryTitle,
     5171                                title:      wp.i18n.__( 'Create Gallery' ),
    51925172                                priority:   40,
    51935173                                toolbar:    'main-gallery',
    51945174                                filterable: 'uploaded',
    Post = Select.extend({ 
    52165196
    52175197                        new Library({
    52185198                                id:         'playlist',
    5219                                 title:      l10n.createPlaylistTitle,
     5199                                title:      wp.i18n.__( 'Create Audio Playlist' ),
    52205200                                priority:   60,
    52215201                                toolbar:    'main-playlist',
    52225202                                filterable: 'uploaded',
    Post = Select.extend({ 
    52325212                        new wp.media.controller.CollectionEdit({
    52335213                                type: 'audio',
    52345214                                collectionType: 'playlist',
    5235                                 title:          l10n.editPlaylistTitle,
     5215                                title:          wp.i18n.__( 'Edit Audio Playlist' ),
    52365216                                SettingsView:   wp.media.view.Settings.Playlist,
    52375217                                library:        options.selection,
    52385218                                editing:        options.editing,
    52395219                                menu:           'playlist',
    5240                                 dragInfoText:   l10n.playlistDragInfo,
     5220                                dragInfoText:   wp.i18n.__( 'Drag and drop to reorder tracks.' ),
    52415221                                dragInfo:       false
    52425222                        }),
    52435223
    52445224                        new wp.media.controller.CollectionAdd({
    52455225                                type: 'audio',
    52465226                                collectionType: 'playlist',
    5247                                 title: l10n.addToPlaylistTitle
     5227                                title: wp.i18n.__( 'Add to Audio Playlist' )
    52485228                        }),
    52495229
    52505230                        new Library({
    52515231                                id:         'video-playlist',
    5252                                 title:      l10n.createVideoPlaylistTitle,
     5232                                title:      wp.i18n.__( 'Create Video Playlist' ),
    52535233                                priority:   60,
    52545234                                toolbar:    'main-video-playlist',
    52555235                                filterable: 'uploaded',
    Post = Select.extend({ 
    52645244                        new wp.media.controller.CollectionEdit({
    52655245                                type: 'video',
    52665246                                collectionType: 'playlist',
    5267                                 title:          l10n.editVideoPlaylistTitle,
     5247                                title:          wp.i18n.__( 'Create Video Playlist' ),
    52685248                                SettingsView:   wp.media.view.Settings.Playlist,
    52695249                                library:        options.selection,
    52705250                                editing:        options.editing,
    52715251                                menu:           'video-playlist',
    5272                                 dragInfoText:   l10n.videoPlaylistDragInfo,
     5252                                dragInfoText:   wp.i18n.__( 'Drag and drop to reorder videos.' ),
    52735253                                dragInfo:       false
    52745254                        }),
    52755255
    52765256                        new wp.media.controller.CollectionAdd({
    52775257                                type: 'video',
    52785258                                collectionType: 'playlist',
    5279                                 title: l10n.addToVideoPlaylistTitle
     5259                                title: wp.i18n.__( 'Add to Video Playlist' )
    52805260                        })
    52815261                ]);
    52825262
    Post = Select.extend({ 
    53935373
    53945374                view.set({
    53955375                        cancel: {
    5396                                 text:     l10n.cancelGalleryTitle,
     5376                                text:     wp.i18n.__( '&#8592; Cancel Gallery' ),
    53975377                                priority: 20,
    53985378                                click:    function() {
    53995379                                        if ( previous ) {
    Post = Select.extend({ 
    54215401
    54225402                view.set({
    54235403                        cancel: {
    5424                                 text:     l10n.cancelPlaylistTitle,
     5404                                text:     wp.i18n.__( '&#8592; Cancel Audio Playlist' ),
    54255405                                priority: 20,
    54265406                                click:    function() {
    54275407                                        if ( previous ) {
    Post = Select.extend({ 
    54455425
    54465426                view.set({
    54475427                        cancel: {
    5448                                 text:     l10n.cancelVideoPlaylistTitle,
     5428                                text:     wp.i18n.__( '&#8592; Cancel Video Playlist' ),
    54495429                                priority: 20,
    54505430                                click:    function() {
    54515431                                        if ( previous ) {
    Post = Select.extend({ 
    54955475                }).render();
    54965476
    54975477                view.toolbar.set( 'backToLibrary', {
    5498                         text:     l10n.returnToLibrary,
     5478                        text:     wp.i18n.__( '&#8592; Return to library' ),
    54995479                        priority: -100,
    55005480
    55015481                        click: function() {
    Post = Select.extend({ 
    55795559
    55805560                view.set( 'gallery', {
    55815561                        style:    'primary',
    5582                         text:     l10n.createNewGallery,
     5562                        text:     wp.i18n.__( 'Create a new gallery' ),
    55835563                        priority: 60,
    55845564                        requires: { selection: true },
    55855565
    Post = Select.extend({ 
    56095589
    56105590                view.set( 'playlist', {
    56115591                        style:    'primary',
    5612                         text:     l10n.createNewPlaylist,
     5592                        text:     wp.i18n.__( 'Create a new playlist' ),
    56135593                        priority: 100,
    56145594                        requires: { selection: true },
    56155595
    Post = Select.extend({ 
    56395619
    56405620                view.set( 'video-playlist', {
    56415621                        style:    'primary',
    5642                         text:     l10n.createNewVideoPlaylist,
     5622                        text:     wp.i18n.__( 'Create a new video playlist' ),
    56435623                        priority: 100,
    56445624                        requires: { selection: true },
    56455625
    Post = Select.extend({ 
    56825662                        items: {
    56835663                                insert: {
    56845664                                        style:    'primary',
    5685                                         text:     editing ? l10n.updateGallery : l10n.insertGallery,
     5665                                        text:     editing ? wp.i18n.__( 'Update gallery' ) : wp.i18n.__( 'Insert gallery' ),
    56865666                                        priority: 80,
    56875667                                        requires: { library: true },
    56885668
    Post = Select.extend({ 
    57115691                        items: {
    57125692                                insert: {
    57135693                                        style:    'primary',
    5714                                         text:     l10n.addToGallery,
     5694                                        text:     wp.i18n.__( 'Add to gallery' ),
    57155695                                        priority: 80,
    57165696                                        requires: { selection: true },
    57175697
    Post = Select.extend({ 
    57395719                        items: {
    57405720                                insert: {
    57415721                                        style:    'primary',
    5742                                         text:     editing ? l10n.updatePlaylist : l10n.insertPlaylist,
     5722                                        text:     editing ? wp.i18n.__( 'Update audio playlist' ) : wp.i18n.__( 'Insert audio playlist' ),
    57435723                                        priority: 80,
    57445724                                        requires: { library: true },
    57455725
    Post = Select.extend({ 
    57685748                        items: {
    57695749                                insert: {
    57705750                                        style:    'primary',
    5771                                         text:     l10n.addToPlaylist,
     5751                                        text:     wp.i18n.__( 'Add to audio playlist' ),
    57725752                                        priority: 80,
    57735753                                        requires: { selection: true },
    57745754
    Post = Select.extend({ 
    57965776                        items: {
    57975777                                insert: {
    57985778                                        style:    'primary',
    5799                                         text:     editing ? l10n.updateVideoPlaylist : l10n.insertVideoPlaylist,
     5779                                        text:     editing ? wp.i18n.__( 'Update video playlist' ) : wp.i18n.__( 'Insert video playlist' ),
    58005780                                        priority: 140,
    58015781                                        requires: { library: true },
    58025782
    Post = Select.extend({ 
    58255805                        items: {
    58265806                                insert: {
    58275807                                        style:    'primary',
    5828                                         text:     l10n.addToVideoPlaylist,
     5808                                        text:     wp.i18n.__( 'Add to video playlist' ),
    58295809                                        priority: 140,
    58305810                                        requires: { selection: true },
    58315811
    module.exports = Post; 
    58625842 */
    58635843
    58645844var MediaFrame = wp.media.view.MediaFrame,
    5865         l10n = wp.media.view.l10n,
    58665845        Select;
    58675846
    58685847Select = MediaFrame.extend({
    Select = MediaFrame.extend({ 
    59495928        browseRouter: function( routerView ) {
    59505929                routerView.set({
    59515930                        upload: {
    5952                                 text:     l10n.uploadFilesTitle,
     5931                                text:     wp.i18n.__( 'Upload Files' ),
    59535932                                priority: 20
    59545933                        },
    59555934                        browse: {
    5956                                 text:     l10n.mediaLibraryTitle,
     5935                                text:     wp.i18n.__( 'Media Library' ),
    59575936                                priority: 40
    59585937                        }
    59595938                });
    Search = wp.media.View.extend({ 
    70697048
    70707049        attributes: {
    70717050                type:        'search',
    7072                 placeholder: l10n.search
     7051                placeholder: wp.i18n.__( 'Search' )
    70737052        },
    70747053
    70757054        events: {
    module.exports = Search; 
    71077086 * @augments wp.Backbone.View
    71087087 * @augments Backbone.View
    71097088 */
    7110 var l10n = wp.media.view.l10n,
    7111         Selection;
     7089var Selection;
    71127090
    71137091Selection = wp.media.View.extend({
    71147092        tagName:   'div',
    Selection = wp.media.View.extend({ 
    71597137                this.$el.toggleClass( 'one', 1 === collection.length );
    71607138                this.$el.toggleClass( 'editing', editing );
    71617139
    7162                 this.$('.count').text( l10n.selected.replace('%d', collection.length) );
     7140                this.$('.count').text( wp.i18n._n( '%d selected', '%d selected', collection.length ) );
    71637141        },
    71647142
    71657143        edit: function( event ) {
    module.exports = Embed; 
    77887766 * @augments Backbone.View
    77897767 */
    77907768var Toolbar = wp.media.view.Toolbar,
    7791         l10n = wp.media.view.l10n,
    77927769        Select;
    77937770
    77947771Select = Toolbar.extend({
    Select = Toolbar.extend({ 
    78027779                        state: false,
    78037780                        reset: true,
    78047781                        close: true,
    7805                         text:  l10n.select,
     7782                        text:  wp.i18n.__( 'Select' ),
    78067783
    78077784                        // Does the button rely on the selection?
    78087785                        requires: {
    module.exports = Select; 
    78607837 * @augments Backbone.View
    78617838 */
    78627839var View = wp.media.View,
    7863         l10n = wp.media.view.l10n,
    78647840        $ = jQuery,
    78657841        EditorUploader;
    78667842
    EditorUploader = View.extend({ 
    80007976                        this.workflow = wp.media.editor.open( window.wpActiveEditor, {
    80017977                                frame:    'post',
    80027978                                state:    'insert',
    8003                                 title:    l10n.addMedia,
     7979                                title:    wp.i18n.__( 'Add Media' ),
    80047980                                multiple: true
    80057981                        });
    80067982
  • src/wp-includes/js/media/audiovideo.manifest.js

    diff --git src/wp-includes/js/media/audiovideo.manifest.js src/wp-includes/js/media/audiovideo.manifest.js
    index 7217e02..bf370b8 100644
     
    11var media = wp.media,
    2         baseSettings = window._wpmejsSettings || {},
    3         l10n = window._wpMediaViewsL10n || {};
     2        baseSettings = window._wpmejsSettings || {};
    43
    54/**
    65 * @mixin
    wp.media.mixin = { 
    7877 */
    7978wp.media.playlist = new wp.media.collection({
    8079        tag: 'playlist',
    81         editTitle : l10n.editPlaylistTitle,
     80        editTitle : wp.i18n.__( 'Edit Audio Playlist' ),
    8281        defaults : {
    8382                id: wp.media.view.settings.post.id,
    8483                style: 'light',
  • src/wp-includes/js/media/controllers/audio-details.js

    diff --git src/wp-includes/js/media/controllers/audio-details.js src/wp-includes/js/media/controllers/audio-details.js
    index 41c8a4f..e7543a2 100644
     
    88 * @augments Backbone.Model
    99 */
    1010var State = wp.media.controller.State,
    11         l10n = wp.media.view.l10n,
    1211        AudioDetails;
    1312
    1413AudioDetails = State.extend({
    1514        defaults: {
    1615                id: 'audio-details',
    1716                toolbar: 'audio-details',
    18                 title: l10n.audioDetailsTitle,
     17                title: wp.i18n.__( 'Audio Details' ),
    1918                content: 'audio-details',
    2019                menu: 'audio-details',
    2120                router: false,
  • src/wp-includes/js/media/controllers/collection-edit.js

    diff --git src/wp-includes/js/media/controllers/collection-edit.js src/wp-includes/js/media/controllers/collection-edit.js
    index 8478976..835a84a 100644
     
    3434 * @param {string}                     attributes.collectionType         The collection type. (e.g. 'playlist').
    3535 */
    3636var Library = wp.media.controller.Library,
    37         l10n = wp.media.view.l10n,
    3837        $ = jQuery,
    3938        CollectionEdit;
    4039
    CollectionEdit = Library.extend({ 
    147146
    148147                // Add the 'Reverse order' button to the toolbar.
    149148                attachmentsBrowserView.toolbar.set( 'reverse', {
    150                         text:     l10n.reverseOrder,
     149                        text:     wp.i18n.__( 'Reverse order' ),
    151150                        priority: 80,
    152151
    153152                        click: function() {
  • src/wp-includes/js/media/controllers/cropper.js

    diff --git src/wp-includes/js/media/controllers/cropper.js src/wp-includes/js/media/controllers/cropper.js
    index a23b226..e8655c6 100644
     
    77 * @augments wp.media.controller.State
    88 * @augments Backbone.Model
    99 */
    10 var l10n = wp.media.view.l10n,
    11         Cropper;
    12 
    13 Cropper = wp.media.controller.State.extend({
     10var Cropper = wp.media.controller.State.extend({
    1411        defaults: {
    1512                id:          'cropper',
    16                 title:       l10n.cropImage,
     13                title:       wp.i18n.__( 'Crop Image' ),
    1714                // Region mode defaults.
    1815                toolbar:     'crop',
    1916                content:     'crop',
    Cropper = wp.media.controller.State.extend({ 
    5956                        items: {
    6057                                insert: {
    6158                                        style:    'primary',
    62                                         text:     l10n.cropImage,
     59                                        text:     wp.i18n.__( 'Crop Image' ),
    6360                                        priority: 80,
    6461                                        requires: { library: false, selection: false },
    6562
    Cropper = wp.media.controller.State.extend({ 
    7067                                                selection = controller.state().get('selection').first();
    7168                                                selection.set({cropDetails: controller.state().imgSelect.getSelection()});
    7269
    73                                                 this.$el.text(l10n.cropping);
     70                                                this.$el.text( wp.i18n.__( 'Cropping&hellip;' ) );
    7471                                                this.$el.attr('disabled', true);
    7572
    7673                                                controller.state().doCrop( selection ).done( function( croppedImage ) {
    Cropper = wp.media.controller.State.extend({ 
    8885                        _.extend( toolbarOptions.items, {
    8986                                skip: {
    9087                                        style:      'secondary',
    91                                         text:       l10n.skipCropping,
     88                                        text:       wp.i18n.__( 'Skip Cropping' ),
    9289                                        priority:   70,
    9390                                        requires:   { library: false, selection: false },
    9491                                        click:      function() {
  • src/wp-includes/js/media/controllers/edit-attachment-metadata.js

    diff --git src/wp-includes/js/media/controllers/edit-attachment-metadata.js src/wp-includes/js/media/controllers/edit-attachment-metadata.js
    index 60a57c3..8fd656a 100644
     
    77 * @augments wp.media.controller.State
    88 * @augments Backbone.Model
    99 */
    10 var l10n = wp.media.view.l10n,
    11         EditAttachmentMetadata;
    12 
    13 EditAttachmentMetadata = wp.media.controller.State.extend({
     10var EditAttachmentMetadata = wp.media.controller.State.extend({
    1411        defaults: {
    1512                id:      'edit-attachment',
    1613                // Title string passed to the frame's title region view.
    17                 title:   l10n.attachmentDetails,
     14                title:   wp.i18n.__( 'Attachment Details' ),
    1815                // Region mode defaults.
    1916                content: 'edit-metadata',
    2017                menu:    false,
  • src/wp-includes/js/media/controllers/edit-image.js

    diff --git src/wp-includes/js/media/controllers/edit-image.js src/wp-includes/js/media/controllers/edit-image.js
    index 448541f..900541a 100644
     
    1616 * @param {string}                    [attributes.menu=false]         Initial mode for the menu region.
    1717 * @param {string}                    [attributes.url]                Unused. @todo Consider removal.
    1818 */
    19 var l10n = wp.media.view.l10n,
    20         EditImage;
    21 
    22 EditImage = wp.media.controller.State.extend({
     19var EditImage = wp.media.controller.State.extend({
    2320        defaults: {
    2421                id:      'edit-image',
    25                 title:   l10n.editImage,
     22                title:   wp.i18n.__( 'Edit Image' ),
    2623                menu:    false,
    2724                toolbar: 'edit-image',
    2825                content: 'edit-image',
    EditImage = wp.media.controller.State.extend({ 
    5653                        items: {
    5754                                back: {
    5855                                        style: 'primary',
    59                                         text:     l10n.back,
     56                                        text:     wp.i18n.__( 'Back' ),
    6057                                        priority: 20,
    6158                                        click:    function() {
    6259                                                if ( previous ) {
  • src/wp-includes/js/media/controllers/embed.js

    diff --git src/wp-includes/js/media/controllers/embed.js src/wp-includes/js/media/controllers/embed.js
    index d347db0..94cf50e 100644
     
    1919 * @param {string} [attributes.url]                   The embed URL.
    2020 * @param {object} [attributes.metadata={}]           Properties of the embed, which will override attributes.url if set.
    2121 */
    22 var l10n = wp.media.view.l10n,
    23         $ = Backbone.$,
     22var $ = Backbone.$,
    2423        Embed;
    2524
    2625Embed = wp.media.controller.State.extend({
    2726        defaults: {
    2827                id:       'embed',
    29                 title:    l10n.insertFromUrlTitle,
     28                title:    wp.i18n.__( 'Insert from URL' ),
    3029                content:  'embed',
    3130                menu:     'default',
    3231                toolbar:  'main-embed',
  • src/wp-includes/js/media/controllers/gallery-add.js

    diff --git src/wp-includes/js/media/controllers/gallery-add.js src/wp-includes/js/media/controllers/gallery-add.js
    index 42d7dfa..f3de41b 100644
     
    3131 */
    3232var Selection = wp.media.model.Selection,
    3333        Library = wp.media.controller.Library,
    34         l10n = wp.media.view.l10n,
    3534        GalleryAdd;
    3635
    3736GalleryAdd = Library.extend({
    3837        defaults: _.defaults({
    3938                id:            'gallery-library',
    40                 title:         l10n.addToGalleryTitle,
     39                title:         wp.i18n.__( 'Add to Gallery' ),
    4140                multiple:      'add',
    4241                filterable:    'uploaded',
    4342                menu:          'gallery',
  • src/wp-includes/js/media/controllers/gallery-edit.js

    diff --git src/wp-includes/js/media/controllers/gallery-edit.js src/wp-includes/js/media/controllers/gallery-edit.js
    index cfdd7aa..dd3d4ce 100644
     
    3131 *                                                                        If none supplied, defaults to wp.media.view.Attachment.EditLibrary.
    3232 */
    3333var Library = wp.media.controller.Library,
    34         l10n = wp.media.view.l10n,
    3534        GalleryEdit;
    3635
    3736GalleryEdit = Library.extend({
    3837        defaults: {
    3938                id:               'gallery-edit',
    40                 title:            l10n.editGalleryTitle,
     39                title:            wp.i18n.__( 'Edit Gallery' ),
    4140                multiple:         false,
    4241                searchable:       false,
    4342                sortable:         true,
    GalleryEdit = Library.extend({ 
    127126                });
    128127
    129128                browser.toolbar.set( 'reverse', {
    130                         text:     l10n.reverseOrder,
     129                        text:     wp.i18n.__( 'Reverse order' ),
    131130                        priority: 80,
    132131
    133132                        click: function() {
  • src/wp-includes/js/media/controllers/image-details.js

    diff --git src/wp-includes/js/media/controllers/image-details.js src/wp-includes/js/media/controllers/image-details.js
    index 61462bb..b20735b 100644
     
    2424 */
    2525var State = wp.media.controller.State,
    2626        Library = wp.media.controller.Library,
    27         l10n = wp.media.view.l10n,
    2827        ImageDetails;
    2928
    3029ImageDetails = State.extend({
    3130        defaults: _.defaults({
    3231                id:       'image-details',
    33                 title:    l10n.imageDetailsTitle,
     32                title:    wp.i18n.__( 'Image Details' ),
    3433                content:  'image-details',
    3534                menu:     false,
    3635                router:   false,
  • src/wp-includes/js/media/controllers/library.js

    diff --git src/wp-includes/js/media/controllers/library.js src/wp-includes/js/media/controllers/library.js
    index c16fab6..858c042 100644
     
    3232 * @param {boolean}                         [attributes.contentUserSetting=true] Whether the content region's mode should be set and persisted per user.
    3333 * @param {boolean}                         [attributes.syncSelection=true]      Whether the Attachments selection should be persisted from the last state.
    3434 */
    35 var l10n = wp.media.view.l10n,
    36         getUserSetting = window.getUserSetting,
     35var getUserSetting = window.getUserSetting,
    3736        setUserSetting = window.setUserSetting,
    3837        Library;
    3938
    4039Library = wp.media.controller.State.extend({
    4140        defaults: {
    4241                id:                 'library',
    43                 title:              l10n.mediaLibraryTitle,
     42                title:              wp.i18n.__( 'Media Library' ),
    4443                multiple:           false,
    4544                content:            'upload',
    4645                menu:               'default',
  • src/wp-includes/js/media/controllers/replace-image.js

    diff --git src/wp-includes/js/media/controllers/replace-image.js src/wp-includes/js/media/controllers/replace-image.js
    index ed37a50..3fbd0f4 100644
     
    3030 * @param {boolean}                    [attributes.syncSelection=true]      Whether the Attachments selection should be persisted from the last state.
    3131 */
    3232var Library = wp.media.controller.Library,
    33         l10n = wp.media.view.l10n,
    3433        ReplaceImage;
    3534
    3635ReplaceImage = Library.extend({
    3736        defaults: _.defaults({
    3837                id:            'replace-image',
    39                 title:         l10n.replaceImageTitle,
     38                title:         wp.i18n.__( 'Replace Image' ),
    4039                multiple:      false,
    4140                filterable:    'uploaded',
    4241                toolbar:       'replace',
  • src/wp-includes/js/media/controllers/video-details.js

    diff --git src/wp-includes/js/media/controllers/video-details.js src/wp-includes/js/media/controllers/video-details.js
    index 00b301a..423d1bb 100644
     
    88 * @augments Backbone.Model
    99 */
    1010var State = wp.media.controller.State,
    11         l10n = wp.media.view.l10n,
    1211        VideoDetails;
    1312
    1413VideoDetails = State.extend({
    1514        defaults: {
    1615                id: 'video-details',
    1716                toolbar: 'video-details',
    18                 title: l10n.videoDetailsTitle,
     17                title: wp.i18n.__( 'Video Details' ),
    1918                content: 'video-details',
    2019                menu: 'video-details',
    2120                router: false,
  • src/wp-includes/js/media/views/attachment-filters/all.js

    diff --git src/wp-includes/js/media/views/attachment-filters/all.js src/wp-includes/js/media/views/attachment-filters/all.js
    index cc79d12..c53ca90 100644
    All = wp.media.view.AttachmentFilters.extend({ 
    2828                });
    2929
    3030                filters.all = {
    31                         text:  l10n.allMediaItems,
     31                        text:  wp.i18n.__( 'All media items' ),
    3232                        props: {
    3333                                status:  null,
    3434                                type:    null,
    All = wp.media.view.AttachmentFilters.extend({ 
    5454                }
    5555
    5656                filters.unattached = {
    57                         text:  l10n.unattached,
     57                        text:  wp.i18n.__( 'Unattached' ),
    5858                        props: {
    5959                                status:     null,
    6060                                uploadedTo: 0,
    All = wp.media.view.AttachmentFilters.extend({ 
    6969                        this.controller.isModeActive( 'grid' ) ) {
    7070
    7171                        filters.trash = {
    72                                 text:  l10n.trash,
     72                                text:  wp.i18n._x( 'Trash', 'noun' ),
    7373                                props: {
    7474                                        uploadedTo: null,
    7575                                        status:     'trash',
  • src/wp-includes/js/media/views/attachment-filters/date.js

    diff --git src/wp-includes/js/media/views/attachment-filters/date.js src/wp-includes/js/media/views/attachment-filters/date.js
    index 5508e1b..fdd48da 100644
     
    77 * @augments wp.Backbone.View
    88 * @augments Backbone.View
    99 */
    10 var l10n = wp.media.view.l10n,
    11         DateFilter;
    12 
    13 DateFilter = wp.media.view.AttachmentFilters.extend({
     10var DateFilter = wp.media.view.AttachmentFilters.extend({
    1411        id: 'media-attachment-date-filters',
    1512
    1613        createFilters: function() {
    DateFilter = wp.media.view.AttachmentFilters.extend({ 
    2522                        };
    2623                });
    2724                filters.all = {
    28                         text:  l10n.allDates,
     25                        text:  wp.i18n.__( 'All dates' ),
    2926                        props: {
    3027                                monthnum: false,
    3128                                year:  false
  • src/wp-includes/js/media/views/attachment-filters/uploaded.js

    diff --git src/wp-includes/js/media/views/attachment-filters/uploaded.js src/wp-includes/js/media/views/attachment-filters/uploaded.js
    index 7ae0a53..329c247 100644
    Uploaded = wp.media.view.AttachmentFilters.extend({ 
    2222
    2323                this.filters = {
    2424                        all: {
    25                                 text:  text || l10n.allMediaItems,
     25                                text:  text || wp.i18n.__( 'All media items' ),
    2626                                props: {
    2727                                        uploadedTo: null,
    2828                                        orderby: 'date',
    Uploaded = wp.media.view.AttachmentFilters.extend({ 
    4242                        },
    4343
    4444                        unattached: {
    45                                 text:  l10n.unattached,
     45                                text:  wp.i18n.__( 'Unattached' ),
    4646                                props: {
    4747                                        uploadedTo: 0,
    4848                                        orderby: 'menuOrder',
  • src/wp-includes/js/media/views/attachment/details.js

    diff --git src/wp-includes/js/media/views/attachment/details.js src/wp-includes/js/media/views/attachment/details.js
    index f356aaa..167ccb0 100644
     
    88 * @augments Backbone.View
    99 */
    1010var Attachment = wp.media.view.Attachment,
    11         l10n = wp.media.view.l10n,
    1211        Details;
    1312
    1413Details = Attachment.extend({
    Details = Attachment.extend({ 
    6362        deleteAttachment: function( event ) {
    6463                event.preventDefault();
    6564
    66                 if ( window.confirm( l10n.warnDelete ) ) {
     65                if ( window.confirm( wp.i18n.__( "You are about to permanently delete this item.\n  'Cancel' to stop, 'OK' to delete." ) ) ) {
    6766                        this.model.destroy();
    6867                        // Keep focus inside media modal
    6968                        // after image is deleted
  • src/wp-includes/js/media/views/attachments/browser.js

    diff --git src/wp-includes/js/media/views/attachments/browser.js src/wp-includes/js/media/views/attachments/browser.js
    index bd83278..7bcd4d4 100644
     
    2020 */
    2121var View = wp.media.View,
    2222        mediaTrash = wp.media.view.settings.mediaTrash,
    23         l10n = wp.media.view.l10n,
    2423        $ = jQuery,
    2524        AttachmentsBrowser;
    2625
    AttachmentsBrowser = View.extend({ 
    9897                        // "Filters" will return a <select>, need to render
    9998                        // screen reader text before
    10099                        this.toolbar.set( 'filtersLabel', new wp.media.view.Label({
    101                                 value: l10n.filterByType,
     100                                value: wp.i18n.__( 'Filter by type' ),
    102101                                attributes: {
    103102                                        'for':  'media-attachment-filters'
    104103                                },
    AttachmentsBrowser = View.extend({ 
    138137
    139138                        // DateFilter is a <select>, screen reader text needs to be rendered before
    140139                        this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    141                                 value: l10n.filterByDate,
     140                                value: wp.i18n.__( 'Filter by date' ),
    142141                                attributes: {
    143142                                        'for': 'media-attachment-date-filters'
    144143                                },
    AttachmentsBrowser = View.extend({ 
    152151
    153152                        // BulkSelection is a <div> with subviews, including screen reader text
    154153                        this.toolbar.set( 'selectModeToggleButton', new wp.media.view.SelectModeToggleButton({
    155                                 text: l10n.bulkSelect,
     154                                text: wp.i18n.__( 'Bulk Select' ),
    156155                                controller: this.controller,
    157156                                priority: -70
    158157                        }).render() );
    AttachmentsBrowser = View.extend({ 
    161160                                filters: Filters,
    162161                                style: 'primary',
    163162                                disabled: true,
    164                                 text: mediaTrash ? l10n.trashSelected : l10n.deleteSelected,
     163                                text: mediaTrash ? wp.i18n.__( 'Trash Selected' ) : wp.i18n.__( 'Delete Selected' ),
    165164                                controller: this.controller,
    166165                                priority: -60,
    167166                                click: function() {
    AttachmentsBrowser = View.extend({ 
    173172                                                return;
    174173                                        }
    175174
    176                                         if ( ! mediaTrash && ! window.confirm( l10n.warnBulkDelete ) ) {
     175                                        if ( ! mediaTrash && ! window.confirm( wp.i18n.__( "You are about to permanently delete these items.\n  'Cancel' to stop, 'OK' to delete." ) ) ) {
    177176                                                return;
    178177                                        }
    179178
    180179                                        if ( mediaTrash &&
    181180                                                'trash' !== selection.at( 0 ).get( 'status' ) &&
    182                                                 ! window.confirm( l10n.warnBulkTrash ) ) {
     181                                                ! window.confirm( wp.i18n.__( "You are about to trash these items.\n  'Cancel' to stop, 'OK' to delete." ) ) ) {
    183182
    184183                                                return;
    185184                                        }
    AttachmentsBrowser = View.extend({ 
    221220                                        filters: Filters,
    222221                                        style: 'primary',
    223222                                        disabled: true,
    224                                         text: l10n.deleteSelected,
     223                                        text: wp.i18n.__( 'Delete Selected' ),
    225224                                        controller: this.controller,
    226225                                        priority: -55,
    227226                                        click: function() {
    228227                                                var removed = [], selection = this.controller.state().get( 'selection' );
    229228
    230                                                 if ( ! selection.length || ! window.confirm( l10n.warnBulkDelete ) ) {
     229                                                if ( ! selection.length || ! window.confirm( wp.i18n.__( "You are about to permanently delete these items.\n  'Cancel' to stop, 'OK' to delete." ) ) ) {
    231230                                                        return;
    232231                                                }
    233232
    AttachmentsBrowser = View.extend({ 
    249248                } else if ( this.options.date ) {
    250249                        // DateFilter is a <select>, screen reader text needs to be rendered before
    251250                        this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    252                                 value: l10n.filterByDate,
     251                                value: wp.i18n.__( 'Filter by date' ),
    253252                                attributes: {
    254253                                        'for': 'media-attachment-date-filters'
    255254                                },
    AttachmentsBrowser = View.extend({ 
    265264                if ( this.options.search ) {
    266265                        // Search is an input, screen reader text needs to be rendered before
    267266                        this.toolbar.set( 'searchLabel', new wp.media.view.Label({
    268                                 value: l10n.searchMediaLabel,
     267                                value: wp.i18n.__( 'Search Media' ),
    269268                                attributes: {
    270269                                        'for': 'media-search-input'
    271270                                },
    AttachmentsBrowser = View.extend({ 
    280279
    281280                if ( this.options.dragInfo ) {
    282281                        this.toolbar.set( 'dragInfo', new View({
    283                                 el: $( '<div class="instructions">' + l10n.dragInfo + '</div>' )[0],
     282                                el: $( '<div class="instructions">' + wp.i18n.__( 'Drag and drop to reorder media files.' ) + '</div>' )[0],
    284283                                priority: -40
    285284                        }) );
    286285                }
    287286
    288287                if ( this.options.suggestedWidth && this.options.suggestedHeight ) {
    289288                        this.toolbar.set( 'suggestedDimensions', new View({
    290                                 el: $( '<div class="instructions">' + l10n.suggestedDimensions + ' ' + this.options.suggestedWidth + ' &times; ' + this.options.suggestedHeight + '</div>' )[0],
     289                                el: $( '<div class="instructions">' + wp.i18n.__( 'Suggested image dimensions:' ) + ' ' + this.options.suggestedWidth + ' &times; ' + this.options.suggestedHeight + '</div>' )[0],
    291290                                priority: -40
    292291                        }) );
    293292                }
    AttachmentsBrowser = View.extend({ 
    323322                this.uploader = new wp.media.view.UploaderInline({
    324323                        controller: this.controller,
    325324                        status:     false,
    326                         message:    this.controller.isModeActive( 'grid' ) ? '' : l10n.noItemsFound,
     325                        message:    this.controller.isModeActive( 'grid' ) ? '' : wp.i18n.__( 'No items found.' ),
    327326                        canClose:   this.controller.isModeActive( 'grid' )
    328327                });
    329328
    AttachmentsBrowser = View.extend({ 
    367366                        });
    368367
    369368                        this.attachmentsNoResults.$el.addClass( 'hidden no-media' );
    370                         this.attachmentsNoResults.$el.html( l10n.noMedia );
     369                        this.attachmentsNoResults.$el.html( wp.i18n.__( 'No media files found.' ) );
    371370
    372371                        this.views.add( this.attachmentsNoResults );
    373372                }
  • src/wp-includes/js/media/views/button/delete-selected.js

    diff --git src/wp-includes/js/media/views/button/delete-selected.js src/wp-includes/js/media/views/button/delete-selected.js
    index c9ee1b0..72a4ebc 100644
     
    1010 * @augments Backbone.View
    1111 */
    1212var Button = wp.media.view.Button,
    13         l10n = wp.media.view.l10n,
    1413        DeleteSelected;
    1514
    1615DeleteSelected = Button.extend({
    DeleteSelected = Button.extend({ 
    2423
    2524        filterChange: function( model ) {
    2625                if ( 'trash' === model.get( 'status' ) ) {
    27                         this.model.set( 'text', l10n.untrashSelected );
     26                        this.model.set( 'text', wp.i18n.__( 'Untrash Selected' ) );
    2827                } else if ( wp.media.view.settings.mediaTrash ) {
    29                         this.model.set( 'text', l10n.trashSelected );
     28                        this.model.set( 'text', wp.i18n.__( 'Trash Selected' ) );
    3029                } else {
    31                         this.model.set( 'text', l10n.deleteSelected );
     30                        this.model.set( 'text', wp.i18n.__( 'Delete Selected' ) );
    3231                }
    3332        },
    3433
  • src/wp-includes/js/media/views/button/select-mode-toggle.js

    diff --git src/wp-includes/js/media/views/button/select-mode-toggle.js src/wp-includes/js/media/views/button/select-mode-toggle.js
    index 820e5de..73e03fd 100644
     
    88 * @augments Backbone.View
    99 */
    1010var Button = wp.media.view.Button,
    11         l10n = wp.media.view.l10n,
    1211        SelectModeToggle;
    1312
    1413SelectModeToggle = Button.extend({
    SelectModeToggle = Button.extend({ 
    5049                if ( this.controller.isModeActive( 'select' ) ) {
    5150                        this.model.set( {
    5251                                size: 'large',
    53                                 text: l10n.cancelSelection
     52                                text: wp.i18n.__( 'Cancel Selection' )
    5453                        } );
    5554                        children.not( '.spinner, .media-button' ).hide();
    5655                        this.$el.show();
    SelectModeToggle = Button.extend({ 
    5857                } else {
    5958                        this.model.set( {
    6059                                size: '',
    61                                 text: l10n.bulkSelect
     60                                text: wp.i18n.__( 'Bulk Select' )
    6261                        } );
    6362                        this.controller.content.get().$el.removeClass( 'fixed' );
    6463                        toolbar.$el.css( 'width', '' );
  • src/wp-includes/js/media/views/cropper.js

    diff --git src/wp-includes/js/media/views/cropper.js src/wp-includes/js/media/views/cropper.js
    index 9eb75c3..a7be928 100644
     
    1414 */
    1515var View = wp.media.View,
    1616        UploaderStatus = wp.media.view.UploaderStatus,
    17         l10n = wp.media.view.l10n,
    1817        $ = jQuery,
    1918        Cropper;
    2019
    Cropper = View.extend({ 
    3837        },
    3938        prepare: function() {
    4039                return {
    41                         title: l10n.cropYourImage,
     40                        title: wp.i18n.__( 'Crop your image' ),
    4241                        url: this.options.attachment.get('url')
    4342                };
    4443        },
    Cropper = View.extend({ 
    5756
    5857                this.views.add( '.upload-errors', new wp.media.view.UploaderStatusError({
    5958                        filename: UploaderStatus.prototype.filename(filename),
    60                         message: window._wpMediaViewsL10n.cropError
     59                        message: wp.i18n.__( 'There has been an error cropping your image.' )
    6160                }), { at: 0 });
    6261        }
    6362});
  • src/wp-includes/js/media/views/frame/audio-details.js

    diff --git src/wp-includes/js/media/views/frame/audio-details.js src/wp-includes/js/media/views/frame/audio-details.js
    index 1e9aff6..83f8198 100644
     
    1313 */
    1414var MediaDetails = wp.media.view.MediaFrame.MediaDetails,
    1515        MediaLibrary = wp.media.controller.MediaLibrary,
    16 
    17         l10n = wp.media.view.l10n,
    1816        AudioDetails;
    1917
    2018AudioDetails = MediaDetails.extend({
    AudioDetails = MediaDetails.extend({ 
    2523                content: 'audio-details',
    2624                toolbar: 'audio-details',
    2725                type:    'link',
    28                 title:    l10n.audioDetailsTitle,
     26                title:    wp.i18n.__( 'Audio Details' ),
    2927                priority: 120
    3028        },
    3129
    3230        initialize: function( options ) {
    3331                options.DetailsView = wp.media.view.AudioDetails;
    34                 options.cancelText = l10n.audioDetailsCancel;
    35                 options.addText = l10n.audioAddSourceTitle;
     32                options.cancelText = wp.i18n.__( 'Cancel Edit' );
     33                options.addText = wp.i18n.__( 'Add Audio Source' );
    3634
    3735                MediaDetails.prototype.initialize.call( this, options );
    3836        },
    AudioDetails = MediaDetails.extend({ 
    5351                        new MediaLibrary( {
    5452                                type: 'audio',
    5553                                id: 'replace-audio',
    56                                 title: l10n.audioReplaceTitle,
     54                                title: wp.i18n.__( 'Replace Audio' ),
    5755                                toolbar: 'replace-audio',
    5856                                media: this.media,
    5957                                menu: 'audio-details'
    AudioDetails = MediaDetails.extend({ 
    6260                        new MediaLibrary( {
    6361                                type: 'audio',
    6462                                id: 'add-audio-source',
    65                                 title: l10n.audioAddSourceTitle,
     63                                title: wp.i18n.__( 'Add Audio Source' ),
    6664                                toolbar: 'add-audio-source',
    6765                                media: this.media,
    6866                                menu: false
  • src/wp-includes/js/media/views/frame/image-details.js

    diff --git src/wp-includes/js/media/views/frame/image-details.js src/wp-includes/js/media/views/frame/image-details.js
    index a75c8ae..0776110 100644
     
    1414 * @mixes wp.media.controller.StateMachine
    1515 */
    1616var Select = wp.media.view.MediaFrame.Select,
    17         l10n = wp.media.view.l10n,
    1817        ImageDetails;
    1918
    2019ImageDetails = Select.extend({
    ImageDetails = Select.extend({ 
    2524                content: 'image-details',
    2625                toolbar: 'image-details',
    2726                type:    'link',
    28                 title:    l10n.imageDetailsTitle,
     27                title:    wp.i18n.__( 'Image Details' ),
    2928                priority: 120
    3029        },
    3130
    ImageDetails = Select.extend({ 
    5655                                library: wp.media.query( { type: 'image' } ),
    5756                                image: this.image,
    5857                                multiple:  false,
    59                                 title:     l10n.imageReplaceTitle,
     58                                title:     wp.i18n.__( 'Replace Image' ),
    6059                                toolbar: 'replace',
    6160                                priority:  80,
    6261                                displaySettings: true
    ImageDetails = Select.extend({ 
    10099                        items: {
    101100                                select: {
    102101                                        style:    'primary',
    103                                         text:     l10n.update,
     102                                        text:     wp.i18n.__( 'Update' ),
    104103                                        priority: 80,
    105104
    106105                                        click: function() {
    ImageDetails = Select.extend({ 
    131130                        controller: this,
    132131                        items: {
    133132                                back: {
    134                                         text:     l10n.back,
     133                                        text:     wp.i18n.__( 'Back' ),
    135134                                        priority: 20,
    136135                                        click:    function() {
    137136                                                if ( previous ) {
    ImageDetails = Select.extend({ 
    144143
    145144                                replace: {
    146145                                        style:    'primary',
    147                                         text:     l10n.replace,
     146                                        text:     wp.i18n.__( 'Replace' ),
    148147                                        priority: 80,
    149148
    150149                                        click: function() {
  • src/wp-includes/js/media/views/frame/media-details.js

    diff --git src/wp-includes/js/media/views/frame/media-details.js src/wp-includes/js/media/views/frame/media-details.js
    index 407c136..f064ccb 100644
     
    1111 * @mixes wp.media.controller.StateMachine
    1212 */
    1313var Select = wp.media.view.MediaFrame.Select,
    14         l10n = wp.media.view.l10n,
    1514        MediaDetails;
    1615
    1716MediaDetails = Select.extend({
    MediaDetails = Select.extend({ 
    102101        },
    103102
    104103        renderDetailsToolbar: function() {
    105                 this.setPrimaryButton( l10n.update, function( controller, state ) {
     104                this.setPrimaryButton( wp.i18n.__( 'Update' ), function( controller, state ) {
    106105                        controller.close();
    107106                        state.trigger( 'update', controller.media.toJSON() );
    108107                } );
    109108        },
    110109
    111110        renderReplaceToolbar: function() {
    112                 this.setPrimaryButton( l10n.replace, function( controller, state ) {
     111                this.setPrimaryButton( wp.i18n.__( 'Replace' ), function( controller, state ) {
    113112                        var attachment = state.get( 'selection' ).single();
    114113                        controller.media.changeAttachment( attachment );
    115114                        state.trigger( 'replace', controller.media.toJSON() );
  • src/wp-includes/js/media/views/frame/post.js

    diff --git src/wp-includes/js/media/views/frame/post.js src/wp-includes/js/media/views/frame/post.js
    index f4d078f..628f606 100644
    Post = Select.extend({ 
    5353                        // Main states.
    5454                        new Library({
    5555                                id:         'insert',
    56                                 title:      l10n.insertMediaTitle,
     56                                title:      wp.i18n.__( 'Insert Media' ),
    5757                                priority:   20,
    5858                                toolbar:    'main-insert',
    5959                                filterable: 'all',
    Post = Select.extend({ 
    7474
    7575                        new Library({
    7676                                id:         'gallery',
    77                                 title:      l10n.createGalleryTitle,
     77                                title:      wp.i18n.__( 'Create Gallery' ),
    7878                                priority:   40,
    7979                                toolbar:    'main-gallery',
    8080                                filterable: 'uploaded',
    Post = Select.extend({ 
    102102
    103103                        new Library({
    104104                                id:         'playlist',
    105                                 title:      l10n.createPlaylistTitle,
     105                                title:      wp.i18n.__( 'Create Audio Playlist' ),
    106106                                priority:   60,
    107107                                toolbar:    'main-playlist',
    108108                                filterable: 'uploaded',
    Post = Select.extend({ 
    118118                        new wp.media.controller.CollectionEdit({
    119119                                type: 'audio',
    120120                                collectionType: 'playlist',
    121                                 title:          l10n.editPlaylistTitle,
     121                                title:          wp.i18n.__( 'Edit Audio Playlist' ),
    122122                                SettingsView:   wp.media.view.Settings.Playlist,
    123123                                library:        options.selection,
    124124                                editing:        options.editing,
    125125                                menu:           'playlist',
    126                                 dragInfoText:   l10n.playlistDragInfo,
     126                                dragInfoText:   wp.i18n.__( 'Drag and drop to reorder tracks.' ),
    127127                                dragInfo:       false
    128128                        }),
    129129
    130130                        new wp.media.controller.CollectionAdd({
    131131                                type: 'audio',
    132132                                collectionType: 'playlist',
    133                                 title: l10n.addToPlaylistTitle
     133                                title: wp.i18n.__( 'Add to Audio Playlist' )
    134134                        }),
    135135
    136136                        new Library({
    137137                                id:         'video-playlist',
    138                                 title:      l10n.createVideoPlaylistTitle,
     138                                title:      wp.i18n.__( 'Create Video Playlist' ),
    139139                                priority:   60,
    140140                                toolbar:    'main-video-playlist',
    141141                                filterable: 'uploaded',
    Post = Select.extend({ 
    150150                        new wp.media.controller.CollectionEdit({
    151151                                type: 'video',
    152152                                collectionType: 'playlist',
    153                                 title:          l10n.editVideoPlaylistTitle,
     153                                title:          wp.i18n.__( 'Edit Video Playlist' ),
    154154                                SettingsView:   wp.media.view.Settings.Playlist,
    155155                                library:        options.selection,
    156156                                editing:        options.editing,
    157157                                menu:           'video-playlist',
    158                                 dragInfoText:   l10n.videoPlaylistDragInfo,
     158                                dragInfoText:   wp.i18n.__( 'Drag and drop to reorder videos.' ),
    159159                                dragInfo:       false
    160160                        }),
    161161
    162162                        new wp.media.controller.CollectionAdd({
    163163                                type: 'video',
    164164                                collectionType: 'playlist',
    165                                 title: l10n.addToVideoPlaylistTitle
     165                                title: wp.i18n.__( 'Add to Video Playlist' )
    166166                        })
    167167                ]);
    168168
    Post = Select.extend({ 
    279279
    280280                view.set({
    281281                        cancel: {
    282                                 text:     l10n.cancelGalleryTitle,
     282                                text:     wp.i18n.__( '&#8592; Cancel Gallery' ),
    283283                                priority: 20,
    284284                                click:    function() {
    285285                                        if ( previous ) {
    Post = Select.extend({ 
    307307
    308308                view.set({
    309309                        cancel: {
    310                                 text:     l10n.cancelPlaylistTitle,
     310                                text:     wp.i18n.__( '&#8592; Cancel Audio Playlist' ),
    311311                                priority: 20,
    312312                                click:    function() {
    313313                                        if ( previous ) {
    Post = Select.extend({ 
    331331
    332332                view.set({
    333333                        cancel: {
    334                                 text:     l10n.cancelVideoPlaylistTitle,
     334                                text:     wp.i18n.__( '&#8592; Cancel Video Playlist' ),
    335335                                priority: 20,