<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[47884] trunk/src: I18N: Use `wp.i18n` for translatable strings in `wp-admin/js/updates.js`.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/47884">47884</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/47884","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>ocean90</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2020-06-01 21:39:30 +0000 (Mon, 01 Jun 2020)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>I18N: Use `wp.i18n` for translatable strings in `wp-admin/js/updates.js`.

This removes the usage of `wp_localize_script()` for passing translations to the script and instead adds the translatable strings in the script directly through the use of `wp.i18n` and its utilities.

Props swissspidy, ocean90.
See <a href="https://core.trac.wordpress.org/ticket/20491">#20491</a>.
Fixes <a href="https://core.trac.wordpress.org/ticket/50235">#50235</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcjs_enqueueswpthemejs">trunk/src/js/_enqueues/wp/theme.js</a></li>
<li><a href="#trunksrcjs_enqueueswpupdatesjs">trunk/src/js/_enqueues/wp/updates.js</a></li>
<li><a href="#trunksrcwpincludesscriptloaderphp">trunk/src/wp-includes/script-loader.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcjs_enqueueswpthemejs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/wp/theme.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/wp/theme.js        2020-06-01 20:51:10 UTC (rev 47883)
+++ trunk/src/js/_enqueues/wp/theme.js  2020-06-01 21:39:30 UTC (rev 47884)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -799,7 +799,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                _this.model.set( { autoupdate: 'enable' === data.state } );
</span><span class="cx" style="display: block; padding: 0 10px">                                $( document ).off( 'wp-auto-update-setting-changed', callback );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         };
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Triggered in updates.js
</span><span class="cx" style="display: block; padding: 0 10px">                $( document ).on( 'wp-auto-update-setting-changed', callback );
</span></span></pre></div>
<a id="trunksrcjs_enqueueswpupdatesjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/js/_enqueues/wp/updates.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/js/_enqueues/wp/updates.js      2020-06-01 20:51:10 UTC (rev 47883)
+++ trunk/src/js/_enqueues/wp/updates.js        2020-06-01 21:39:30 UTC (rev 47884)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12,7 +12,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @param {object}  wp                                  WP object.
</span><span class="cx" style="display: block; padding: 0 10px">  * @param {object}  settings                            WP Updates settings.
</span><span class="cx" style="display: block; padding: 0 10px">  * @param {string}  settings.ajax_nonce                 AJAX nonce.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param {object}  settings.l10n                       Translation strings.
</del><span class="cx" style="display: block; padding: 0 10px">  * @param {object=} settings.plugins                    Base names of plugins in their different states.
</span><span class="cx" style="display: block; padding: 0 10px">  * @param {Array}   settings.plugins.all                Base names of all plugins.
</span><span class="cx" style="display: block; padding: 0 10px">  * @param {Array}   settings.plugins.active             Base names of active plugins.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -27,7 +26,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @param {number}  settings.totals.count               Holds the amount of available updates.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> (function( $, wp, settings ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var $document = $( document );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ var $document = $( document ),
+               __ = wp.i18n.__,
+               _x = wp.i18n._x,
+               sprintf = wp.i18n.sprintf;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        wp = wp || {};
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -50,15 +52,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        wp.updates.ajaxNonce = settings.ajax_nonce;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Localized strings.
-        *
-        * @since 4.2.0
-        *
-        * @type {object}
-        */
-       wp.updates.l10n = settings.l10n;
-
-       /**
</del><span class="cx" style="display: block; padding: 0 10px">          * Current search term.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 4.6.0
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -381,23 +374,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $updateRow = $( 'tr[data-plugin="' + args.plugin + '"]' );
</span><span class="cx" style="display: block; padding: 0 10px">                        $message   = $updateRow.find( '.update-message' ).removeClass( 'notice-error' ).addClass( 'updating-message notice-warning' ).find( 'p' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        message    = wp.updates.l10n.pluginUpdatingLabel.replace( '%s', $updateRow.find( '.plugin-title strong' ).text() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 message    = sprintf(
+                               /* translators: %s: Plugin name and version. */
+                               _x( 'Updating %s...', 'plugin' ),
+                               $updateRow.find( '.plugin-title strong' ).text()
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px">                 } else if ( 'plugin-install' === pagenow || 'plugin-install-network' === pagenow ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $card    = $( '.plugin-card-' + args.slug );
</span><span class="cx" style="display: block; padding: 0 10px">                        $message = $card.find( '.update-now' ).addClass( 'updating-message' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        message  = wp.updates.l10n.pluginUpdatingLabel.replace( '%s', $message.data( 'name' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 message    = sprintf(
+                               /* translators: %s: Plugin name and version. */
+                               _x( 'Updating %s...', 'plugin' ),
+                               $message.data( 'name' )
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Remove previous error messages, if any.
</span><span class="cx" style="display: block; padding: 0 10px">                        $card.removeClass( 'plugin-card-update-failed' ).find( '.notice.notice-error' ).remove();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $message.html() !== wp.updates.l10n.updating ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $message.html() !== __( 'Updating...' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $message.data( 'originaltext', $message.html() );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $message
</span><span class="cx" style="display: block; padding: 0 10px">                        .attr( 'aria-label', message )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .text( wp.updates.l10n.updating );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .text( __( 'Updating...' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $document.trigger( 'wp-plugin-updating', args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -442,10 +443,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $updateMessage
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .attr( 'aria-label', wp.updates.l10n.pluginUpdatedLabel.replace( '%s', response.pluginName ) )
-                       .text( wp.updates.l10n.pluginUpdated );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .attr(
+                               'aria-label',
+                               sprintf(
+                                       /* translators: %s: Plugin name and version. */
+                                       _x( '%s updated!', 'plugin' ),
+                                       response.pluginName
+                               )
+                       )
+                       .text( _x( 'Updated!', 'plugin' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.updatedMsg, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Update completed successfully.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp.updates.decrementCount( 'plugin' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -476,7 +484,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                errorMessage = wp.updates.l10n.updateFailed.replace( '%s', response.errorMessage );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         errorMessage = sprintf(
+                       /* translators: %s: Error string for a failed update. */
+                       __( 'Update Failed: %s' ),
+                       response.errorMessage
+               );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( response.plugin ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -488,7 +500,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( response.pluginName ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $message.find( 'p' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        .attr( 'aria-label', wp.updates.l10n.pluginUpdateFailedLabel.replace( '%s', response.pluginName ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 .attr(
+                                               'aria-label',
+                                               sprintf(
+                                                       /* translators: %s: Plugin name and version. */
+                                                       _x( '%s update failed', 'plugin' ),
+                                                       response.pluginName
+                                               )
+                                       );
</ins><span class="cx" style="display: block; padding: 0 10px">                         } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                $message.find( 'p' ).removeAttr( 'aria-label' );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -501,11 +520,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                } ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $card.find( '.update-now' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                .text( wp.updates.l10n.updateFailedShort ).removeClass( 'updating-message' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         .text(  __( 'Update Failed!' ) )
+                               .removeClass( 'updating-message' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( response.pluginName ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $card.find( '.update-now' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        .attr( 'aria-label', wp.updates.l10n.pluginUpdateFailedLabel.replace( '%s', response.pluginName ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 .attr(
+                                               'aria-label',
+                                               sprintf(
+                                                       /* translators: %s: Plugin name and version. */
+                                                       _x( '%s update failed', 'plugin' ),
+                                                       response.pluginName
+                                               )
+                                       );
</ins><span class="cx" style="display: block; padding: 0 10px">                         } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                $card.find( '.update-now' ).removeAttr( 'aria-label' );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -520,7 +547,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        $card.find( '.update-now' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                .attr( 'aria-label', false )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                .text( wp.updates.l10n.updateNow );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         .text( __( 'Update Now' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }, 200 );
</span><span class="cx" style="display: block; padding: 0 10px">                        } );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -555,16 +582,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $message = $( '[data-slug="' + args.slug + '"]' );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $message.html() !== wp.updates.l10n.installing ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $message.html() !== __( 'Installing...' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $message.data( 'originaltext', $message.html() );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $message
</span><span class="cx" style="display: block; padding: 0 10px">                        .addClass( 'updating-message' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .attr( 'aria-label', wp.updates.l10n.pluginInstallingLabel.replace( '%s', $message.data( 'name' ) ) )
-                       .text( wp.updates.l10n.installing );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .attr(
+                               'aria-label',
+                               sprintf(
+                                       /* translators: %s: Plugin name and version. */
+                                       _x( 'Installing %s...', 'plugin' ),
+                                       $message.data( 'name' )
+                               )
+                       )
+                       .text( __( 'Installing...' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.installingMsg, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Installing... please wait.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Remove previous error messages, if any.
</span><span class="cx" style="display: block; padding: 0 10px">                $card.removeClass( 'plugin-card-install-failed' ).find( '.notice.notice-error' ).remove();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -590,10 +624,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $message
</span><span class="cx" style="display: block; padding: 0 10px">                        .removeClass( 'updating-message' )
</span><span class="cx" style="display: block; padding: 0 10px">                        .addClass( 'updated-message installed button-disabled' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .attr( 'aria-label', wp.updates.l10n.pluginInstalledLabel.replace( '%s', response.pluginName ) )
-                       .text( wp.updates.l10n.pluginInstalled );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .attr(
+                               'aria-label',
+                               sprintf(
+                                       /* translators: %s: Plugin name and version. */
+                                       _x( '%s installed!', 'plugin' ),
+                                       response.pluginName
+                               )
+                       )
+                       .text( _x( 'Installed!', 'plugin' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Installation completed successfully.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $document.trigger( 'wp-plugin-install-success', response );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -601,10 +642,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        setTimeout( function() {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                // Transform the 'Install' button into an 'Activate' button.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $message.removeClass( 'install-now installed button-disabled updated-message' ).addClass( 'activate-now button-primary' )
-                                       .attr( 'href', response.activateUrl )
-                                       .attr( 'aria-label', wp.updates.l10n.activatePluginLabel.replace( '%s', response.pluginName ) )
-                                       .text( wp.updates.l10n.activatePlugin );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $message.removeClass( 'install-now installed button-disabled updated-message' )
+                                       .addClass( 'activate-now button-primary' )
+                                       .attr( 'href', response.activateUrl );
+
+                               if ( 'plugins-network' === pagenow ) {
+                                       $message
+                                               .attr(
+                                                       'aria-label',
+                                                       sprintf(
+                                                               /* translators: %s: Plugin name. */
+                                                               _x( 'Network Activate %s', 'plugin' ),
+                                                               response.pluginName
+                                                       )
+                                               )
+                                               .text( __( 'Network Activate' ) );
+                               } else {
+                                       $message
+                                               .attr(
+                                                       'aria-label',
+                                                       sprintf(
+                                                               /* translators: %s: Plugin name. */
+                                                               _x( 'Activate %s', 'plugin' ),
+                                                               response.pluginName
+                                                       )
+                                               )
+                                               .text( __( 'Activate' ) );
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px">                         }, 1000 );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -633,7 +697,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                errorMessage = wp.updates.l10n.installFailed.replace( '%s', response.errorMessage );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         errorMessage = sprintf(
+                       /* translators: %s: Error string for a failed installation. */
+                       __( 'Installation failed: %s' ),
+                       response.errorMessage
+               );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $card
</span><span class="cx" style="display: block; padding: 0 10px">                        .addClass( 'plugin-card-update-failed' )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -651,8 +719,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $button
</span><span class="cx" style="display: block; padding: 0 10px">                        .removeClass( 'updating-message' ).addClass( 'button-disabled' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .attr( 'aria-label', wp.updates.l10n.pluginInstallFailedLabel.replace( '%s', $button.data( 'name' ) ) )
-                       .text( wp.updates.l10n.installFailedShort );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .attr(
+                               'aria-label',
+                               sprintf(
+                                       /* translators: %s: Plugin name and version. */
+                                       _x( '%s installation failed', 'plugin' ),
+                                       $button.data( 'name' )
+                               )
+                       )
+                       .text( __( 'Installation Failed!' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp.a11y.speak( errorMessage, 'assertive' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -673,7 +748,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                wp.updates.addAdminNotice( {
</span><span class="cx" style="display: block; padding: 0 10px">                        id:        'install-success',
</span><span class="cx" style="display: block; padding: 0 10px">                        className: 'notice-success is-dismissible',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        message:   wp.updates.l10n.importerInstalledMsg.replace( '%s', response.activateUrl + '&from=import' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 message:   sprintf(
+                               /* translators: %s: Activation URL. */
+                               __( 'Importer installed successfully. <a href="%s">Run importer</a>' ),
+                               response.activateUrl + '&from=import'
+                       )
</ins><span class="cx" style="display: block; padding: 0 10px">                 } );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $( '[data-slug="' + response.slug + '"]' )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -681,11 +760,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        .addClass( 'activate-now' )
</span><span class="cx" style="display: block; padding: 0 10px">                        .attr({
</span><span class="cx" style="display: block; padding: 0 10px">                                'href': response.activateUrl + '&from=import',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'aria-label': wp.updates.l10n.activateImporterLabel.replace( '%s', response.pluginName )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'aria-label':sprintf(
+                                       /* translators: %s: Importer name. */
+                                       __( 'Run %s' ),
+                                       response.pluginName
+                               )
</ins><span class="cx" style="display: block; padding: 0 10px">                         })
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .text( wp.updates.l10n.activateImporter );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .text( __( 'Run Importer' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Installation completed successfully.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $document.trigger( 'wp-importer-install-success', response );
</span><span class="cx" style="display: block; padding: 0 10px">        };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -702,7 +785,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @param {string}  response.errorMessage The error that occurred.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        wp.updates.installImporterError = function( response ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                var errorMessage = wp.updates.l10n.installFailed.replace( '%s', response.errorMessage ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         var errorMessage = sprintf(
+                               /* translators: %s: Error string for a failed installation. */
+                               __( 'Installation failed: %s' ),
+                               response.errorMessage
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $installLink = $( '[data-slug="' + response.slug + '"]' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        pluginName = $installLink.data( 'name' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -722,8 +809,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $installLink
</span><span class="cx" style="display: block; padding: 0 10px">                        .removeClass( 'updating-message' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .text( wp.updates.l10n.installNow )
-                       .attr( 'aria-label', wp.updates.l10n.pluginInstallNowLabel.replace( '%s', pluginName ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .attr(
+                               'aria-label',
+                               sprintf(
+                                       /* translators: %s: Plugin name. */
+                                        _x( 'Install %s now', 'plugin' ),
+                                        pluginName
+                               )
+                       )
+                       .text( __( 'Install Now' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp.a11y.speak( errorMessage, 'assertive' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -751,13 +845,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        error: wp.updates.deletePluginError
</span><span class="cx" style="display: block; padding: 0 10px">                }, args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $link.html() !== wp.updates.l10n.deleting ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $link.html() !== __( 'Deleting...' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $link
</span><span class="cx" style="display: block; padding: 0 10px">                                .data( 'originaltext', $link.html() )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                .text( wp.updates.l10n.deleting );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         .text( __( 'Deleting...' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.deleting, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Deleting...' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $document.trigger( 'wp-plugin-deleting', args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -847,12 +941,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $views.find( '.all' ).remove();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! $form.find( 'tr.no-items' ).length ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $form.find( '#the-list' ).append( '<tr class="no-items"><td class="colspanchange" colspan="' + columnCount + '">' + wp.updates.l10n.noPlugins + '</td></tr>' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $form.find( '#the-list' ).append( '<tr class="no-items"><td class="colspanchange" colspan="' + columnCount + '">' + __( 'You do not appear to have any plugins available at this time.' ) + '</td></tr>' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                } );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.pluginDeleted, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( _x( 'Deleted!', 'plugin' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $document.trigger( 'wp-plugin-delete-success', response );
</span><span class="cx" style="display: block; padding: 0 10px">        };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -957,12 +1051,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $notice = $notice.addClass( 'updating-message' ).find( 'p' );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $notice.html() !== wp.updates.l10n.updating ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $notice.html() !== __( 'Updating...' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $notice.data( 'originaltext', $notice.html() );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.updatingMsg, 'polite' );
-               $notice.text( wp.updates.l10n.updating );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Updating... please wait.' ), 'polite' );
+               $notice.text( __( 'Updating...' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $document.trigger( 'wp-theme-updating', args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -986,7 +1080,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $theme         = $( '[data-slug="' + response.slug + '"]' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        updatedMessage = {
</span><span class="cx" style="display: block; padding: 0 10px">                                className: 'updated-message notice-success notice-alt',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                message:   wp.updates.l10n.themeUpdated
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         message:   _x( 'Updated!', 'theme' )
</ins><span class="cx" style="display: block; padding: 0 10px">                         },
</span><span class="cx" style="display: block; padding: 0 10px">                        $notice, newText;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1023,7 +1117,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp.updates.addAdminNotice( _.extend( { selector: $notice }, updatedMessage ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.updatedMsg, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Update completed successfully.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp.updates.decrementCount( 'theme' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1047,7 +1141,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        wp.updates.updateThemeError = function( response ) {
</span><span class="cx" style="display: block; padding: 0 10px">                var $theme       = $( '[data-slug="' + response.slug + '"]' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        errorMessage = wp.updates.l10n.updateFailed.replace( '%s', response.errorMessage ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 errorMessage = sprintf(
+                               /* translators: %s: Error string for a failed update. */
+                                __( 'Update Failed: %s' ),
+                               response.errorMessage
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $notice;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! wp.updates.isValidResponse( response, 'update' ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1103,15 +1201,23 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $message.addClass( 'updating-message' );
</span><span class="cx" style="display: block; padding: 0 10px">                $message.parents( '.theme' ).addClass( 'focus' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $message.html() !== wp.updates.l10n.installing ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $message.html() !== __( 'Installing...' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $message.data( 'originaltext', $message.html() );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $message
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .text( wp.updates.l10n.installing )
-                       .attr( 'aria-label', wp.updates.l10n.themeInstallingLabel.replace( '%s', $message.data( 'name' ) ) );
-               wp.a11y.speak( wp.updates.l10n.installingMsg, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .attr(
+                               'aria-label',
+                               sprintf(
+                                       /* translators: %s: Theme name and version. */
+                                       _x( 'Installing %s...', 'theme' ),
+                                       $message.data( 'name' )
+                               )
+                       )
+                       .text( __( 'Installing...' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp.a11y.speak( __( 'Installing... please wait.' ), 'polite' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Remove previous error messages, if any.
</span><span class="cx" style="display: block; padding: 0 10px">                $( '.install-theme-info, [data-slug="' + args.slug + '"]' ).removeClass( 'theme-install-failed' ).find( '.notice.notice-error' ).remove();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1139,10 +1245,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $message = $card.find( '.button-primary' )
</span><span class="cx" style="display: block; padding: 0 10px">                        .removeClass( 'updating-message' )
</span><span class="cx" style="display: block; padding: 0 10px">                        .addClass( 'updated-message disabled' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .attr( 'aria-label', wp.updates.l10n.themeInstalledLabel.replace( '%s', response.themeName ) )
-                       .text( wp.updates.l10n.themeInstalled );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .attr(
+                               'aria-label',
+                               sprintf(
+                                       /* translators: %s: Theme name and version. */
+                                       _x( '%s installed!', 'theme' ),
+                                       response.themeName
+                               )
+                       )
+                       .text( _x( 'Installed!', 'theme' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Installation completed successfully.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                setTimeout( function() {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1152,9 +1265,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $message
</span><span class="cx" style="display: block; padding: 0 10px">                                        .attr( 'href', response.activateUrl )
</span><span class="cx" style="display: block; padding: 0 10px">                                        .removeClass( 'theme-install updated-message disabled' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        .addClass( 'activate' )
-                                       .attr( 'aria-label', wp.updates.l10n.activateThemeLabel.replace( '%s', response.themeName ) )
-                                       .text( wp.updates.l10n.activateTheme );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 .addClass( 'activate' );
+
+                               if ( 'themes-network' === pagenow ) {
+                                       $message
+                                               .attr(
+                                                       'aria-label',
+                                                       sprintf(
+                                                               /* translators: %s: Theme name. */
+                                                               _x( 'Network Activate %s', 'theme' ),
+                                                               response.themeName
+                                                       )
+                                               )
+                                               .text( __( 'Network Enable' ) );
+                               } else {
+                                       $message
+                                               .attr(
+                                                       'aria-label',
+                                                       sprintf(
+                                                               /* translators: %s: Theme name. */
+                                                               _x( 'Activate %s', 'theme' ),
+                                                               response.themeName
+                                                       )
+                                               )
+                                               .text( __( 'Activate' ) );
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( response.customizeUrl ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1164,7 +1299,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        return $( '<a>' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                .attr( 'href', response.customizeUrl )
</span><span class="cx" style="display: block; padding: 0 10px">                                                .addClass( 'button load-customize' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                .text( wp.updates.l10n.livePreview );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         .text( __( 'Live Preview' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 } );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }, 1000 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1182,7 +1317,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        wp.updates.installThemeError = function( response ) {
</span><span class="cx" style="display: block; padding: 0 10px">                var $card, $button,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        errorMessage = wp.updates.l10n.installFailed.replace( '%s', response.errorMessage ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 errorMessage = sprintf(
+                               /* translators: %s: Error string for a failed installation. */
+                               __( 'Installation failed: %s' ),
+                               response.errorMessage
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $message     = wp.updates.adminNotice( {
</span><span class="cx" style="display: block; padding: 0 10px">                                className: 'update-message notice-error notice-alt',
</span><span class="cx" style="display: block; padding: 0 10px">                                message:   errorMessage
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1217,8 +1356,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $button
</span><span class="cx" style="display: block; padding: 0 10px">                        .removeClass( 'updating-message' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .attr( 'aria-label', wp.updates.l10n.themeInstallFailedLabel.replace( '%s', $button.data( 'name' ) ) )
-                       .text( wp.updates.l10n.installFailedShort );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .attr(
+                               'aria-label',
+                               sprintf(
+                                       /* translators: %s: Theme name and version. */
+                                       _x( '%s installation failed', 'theme' ),
+                                       $button.data( 'name' )
+                               )
+                       )
+                       .text( __( 'Installation Failed!' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                wp.a11y.speak( errorMessage, 'assertive' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1251,13 +1397,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        error: wp.updates.deleteThemeError
</span><span class="cx" style="display: block; padding: 0 10px">                }, args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $button && $button.html() !== wp.updates.l10n.deleting ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $button && $button.html() !== __( 'Deleting...' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $button
</span><span class="cx" style="display: block; padding: 0 10px">                                .data( 'originaltext', $button.html() )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                .text( wp.updates.l10n.deleting );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         .text( __( 'Deleting...' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.deleting, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( __( 'Deleting...' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Remove previous error messages, if any.
</span><span class="cx" style="display: block; padding: 0 10px">                $( '.theme-info .update-message' ).remove();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1320,7 +1466,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        } );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp.a11y.speak( wp.updates.l10n.themeDeleted, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp.a11y.speak( _x( 'Deleted!', 'theme' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $document.trigger( 'wp-theme-delete-success', response );
</span><span class="cx" style="display: block; padding: 0 10px">        };
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1340,7 +1486,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $button      = $( '.theme-actions .delete-theme' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        updateRow    = wp.template( 'item-update-row' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        $updateRow   = $themeRow.siblings( '#' + response.slug + '-update' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        errorMessage = wp.updates.l10n.deleteFailed.replace( '%s', response.errorMessage ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 errorMessage = sprintf(
+                               /* translators: %s: Error string for a failed deletion. */
+                               __( 'Deletion failed: %s' ),
+                               response.errorMessage
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $message     = wp.updates.adminNotice( {
</span><span class="cx" style="display: block; padding: 0 10px">                                className: 'update-message notice-error notice-alt',
</span><span class="cx" style="display: block; padding: 0 10px">                                message:   errorMessage
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1631,8 +1781,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *                                                'update' or 'install'.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        wp.updates.isValidResponse = function( response, action ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                var error = wp.updates.l10n.unknownError,
-                   errorMessage;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         var error = __( 'Something went wrong.' ),
+                       errorMessage;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Make sure the response is a valid data object and not a Promise object.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( _.isObject( response ) && ! _.isFunction( response.always ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1640,11 +1790,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( _.isString( response ) && '-1' === response ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        error = wp.updates.l10n.nonceError;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 error = __( 'An error has occurred. Please reload the page and try again.' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 } else if ( _.isString( response ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        error = response;
</span><span class="cx" style="display: block; padding: 0 10px">                } else if ( 'undefined' !== typeof response.readyState && 0 === response.readyState ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        error = wp.updates.l10n.connectionError;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 error = __( 'Connection lost or the server is busy. Please try again later.' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 } else if ( _.isString( response.responseText ) && '' !== response.responseText ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        error = response.responseText;
</span><span class="cx" style="display: block; padding: 0 10px">                } else if ( _.isString( response.statusText ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1653,15 +1803,18 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                switch ( action ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'update':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                errorMessage = wp.updates.l10n.updateFailed;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         /* translators: %s: Error string for a failed update. */
+                               errorMessage = __( 'Update Failed: %s' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'install':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                errorMessage = wp.updates.l10n.installFailed;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         /* translators: %s: Error string for a failed installation. */
+                               errorMessage = __( 'Installation failed: %s' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'delete':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                errorMessage = wp.updates.l10n.deleteFailed;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         /* translators: %s: Error string for a failed deletion. */
+                               errorMessage = __( 'Deletion failed: %s' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 break;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1685,7 +1838,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        .removeClass( 'updating-message' )
</span><span class="cx" style="display: block; padding: 0 10px">                        .removeAttr( 'aria-label' )
</span><span class="cx" style="display: block; padding: 0 10px">                        .prop( 'disabled', true )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        .text( wp.updates.l10n.updateFailedShort );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 .text( __( 'Update Failed!' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $( '.updating-message:not(.button):not(.thickbox)' )
</span><span class="cx" style="display: block; padding: 0 10px">                        .removeClass( 'updating-message notice-warning' )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1709,7 +1862,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        wp.updates.beforeunload = function() {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( wp.updates.ajaxLocked ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return wp.updates.l10n.beforeunload;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return __( 'Updates may not complete if you navigate away from this page.' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">        };
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1822,14 +1975,28 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( 'plugin-install' === pagenow || 'plugin-install-network' === pagenow ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( 'update-plugin' === job.action ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $message.attr( 'aria-label', wp.updates.l10n.pluginUpdateNowLabel.replace( '%s', $message.data( 'name' ) ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $message.attr(
+                                                       'aria-label',
+                                                       sprintf(
+                                                               /* translators: %s: Plugin name and version. */
+                                                               _x( 'Update %s now', 'plugin' ),
+                                                               $message.data( 'name' )
+                                                       )
+                                               );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         } else if ( 'install-plugin' === job.action ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $message.attr( 'aria-label', wp.updates.l10n.pluginInstallNowLabel.replace( '%s', $message.data( 'name' ) ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $message.attr(
+                                                       'aria-label',
+                                                       sprintf(
+                                                               /* translators: %s: Plugin name. */
+                                                               _x( 'Install %s now', 'plugin' ),
+                                                               $message.data( 'name' )
+                                                       )
+                                               );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 wp.a11y.speak( __( 'Update canceled.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 } );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1905,9 +2072,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        $message
</span><span class="cx" style="display: block; padding: 0 10px">                                                .removeClass( 'updating-message' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                .text( wp.updates.l10n.installNow );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         .text( __( 'Install Now' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 wp.a11y.speak( __( 'Update canceled.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 } );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1940,10 +2107,17 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        $button
</span><span class="cx" style="display: block; padding: 0 10px">                                                .removeClass( 'updating-message' )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                .text( wp.updates.l10n.installNow )
-                                               .attr( 'aria-label', wp.updates.l10n.pluginInstallNowLabel.replace( '%s', pluginName ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         .attr(
+                                                       'aria-label',
+                                                       sprintf(
+                                                               /* translators: %s: Plugin name. */
+                                                               _x( 'Install %s now', 'plugin' ),
+                                                               pluginName
+                                                       )
+                                               )
+                                               .text( __( 'Install Now' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 wp.a11y.speak( __( 'Update canceled.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 } );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1963,11 +2137,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param {Event} event Event interface.
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                $bulkActionForm.on( 'click', '[data-plugin] a.delete', function( event ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        var $pluginRow = $( event.target ).parents( 'tr' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 var $pluginRow = $( event.target ).parents( 'tr' ),
+                               confirmMessage = sprintf(
+                                       /* translators: %s: Plugin name. */
+                                       __( 'Are you sure you want to delete %s and its data?' ),
+                                       $pluginRow.find( '.plugin-title strong' ).text()
+                               );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        event.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( ! window.confirm( wp.updates.l10n.aysDeleteUninstall.replace( '%s', $pluginRow.find( '.plugin-title strong' ).text() ) ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! window.confirm( confirmMessage ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2014,11 +2193,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * @param {Event} event Event interface.
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                $document.on( 'click', '.themes-php.network-admin a.delete', function( event ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        var $themeRow = $( event.target ).parents( 'tr' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 var $themeRow = $( event.target ).parents( 'tr' ),
+                               confirmMessage = sprintf(
+                                       /* translators: %s: Theme name. */
+                                       __( 'Are you sure you want to delete %s?' ),
+                                       $themeRow.find( '.theme-title strong' ).text()
+                               );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        event.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( ! window.confirm( wp.updates.l10n.aysDelete.replace( '%s', $themeRow.find( '.theme-title strong' ).text() ) ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! window.confirm( confirmMessage ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2069,7 +2253,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                return wp.updates.addAdminNotice( {
</span><span class="cx" style="display: block; padding: 0 10px">                                        id:        'no-items-selected',
</span><span class="cx" style="display: block; padding: 0 10px">                                        className: 'notice-error is-dismissible',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        message:   wp.updates.l10n.noItemsSelected
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 message:   __( 'Please select at least one item to perform this action on.' )
</ins><span class="cx" style="display: block; padding: 0 10px">                                 } );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2080,7 +2264,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'delete-selected':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        if ( ! window.confirm( 'plugin' === type ? wp.updates.l10n.aysBulkDelete : wp.updates.l10n.aysBulkDeleteThemes ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 var confirmMessage = 'plugin' === type ?
+                                               __( 'Are you sure you want to delete the selected plugins and their data?' ) :
+                                               __( 'Caution: These themes may be active on other sites in the network. Are you sure you want to proceed?' );
+
+                                       if ( ! window.confirm( confirmMessage ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 event.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">                                                return;
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2217,7 +2405,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        .append( $( '<a />', {
</span><span class="cx" style="display: block; padding: 0 10px">                                                'class': 'current',
</span><span class="cx" style="display: block; padding: 0 10px">                                                'href': searchLocation,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'text': wp.updates.l10n.searchResultsLabel
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'text': __( 'Search Results' )
</ins><span class="cx" style="display: block; padding: 0 10px">                                         } ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                $( '.wp-filter .filter-links .current' )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2240,9 +2428,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                delete wp.updates.searchRequest;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( 0 === response.count ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        wp.a11y.speak( wp.updates.l10n.noPluginsFound );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 wp.a11y.speak( __( 'You do not appear to have any plugins available at this time.' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        wp.a11y.speak( wp.updates.l10n.pluginsFound.replace( '%d', response.count ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 wp.a11y.speak(
+                                               sprintf(
+                                                       /* translators: %s: Number of plugins. */
+                                                       __( 'Number of plugins found: %d' ),
+                                                       response.count
+                                               )
+                                       );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        } );
</span><span class="cx" style="display: block; padding: 0 10px">                }, 1000 ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2298,7 +2492,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        wp.updates.searchRequest = wp.ajax.post( 'search-plugins', data ).done( function( response ) {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                // Can we just ditch this whole subtitle business?
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                var $subTitle    = $( '<span />' ).addClass( 'subtitle' ).html( wp.updates.l10n.searchResults.replace( '%s', _.escape( data.s ) ) ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         var $subTitle    = $( '<span />' ).addClass( 'subtitle' ).html(
+                                       sprintf(
+                                               /* translators: %s: Search query. */
+                                               __( 'Search results for &#8220;%s&#8221;' ),
+                                               _.escape( data.s )
+                                       ) ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $oldSubTitle = $( '.wrap .subtitle' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! data.s.length ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2315,9 +2514,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                delete wp.updates.searchRequest;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( 0 === response.count ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        wp.a11y.speak( wp.updates.l10n.noPluginsFound );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 wp.a11y.speak( __( 'No plugins found. Try a different search.'  ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        wp.a11y.speak( wp.updates.l10n.pluginsFound.replace( '%d', response.count ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 wp.a11y.speak(
+                                               sprintf(
+                                                       /* translators: %s: Number of plugins. */
+                                                       __( 'Number of plugins found: %d' ),
+                                                       response.count
+                                               )
+                                       );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        } );
</span><span class="cx" style="display: block; padding: 0 10px">                }, 500 ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2518,9 +2723,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Show loading status.
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( 'enable' === action ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $label.text( wp.updates.l10n.autoUpdatesEnabling );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $label.text( __( 'Enabling...' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                         } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $label.text( wp.updates.l10n.autoUpdatesDisabling );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $label.text( __( 'Disabling...' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $anchor.find( '.dashicons-update' ).removeClass( 'hidden' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2544,7 +2749,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                if ( response.data && response.data.error ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        errorMessage = response.data.error;
</span><span class="cx" style="display: block; padding: 0 10px">                                                } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        errorMessage = wp.updates.l10n.autoUpdatesError;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 errorMessage = __( 'The request could not be completed.' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                $parent.find( '.notice.error' ).removeClass( 'hidden' ).find( 'p' ).text( errorMessage );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2585,9 +2790,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        href: href
</span><span class="cx" style="display: block; padding: 0 10px">                                                } );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $label.text( wp.updates.l10n.autoUpdatesDisable );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $label.text( __( 'Disable auto-updates' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 $parent.find( '.auto-update-time' ).removeClass( 'hidden' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                wp.a11y.speak( wp.updates.l10n.autoUpdatesEnabled, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         wp.a11y.speak( __( 'Enable auto-updates' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                                href = href.replace( 'action=disable-auto-update', 'action=enable-auto-update' );
</span><span class="cx" style="display: block; padding: 0 10px">                                                $anchor.attr( {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2595,16 +2800,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        href: href
</span><span class="cx" style="display: block; padding: 0 10px">                                                } );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $label.text( wp.updates.l10n.autoUpdatesEnable );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $label.text( __( 'Enable auto-updates' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 $parent.find( '.auto-update-time' ).addClass( 'hidden' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                wp.a11y.speak( wp.updates.l10n.autoUpdatesDisabled, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         wp.a11y.speak( __( 'Auto-updates disabled' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        $document.trigger( 'wp-auto-update-setting-changed', { state: action, type: type, asset: asset } );
</span><span class="cx" style="display: block; padding: 0 10px">                                } )
</span><span class="cx" style="display: block; padding: 0 10px">                                .fail( function() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $parent.find( '.notice.error' ).removeClass( 'hidden' ).find( 'p' ).text( wp.updates.l10n.autoUpdatesError );
-                                       wp.a11y.speak( wp.updates.l10n.autoUpdatesError, 'polite' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $parent.find( '.notice.error' )
+                                               .removeClass( 'hidden' )
+                                               .find( 'p' )
+                                               .text( __( 'The request could not be completed.' ) );
+
+                                       wp.a11y.speak( __( 'The request could not be completed.' ), 'polite' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 } )
</span><span class="cx" style="display: block; padding: 0 10px">                                .always( function() {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $anchor.removeAttr( 'data-doing-ajax' ).find( '.dashicons-update' ).addClass( 'hidden' );
</span></span></pre></div>
<a id="trunksrcwpincludesscriptloaderphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/script-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/script-loader.php   2020-06-01 20:51:10 UTC (rev 47883)
+++ trunk/src/wp-includes/script-loader.php     2020-06-01 21:39:30 UTC (rev 47884)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1434,100 +1434,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $scripts->add( 'updates', "/wp-admin/js/updates$suffix.js", array( 'jquery', 'wp-util', 'wp-a11y', 'wp-sanitize' ), false, 1 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $scripts->set_translations( 'updates' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 did_action( 'init' ) && $scripts->localize(
</span><span class="cx" style="display: block; padding: 0 10px">                        'updates',
</span><span class="cx" style="display: block; padding: 0 10px">                        '_wpUpdatesSettings',
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'ajax_nonce' => wp_create_nonce( 'updates' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'l10n'       => array(
-                                       /* translators: %s: Search query. */
-                                       'searchResults'            => __( 'Search results for &#8220;%s&#8221;' ),
-                                       'searchResultsLabel'       => __( 'Search Results' ),
-                                       'noPlugins'                => __( 'You do not appear to have any plugins available at this time.' ),
-                                       'noItemsSelected'          => __( 'Please select at least one item to perform this action on.' ),
-                                       'updating'                 => __( 'Updating...' ), // No ellipsis.
-                                       'pluginUpdated'            => _x( 'Updated!', 'plugin' ),
-                                       'themeUpdated'             => _x( 'Updated!', 'theme' ),
-                                       'update'                   => __( 'Update' ),
-                                       'updateNow'                => __( 'Update Now' ),
-                                       /* translators: %s: Plugin name and version. */
-                                       'pluginUpdateNowLabel'     => _x( 'Update %s now', 'plugin' ),
-                                       'updateFailedShort'        => __( 'Update Failed!' ),
-                                       /* translators: %s: Error string for a failed update. */
-                                       'updateFailed'             => __( 'Update Failed: %s' ),
-                                       /* translators: %s: Plugin name and version. */
-                                       'pluginUpdatingLabel'      => _x( 'Updating %s...', 'plugin' ), // No ellipsis.
-                                       /* translators: %s: Plugin name and version. */
-                                       'pluginUpdatedLabel'       => _x( '%s updated!', 'plugin' ),
-                                       /* translators: %s: Plugin name and version. */
-                                       'pluginUpdateFailedLabel'  => _x( '%s update failed', 'plugin' ),
-                                       /* translators: Accessibility text. */
-                                       'updatingMsg'              => __( 'Updating... please wait.' ), // No ellipsis.
-                                       /* translators: Accessibility text. */
-                                       'updatedMsg'               => __( 'Update completed successfully.' ),
-                                       /* translators: Accessibility text. */
-                                       'updateCancel'             => __( 'Update canceled.' ),
-                                       'beforeunload'             => __( 'Updates may not complete if you navigate away from this page.' ),
-                                       'installNow'               => __( 'Install Now' ),
-                                       /* translators: %s: Plugin name. */
-                                       'pluginInstallNowLabel'    => _x( 'Install %s now', 'plugin' ),
-                                       'installing'               => __( 'Installing...' ),
-                                       'pluginInstalled'          => _x( 'Installed!', 'plugin' ),
-                                       'themeInstalled'           => _x( 'Installed!', 'theme' ),
-                                       'installFailedShort'       => __( 'Installation Failed!' ),
-                                       /* translators: %s: Error string for a failed installation. */
-                                       'installFailed'            => __( 'Installation failed: %s' ),
-                                       /* translators: %s: Plugin name and version. */
-                                       'pluginInstallingLabel'    => _x( 'Installing %s...', 'plugin' ), // No ellipsis.
-                                       /* translators: %s: Theme name and version. */
-                                       'themeInstallingLabel'     => _x( 'Installing %s...', 'theme' ), // No ellipsis.
-                                       /* translators: %s: Plugin name and version. */
-                                       'pluginInstalledLabel'     => _x( '%s installed!', 'plugin' ),
-                                       /* translators: %s: Theme name and version. */
-                                       'themeInstalledLabel'      => _x( '%s installed!', 'theme' ),
-                                       /* translators: %s: Plugin name and version. */
-                                       'pluginInstallFailedLabel' => _x( '%s installation failed', 'plugin' ),
-                                       /* translators: %s: Theme name and version. */
-                                       'themeInstallFailedLabel'  => _x( '%s installation failed', 'theme' ),
-                                       'installingMsg'            => __( 'Installing... please wait.' ),
-                                       'installedMsg'             => __( 'Installation completed successfully.' ),
-                                       /* translators: %s: Activation URL. */
-                                       'importerInstalledMsg'     => __( 'Importer installed successfully. <a href="%s">Run importer</a>' ),
-                                       /* translators: %s: Theme name. */
-                                       'aysDelete'                => __( 'Are you sure you want to delete %s?' ),
-                                       /* translators: %s: Plugin name. */
-                                       'aysDeleteUninstall'       => __( 'Are you sure you want to delete %s and its data?' ),
-                                       'aysBulkDelete'            => __( 'Are you sure you want to delete the selected plugins and their data?' ),
-                                       'aysBulkDeleteThemes'      => __( 'Caution: These themes may be active on other sites in the network. Are you sure you want to proceed?' ),
-                                       'deleting'                 => __( 'Deleting...' ),
-                                       /* translators: %s: Error string for a failed deletion. */
-                                       'deleteFailed'             => __( 'Deletion failed: %s' ),
-                                       'pluginDeleted'            => _x( 'Deleted!', 'plugin' ),
-                                       'themeDeleted'             => _x( 'Deleted!', 'theme' ),
-                                       'livePreview'              => __( 'Live Preview' ),
-                                       'activatePlugin'           => is_network_admin() ? __( 'Network Activate' ) : __( 'Activate' ),
-                                       'activateTheme'            => is_network_admin() ? __( 'Network Enable' ) : __( 'Activate' ),
-                                       /* translators: %s: Plugin name. */
-                                       'activatePluginLabel'      => is_network_admin() ? _x( 'Network Activate %s', 'plugin' ) : _x( 'Activate %s', 'plugin' ),
-                                       /* translators: %s: Theme name. */
-                                       'activateThemeLabel'       => is_network_admin() ? _x( 'Network Activate %s', 'theme' ) : _x( 'Activate %s', 'theme' ),
-                                       'activateImporter'         => __( 'Run Importer' ),
-                                       /* translators: %s: Importer name. */
-                                       'activateImporterLabel'    => __( 'Run %s' ),
-                                       'unknownError'             => __( 'Something went wrong.' ),
-                                       'connectionError'          => __( 'Connection lost or the server is busy. Please try again later.' ),
-                                       'nonceError'               => __( 'An error has occurred. Please reload the page and try again.' ),
-                                       /* translators: %s: Number of plugins. */
-                                       'pluginsFound'             => __( 'Number of plugins found: %d' ),
-                                       'noPluginsFound'           => __( 'No plugins found. Try a different search.' ),
-                                       'autoUpdatesEnable'        => __( 'Enable auto-updates' ),
-                                       'autoUpdatesEnabling'      => __( 'Enabling...' ),
-                                       'autoUpdatesEnabled'       => __( 'Auto-updates enabled' ),
-                                       'autoUpdatesDisable'       => __( 'Disable auto-updates' ),
-                                       'autoUpdatesDisabling'     => __( 'Disabling...' ),
-                                       'autoUpdatesDisabled'      => __( 'Auto-updates disabled' ),
-                                       'autoUpdatesError'         => __( 'The request could not be completed.' ),
-                               ),
</del><span class="cx" style="display: block; padding: 0 10px">                         )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre>
</div>
</div>

</body>
</html>