<!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>[54469] trunk/src/wp-admin/includes/update.php: I18N: Use `wp.i18n._n()` for plural forms in `wp_print_admin_notice_templates()`.</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/54469">54469</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/54469","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>audrasjb</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2022-10-11 08:46:00 +0000 (Tue, 11 Oct 2022)</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._n()` for plural forms in `wp_print_admin_notice_templates()`.

This changeset adds better support for plural forms in update admin notices generated on the Themes and Plugins screens. This fixes issues when translating into languages that have more than one plural form, or more complicated rules for singular form usage.

Props ideag, SergeyBiryukov, daledupreez, audrasjb.
Fixes <a href="https://core.trac.wordpress.org/ticket/37287">#37287</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadminincludesupdatephp">trunk/src/wp-admin/includes/update.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadminincludesupdatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/update.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/update.php    2022-10-11 01:44:09 UTC (rev 54468)
+++ trunk/src/wp-admin/includes/update.php      2022-10-11 08:46:00 UTC (rev 54469)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -885,45 +885,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                <div id="{{ data.id }}" class="{{ data.className }} notice <# if ( data.errors ) { #>notice-error<# } else { #>notice-success<# } #>">
</span><span class="cx" style="display: block; padding: 0 10px">                        <p>
</span><span class="cx" style="display: block; padding: 0 10px">                                <# if ( data.successes ) { #>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <# if ( 1 === data.successes ) { #>
-                                               <# if ( 'plugin' === data.type ) { #>
-                                                       <?php
-                                                       /* translators: %s: Number of plugins. */
-                                                       printf( __( '%s plugin successfully updated.' ), '{{ data.successes }}' );
-                                                       ?>
-                                               <# } else { #>
-                                                       <?php
-                                                       /* translators: %s: Number of themes. */
-                                                       printf( __( '%s theme successfully updated.' ), '{{ data.successes }}' );
-                                                       ?>
-                                               <# } #>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <# if ( 'plugin' === data.type ) { #>
+                                               {{ wp.i18n.sprintf( wp.i18n._n( '%s plugin successfully updated.', '%s plugins successfully updated.', data.successes ), data.successes ) }}
</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">-                                                <# if ( 'plugin' === data.type ) { #>
-                                                       <?php
-                                                       /* translators: %s: Number of plugins. */
-                                                       printf( __( '%s plugins successfully updated.' ), '{{ data.successes }}' );
-                                                       ?>
-                                               <# } else { #>
-                                                       <?php
-                                                       /* translators: %s: Number of themes. */
-                                                       printf( __( '%s themes successfully updated.' ), '{{ data.successes }}' );
-                                                       ?>
-                                               <# } #>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         {{ wp.i18n.sprintf( wp.i18n._n( '%s theme successfully updated.', '%s themes successfully updated.', data.successes ), data.successes ) }}
</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 ( data.errors ) { #>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <button class="button-link bulk-action-errors-collapsed" aria-expanded="false">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                <# if ( 1 === data.errors ) { #>
-                                                       <?php
-                                                       /* translators: %s: Number of failed updates. */
-                                                       printf( __( '%s update failed.' ), '{{ data.errors }}' );
-                                                       ?>
-                                               <# } else { #>
-                                                       <?php
-                                                       /* translators: %s: Number of failed updates. */
-                                                       printf( __( '%s updates failed.' ), '{{ data.errors }}' );
-                                                       ?>
-                                               <# } #>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         {{ wp.i18n.sprintf( wp.i18n._n( '%s update failed.', '%s updates failed.' , data.errors ), data.errors ) }}
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 <span class="screen-reader-text"><?php _e( 'Show more details' ); ?></span>
</span><span class="cx" style="display: block; padding: 0 10px">                                                <span class="toggle-indicator" aria-hidden="true"></span>
</span><span class="cx" style="display: block; padding: 0 10px">                                        </button>
</span></span></pre>
</div>
</div>

</body>
</html>