diff --git a/core/includes/common.inc b/core/includes/common.inc index 11f8a9d78db5372c5d090873c7809a0e65e8ef76..6d1b013ed18e78dcb354567d2e2d2cc4644c59ed 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -393,12 +393,12 @@ function format_xml_elements($array) { * * For example: * @code - * $output = format_plural($node->comment_count, '1 comment', '@count comments'); + * $output = \Drupal::translation()->formatPlural($node->comment_count, '1 comment', '@count comments'); * @endcode * * Example with additional replacements: * @code - * $output = format_plural($update_count, + * $output = \Drupal::translation()->formatPlural($update_count, * 'Changed the content type of 1 post from %old-type to %new-type.', * 'Changed the content type of @count posts from %old-type to %new-type.', * array('%old-type' => $info->old_type, '%new-type' => $info->new_type)); @@ -451,7 +451,7 @@ function format_plural($count, $singular, $plural, array $args = array(), array */ function format_size($size, $langcode = NULL) { if ($size < Bytes::KILOBYTE) { - return format_plural($size, '1 byte', '@count bytes', array(), array('langcode' => $langcode)); + return \Drupal::translation()->formatPlural($size, '1 byte', '@count bytes', array(), array('langcode' => $langcode)); } else { $size = $size / Bytes::KILOBYTE; // Convert bytes to kilobytes. diff --git a/core/includes/form.inc b/core/includes/form.inc index 69c970f39f04a9e4630d84cc5c569491152a5da2..659ef5f860a035dce7079295f44f2189b58a5783 100644 --- a/core/includes/form.inc +++ b/core/includes/form.inc @@ -617,7 +617,7 @@ function template_preprocess_form_element_label(&$variables) { * // The 'success' parameter means no fatal PHP errors were detected. All * // other error management should be handled using 'results'. * if ($success) { - * $message = format_plural(count($results), 'One post processed.', '@count posts processed.'); + * $message = \Drupal::translation()->formatPlural(count($results), 'One post processed.', '@count posts processed.'); * } * else { * $message = t('Finished with an error.'); diff --git a/core/lib/Drupal/Core/Extension/InfoParser.php b/core/lib/Drupal/Core/Extension/InfoParser.php index de1b24a0d498719d159ec4c32f027ced72381923..38ac624f609bcf63abd29f86e18d85ae797af145 100644 --- a/core/lib/Drupal/Core/Extension/InfoParser.php +++ b/core/lib/Drupal/Core/Extension/InfoParser.php @@ -41,7 +41,7 @@ public function parse($filename) { } $missing_keys = array_diff($this->getRequiredKeys(), array_keys(static::$parsedInfos[$filename])); if (!empty($missing_keys)) { - $message = format_plural(count($missing_keys), 'Missing required key (!missing_keys) in !file.', 'Missing required keys (!missing_keys) in !file.', array('!missing_keys' => implode(', ', $missing_keys), '!file' => $filename)); + $message = String::format('Missing required keys (!missing_keys) in !file.', array('!missing_keys' => implode(', ', $missing_keys), '!file' => $filename)); throw new InfoParserException($message); } if (isset(static::$parsedInfos[$filename]['version']) && static::$parsedInfos[$filename]['version'] === 'VERSION') { diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php index d261dedc57cd50c7f71a89debeac67f8da8c8713..c30a9d239320f3d8ef1f1a22cb4c3d9d226d3b9e 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/NumericFormatterBase.php @@ -77,8 +77,8 @@ public function viewElements(FieldItemListInterface $items) { if ($this->getSetting('prefix_suffix')) { $prefixes = isset($settings['prefix']) ? array_map(array($this, 'fieldFilterXss'), explode('|', $settings['prefix'])) : array(''); $suffixes = isset($settings['suffix']) ? array_map(array($this, 'fieldFilterXss'), explode('|', $settings['suffix'])) : array(''); - $prefix = (count($prefixes) > 1) ? format_plural($item->value, $prefixes[0], $prefixes[1]) : $prefixes[0]; - $suffix = (count($suffixes) > 1) ? format_plural($item->value, $suffixes[0], $suffixes[1]) : $suffixes[0]; + $prefix = (count($prefixes) > 1) ? $this->formatPlural($item->value, $prefixes[0], $prefixes[1]) : $prefixes[0]; + $suffix = (count($suffixes) > 1) ? $this->formatPlural($item->value, $suffixes[0], $suffixes[1]) : $suffixes[0]; $output = $prefix . $output . $suffix; } // Output the raw value in a content attribute if the text of the HTML diff --git a/core/lib/Drupal/Core/StringTranslation/StringTranslationTrait.php b/core/lib/Drupal/Core/StringTranslation/StringTranslationTrait.php index efb60303f9910a1341db1304e7054639be962be3..85a6e3f4c46d7395b37d71f54dfe5d8af7122749 100644 --- a/core/lib/Drupal/Core/StringTranslation/StringTranslationTrait.php +++ b/core/lib/Drupal/Core/StringTranslation/StringTranslationTrait.php @@ -12,8 +12,8 @@ * * Using this trait will add t() and formatPlural() methods to the class. These * must be used for every translatable string, similar to how procedural code - * must use the global functions t() and format_plural(). This allows string - * extractor tools to find translatable strings. + * must use the global functions t() and \Drupal::translation()->formatPlural(). + * This allows string extractor tools to find translatable strings. * * If the class is capable of injecting services from the container, it should * inject the 'string_translation' service and assign it to diff --git a/core/lib/Drupal/Core/Template/TwigNodeTrans.php b/core/lib/Drupal/Core/Template/TwigNodeTrans.php index ea518467ad91d60fa8e0f0352a057952c9d56c97..c4fd4efce02f3d83b0ccca3c734e1cec9d4cfe2f 100644 --- a/core/lib/Drupal/Core/Template/TwigNodeTrans.php +++ b/core/lib/Drupal/Core/Template/TwigNodeTrans.php @@ -51,7 +51,7 @@ public function compile(\Twig_Compiler $compiler) { } // Start writing with the function to be called. - $compiler->write('echo ' . (empty($plural) ? 't' : 'format_plural') . '('); + $compiler->write('echo ' . (empty($plural) ? 't' : '\Drupal::translation()->formatPlural') . '('); // Move the count to the beginning of the parameters list. if (!empty($plural)) { diff --git a/core/lib/Drupal/Core/Validation/DrupalTranslator.php b/core/lib/Drupal/Core/Validation/DrupalTranslator.php index 84847a59537df6bcef2369179b665a2b801b508b..b14c7d24ab58fab720f920aa828d1a8de5b98b16 100644 --- a/core/lib/Drupal/Core/Validation/DrupalTranslator.php +++ b/core/lib/Drupal/Core/Validation/DrupalTranslator.php @@ -41,7 +41,7 @@ public function transChoice($id, $number, array $parameters = array(), $domain = if (!isset($ids[1])) { throw new \InvalidArgumentException(sprintf('The message "%s" cannot be pluralized, because it is missing a plural (e.g. "There is one apple|There are @count apples").', $id)); } - return format_plural($number, $ids[0], $ids[1], $this->processParameters($parameters), $this->getOptions($domain, $locale)); + return \Drupal::translation()->formatPlural($number, $ids[0], $ids[1], $this->processParameters($parameters), $this->getOptions($domain, $locale)); } /** diff --git a/core/misc/drupal.js b/core/misc/drupal.js index acafce3f2a7176a4ec01ff1328e7ca1344b3cb87..4244ed61a6586e17ea768e0fd7314ae350f4fc3e 100644 --- a/core/misc/drupal.js +++ b/core/misc/drupal.js @@ -336,8 +336,9 @@ if (window.jQuery) { * Drupal.t() is called by this function, make sure not to pass * already-localized strings to it. * - * See the documentation of the server-side format_plural() function for - * further details. + * See the documentation of the server-side + * \Drupal\Core\StringTranslation\TranslationInterface::formatPlural() + * function for more details. * * @param {Number} count * The item count to display. diff --git a/core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php b/core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php index f6c1412d2c34e7237851285e58eff6ffc4c5298a..c31b4ff46eba1dc9807d022277bcab256a5bc3e9 100644 --- a/core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php +++ b/core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php @@ -150,7 +150,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta $lengths = array(0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000); $options = array_map(function($length) { - return ($length == 0) ? t('Unlimited') : format_plural($length, '1 character', '@count characters'); + return ($length == 0) ? t('Unlimited') : $this->formatPlural($length, '1 character', '@count characters'); }, array_combine($lengths, $lengths)); $form['processors'][$info['id']]['aggregator_teaser_length'] = array( diff --git a/core/modules/block_content/src/Form/BlockContentDeleteForm.php b/core/modules/block_content/src/Form/BlockContentDeleteForm.php index 1d7724da0ab8ddea0e4352eaf2aa51dbdafba3a8..26e55f4cddcd8297d34c114126005f7a5bdf1708 100644 --- a/core/modules/block_content/src/Form/BlockContentDeleteForm.php +++ b/core/modules/block_content/src/Form/BlockContentDeleteForm.php @@ -44,7 +44,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { $instances = $this->entity->getInstances(); $form['message'] = array( - '#markup' => format_plural(count($instances), 'This will also remove 1 placed block instance.', 'This will also remove @count placed block instances.'), + '#markup' => $this->formatPlural(count($instances), 'This will also remove 1 placed block instance.', 'This will also remove @count placed block instances.'), '#access' => !empty($instances), ); diff --git a/core/modules/block_content/src/Form/BlockContentTypeDeleteForm.php b/core/modules/block_content/src/Form/BlockContentTypeDeleteForm.php index 65fe35255617f4e63a5f5cbaba5c6ea9a271f61b..4c7d909464c15dad7549224a595c8b000f5b70c8 100644 --- a/core/modules/block_content/src/Form/BlockContentTypeDeleteForm.php +++ b/core/modules/block_content/src/Form/BlockContentTypeDeleteForm.php @@ -71,7 +71,7 @@ public function getConfirmText() { public function buildForm(array $form, FormStateInterface $form_state) { $blocks = $this->queryFactory->get('block_content')->condition('type', $this->entity->id())->execute(); if (!empty($blocks)) { - $caption = '

' . format_plural(count($blocks), '%label is used by 1 custom block on your site. You can not remove this block type until you have removed all of the %label blocks.', '%label is used by @count custom blocks on your site. You may not remove %label until you have removed all of the %label custom blocks.', array('%label' => $this->entity->label())) . '

'; + $caption = '

' . $this->formatPlural(count($blocks), '%label is used by 1 custom block on your site. You can not remove this block type until you have removed all of the %label blocks.', '%label is used by @count custom blocks on your site. You may not remove %label until you have removed all of the %label custom blocks.', array('%label' => $this->entity->label())) . '

'; $form['description'] = array('#markup' => $caption); return $form; } diff --git a/core/modules/block_content/src/Tests/BlockContentCreationTest.php b/core/modules/block_content/src/Tests/BlockContentCreationTest.php index 7797571c8774353ba98ed12487ba296c6acac322..400ad50a411398ef98d56ee9ac62c30c27346547 100644 --- a/core/modules/block_content/src/Tests/BlockContentCreationTest.php +++ b/core/modules/block_content/src/Tests/BlockContentCreationTest.php @@ -184,7 +184,7 @@ public function testBlockDelete() { // Delete the block. $this->drupalGet('block/1/delete'); - $this->assertText(format_plural(1, 'This will also remove 1 placed block instance.', 'This will also remove @count placed block instance.')); + $this->assertText(\Drupal::translation()->formatPlural(1, 'This will also remove 1 placed block instance.', 'This will also remove @count placed block instance.')); $this->drupalPostForm(NULL, array(), 'Delete'); $this->assertRaw(t('Custom block %name has been deleted.', array('%name' => $edit['info[0][value]']))); diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module index 79f0d3860a87c128fac23765dd54e73eff495be3..ab7751cd7bb8bb85c95cb69fc40a32bfd429d4e3 100644 --- a/core/modules/comment/comment.module +++ b/core/modules/comment/comment.module @@ -530,7 +530,7 @@ function comment_node_search_result(EntityInterface $node) { // Do not make a string if there are no comment fields, or no comments exist // or all comment fields are hidden. if ($comments > 0 || $open) { - return array('comment' => format_plural($comments, '1 comment', '@count comments')); + return array('comment' => \Drupal::translation()->formatPlural($comments, '1 comment', '@count comments')); } } diff --git a/core/modules/comment/src/Form/ConfirmDeleteMultiple.php b/core/modules/comment/src/Form/ConfirmDeleteMultiple.php index f6c8a6ed6716c15737b40021773e7def8004e169..d3605438bcac22b64998b7cac6e8d89fbecbaa92 100644 --- a/core/modules/comment/src/Form/ConfirmDeleteMultiple.php +++ b/core/modules/comment/src/Form/ConfirmDeleteMultiple.php @@ -122,7 +122,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { $this->commentStorage->delete($this->comments); $count = count($form_state->getValue('comments')); $this->logger('content')->notice('Deleted @count comments.', array('@count' => $count)); - drupal_set_message(format_plural($count, 'Deleted 1 comment.', 'Deleted @count comments.')); + drupal_set_message($this->formatPlural($count, 'Deleted 1 comment.', 'Deleted @count comments.')); } $form_state->setRedirectUrl($this->getCancelUrl()); } diff --git a/core/modules/comment/src/Tests/CommentNonNodeTest.php b/core/modules/comment/src/Tests/CommentNonNodeTest.php index 704a298f1385ea0e56eb6ef62413a8a1324e753a..ec9b6303d91137a5d1d9a0f7474162b1ee269a1b 100644 --- a/core/modules/comment/src/Tests/CommentNonNodeTest.php +++ b/core/modules/comment/src/Tests/CommentNonNodeTest.php @@ -208,7 +208,7 @@ function performCommentOperation($comment, $operation, $approval = FALSE) { if ($operation == 'delete') { $this->drupalPostForm(NULL, array(), t('Delete comments')); - $this->assertRaw(format_plural(1, 'Deleted 1 comment.', 'Deleted @count comments.'), format_string('Operation "@operation" was performed on comment.', array('@operation' => $operation))); + $this->assertRaw(\Drupal::translation()->formatPlural(1, 'Deleted 1 comment.', 'Deleted @count comments.'), format_string('Operation "@operation" was performed on comment.', array('@operation' => $operation))); } else { $this->assertText(t('The update has been performed.'), format_string('Operation "@operation" was performed on comment.', array('@operation' => $operation))); diff --git a/core/modules/comment/src/Tests/CommentTestBase.php b/core/modules/comment/src/Tests/CommentTestBase.php index 46522e6c2aca718938cb75fba19dc2d7aa90b19f..5acb24a12e9771f90fb52f531d7fa0863ec16499 100644 --- a/core/modules/comment/src/Tests/CommentTestBase.php +++ b/core/modules/comment/src/Tests/CommentTestBase.php @@ -345,7 +345,7 @@ function performCommentOperation(CommentInterface $comment, $operation, $approva if ($operation == 'delete') { $this->drupalPostForm(NULL, array(), t('Delete comments')); - $this->assertRaw(format_plural(1, 'Deleted 1 comment.', 'Deleted @count comments.'), format_string('Operation "@operation" was performed on comment.', array('@operation' => $operation))); + $this->assertRaw(\Drupal::translation()->formatPlural(1, 'Deleted 1 comment.', 'Deleted @count comments.'), format_string('Operation "@operation" was performed on comment.', array('@operation' => $operation))); } else { $this->assertText(t('The update has been performed.'), format_string('Operation "@operation" was performed on comment.', array('@operation' => $operation))); diff --git a/core/modules/config/src/Form/ConfigSync.php b/core/modules/config/src/Form/ConfigSync.php old mode 100755 new mode 100644 index 58451e7658719734c5550215247442b466ce1a98..2742e93494d6af3162db60f12cd661f64cc6fe50 --- a/core/modules/config/src/Form/ConfigSync.php +++ b/core/modules/config/src/Form/ConfigSync.php @@ -239,19 +239,19 @@ public function buildForm(array $form, FormStateInterface $form_state) { ); switch ($config_change_type) { case 'create': - $form[$collection][$config_change_type]['heading']['#value'] = format_plural(count($config_names), '@count new', '@count new'); + $form[$collection][$config_change_type]['heading']['#value'] = $this->formatPlural(count($config_names), '@count new', '@count new'); break; case 'update': - $form[$collection][$config_change_type]['heading']['#value'] = format_plural(count($config_names), '@count changed', '@count changed'); + $form[$collection][$config_change_type]['heading']['#value'] = $this->formatPlural(count($config_names), '@count changed', '@count changed'); break; case 'delete': - $form[$collection][$config_change_type]['heading']['#value'] = format_plural(count($config_names), '@count removed', '@count removed'); + $form[$collection][$config_change_type]['heading']['#value'] = $this->formatPlural(count($config_names), '@count removed', '@count removed'); break; case 'rename': - $form[$collection][$config_change_type]['heading']['#value'] = format_plural(count($config_names), '@count renamed', '@count renamed'); + $form[$collection][$config_change_type]['heading']['#value'] = $this->formatPlural(count($config_names), '@count renamed', '@count renamed'); break; } $form[$collection][$config_change_type]['list'] = array( diff --git a/core/modules/file/file.field.inc b/core/modules/file/file.field.inc index 3e88433183baa7990746dee96f095ba12ee658cc..57c402e00abbfd3dee0bc87ed8f4418f87c11958 100644 --- a/core/modules/file/file.field.inc +++ b/core/modules/file/file.field.inc @@ -175,7 +175,7 @@ function template_preprocess_file_upload_help(&$variables) { $descriptions[] = t('Unlimited number of files can be uploaded to this field.'); } else { - $descriptions[] = format_plural($cardinality, 'One file only.', 'Maximum @count files.'); + $descriptions[] = \Drupal::translation()->formatPlural($cardinality, 'One file only.', 'Maximum @count files.'); } } if (isset($upload_validators['file_validate_size'])) { diff --git a/core/modules/file/src/Tests/FileManagedTestBase.php b/core/modules/file/src/Tests/FileManagedTestBase.php index 3147f73bc85dac417305a33c445acb1d4a6a4503..031a1a766078f738e0f3811b00b170680eb6944c 100644 --- a/core/modules/file/src/Tests/FileManagedTestBase.php +++ b/core/modules/file/src/Tests/FileManagedTestBase.php @@ -80,7 +80,7 @@ function assertFileHookCalled($hook, $expected_count = 1, $message = NULL) { $message = format_string('hook_file_@name was called correctly.', array('@name' => $hook)); } elseif ($expected_count == 0) { - $message = format_plural($actual_count, 'hook_file_@name was not expected to be called but was actually called once.', 'hook_file_@name was not expected to be called but was actually called @count times.', array('@name' => $hook, '@count' => $actual_count)); + $message = \Drupal::translation()->formatPlural($actual_count, 'hook_file_@name was not expected to be called but was actually called once.', 'hook_file_@name was not expected to be called but was actually called @count times.', array('@name' => $hook, '@count' => $actual_count)); } else { $message = format_string('hook_file_@name was expected to be called %expected times but was called %actual times.', array('@name' => $hook, '%expected' => $expected_count, '%actual' => $actual_count)); diff --git a/core/modules/file/src/Tests/FileManagedUnitTestBase.php b/core/modules/file/src/Tests/FileManagedUnitTestBase.php index cd07552f04a961000fcae11e7275934b0cf6e2be..00448c515f6d734aa98fdbb556498dd6017a9201 100644 --- a/core/modules/file/src/Tests/FileManagedUnitTestBase.php +++ b/core/modules/file/src/Tests/FileManagedUnitTestBase.php @@ -92,7 +92,7 @@ function assertFileHookCalled($hook, $expected_count = 1, $message = NULL) { $message = format_string('hook_file_@name was called correctly.', array('@name' => $hook)); } elseif ($expected_count == 0) { - $message = format_plural($actual_count, 'hook_file_@name was not expected to be called but was actually called once.', 'hook_file_@name was not expected to be called but was actually called @count times.', array('@name' => $hook, '@count' => $actual_count)); + $message = \Drupal::translation()->formatPlural($actual_count, 'hook_file_@name was not expected to be called but was actually called once.', 'hook_file_@name was not expected to be called but was actually called @count times.', array('@name' => $hook, '@count' => $actual_count)); } else { $message = format_string('hook_file_@name was expected to be called %expected times but was called %actual times.', array('@name' => $hook, '%expected' => $expected_count, '%actual' => $actual_count)); diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module index c5e6d41b1a974d9af4a5d983ae3cd7763cfbd35f..19db0724b6d099e4260f66d8b6533dc783b5eeec 100644 --- a/core/modules/forum/forum.module +++ b/core/modules/forum/forum.module @@ -501,7 +501,7 @@ function template_preprocess_forums(&$variables) { $page_number = \Drupal::entityManager()->getStorage('comment') ->getNewCommentPageNumber($topic->comment_count, $topic->new_replies, $topic, 'comment_forum'); $query = $page_number ? array('page' => $page_number) : NULL; - $variables['topics'][$id]->new_text = format_plural($topic->new_replies, '1 new post in topic %title', '@count new posts in topic %title', array('%title' => $variables['topics'][$id]->label())); + $variables['topics'][$id]->new_text = \Drupal::translation()->formatPlural($topic->new_replies, '1 new post in topic %title', '@count new posts in topic %title', array('%title' => $variables['topics'][$id]->label())); $variables['topics'][$id]->new_url = \Drupal::url('entity.node.canonical', ['node' => $topic->id()], ['query' => $query, 'fragment' => 'new']); } @@ -583,7 +583,7 @@ function template_preprocess_forum_list(&$variables) { if ($user->isAuthenticated()) { $variables['forums'][$id]->new_topics = \Drupal::service('forum_manager')->unreadTopics($forum->id(), $user->id()); if ($variables['forums'][$id]->new_topics) { - $variables['forums'][$id]->new_text = format_plural($variables['forums'][$id]->new_topics, '1 new post in forum %title', '@count new posts in forum %title', array('%title' => $variables['forums'][$id]->label())); + $variables['forums'][$id]->new_text = \Drupal::translation()->formatPlural($variables['forums'][$id]->new_topics, '1 new post in forum %title', '@count new posts in forum %title', array('%title' => $variables['forums'][$id]->label())); $variables['forums'][$id]->new_url = \Drupal::url('forum.page', ['taxonomy_term' => $forum->id()], ['fragment' => 'new']); $variables['forums'][$id]->icon_class = 'new'; $variables['forums'][$id]->icon_title = t('New posts'); diff --git a/core/modules/forum/src/Tests/ForumTest.php b/core/modules/forum/src/Tests/ForumTest.php index af56049bff842490408aca3af18e3cd4feddeffb..ead923ab2706dc4cdb19e9bf87b5bcb7d1133fa8 100644 --- a/core/modules/forum/src/Tests/ForumTest.php +++ b/core/modules/forum/src/Tests/ForumTest.php @@ -184,7 +184,7 @@ function testForum() { // Verify the number of unread topics. $unread_topics = $this->container->get('forum_manager')->unreadTopics($this->forum['tid'], $this->edit_any_topics_user->id()); - $unread_topics = format_plural($unread_topics, '1 new post', '@count new posts'); + $unread_topics = \Drupal::translation()->formatPlural($unread_topics, '1 new post', '@count new posts'); $xpath = $this->buildXPathQuery('//tr[@id=:forum]//td[@class="topics"]//a', $forum_arg); $this->assertFieldByXPath($xpath, $unread_topics, 'Number of unread topics found.'); // Verify that the forum name is in the unread topics text. diff --git a/core/modules/locale/locale.batch.inc b/core/modules/locale/locale.batch.inc index 22e55447a3c2f5e7b1b4bfe88ab874b6d7e1f3a0..5d3b73a20cd7bd21aeed3203900c40d5d2381799 100644 --- a/core/modules/locale/locale.batch.inc +++ b/core/modules/locale/locale.batch.inc @@ -94,15 +94,15 @@ function locale_translation_batch_status_finished($success, $results) { if ($success) { if (isset($results['failed_files'])) { if (\Drupal::moduleHandler()->moduleExists('dblog') && \Drupal::currentUser()->hasPermission('access site reports')) { - $message = format_plural(count($results['failed_files']), 'One translation file could not be checked. See the log for details.', '@count translation files could not be checked. See the log for details.', array('@url' => \Drupal::url('dblog.overview'))); + $message = \Drupal::translation()->formatPlural(count($results['failed_files']), 'One translation file could not be checked. See the log for details.', '@count translation files could not be checked. See the log for details.', array('@url' => \Drupal::url('dblog.overview'))); } else { - $message = format_plural(count($results['failed_files']), 'One translation files could not be checked. See the log for details.', '@count translation files could not be checked. See the log for details.'); + $message = \Drupal::translation()->formatPlural(count($results['failed_files']), 'One translation files could not be checked. See the log for details.', '@count translation files could not be checked. See the log for details.'); } drupal_set_message($message, 'error'); } if (isset($results['files'])) { - drupal_set_message(format_plural( + drupal_set_message(\Drupal::translation()->formatPlural( count($results['files']), 'Checked available interface translation updates for one project.', 'Checked available interface translation updates for @count projects.' diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc index 9206225532ec893432b9da72e5e5c5651b693daf..93131b9a028cf8c270d0272c2aaba5c39a39080c 100644 --- a/core/modules/locale/locale.bulk.inc +++ b/core/modules/locale/locale.bulk.inc @@ -359,10 +359,10 @@ function locale_translate_batch_finished($success, array $results) { $additions = $updates = $deletes = $skips = $config = 0; if (isset($results['failed_files'])) { if (\Drupal::moduleHandler()->moduleExists('dblog') && \Drupal::currentUser()->hasPermission('access site reports')) { - $message = format_plural(count($results['failed_files']), 'One translation file could not be imported. See the log for details.', '@count translation files could not be imported. See the log for details.', array('@url' => \Drupal::url('dblog.overview'))); + $message = \Drupal::translation()->formatPlural(count($results['failed_files']), 'One translation file could not be imported. See the log for details.', '@count translation files could not be imported. See the log for details.', array('@url' => \Drupal::url('dblog.overview'))); } else { - $message = format_plural(count($results['failed_files']), 'One translation file could not be imported. See the log for details.', '@count translation files could not be imported. See the log for details.'); + $message = \Drupal::translation()->formatPlural(count($results['failed_files']), 'One translation file could not be imported. See the log for details.', '@count translation files could not be imported. See the log for details.'); } drupal_set_message($message, 'error'); } @@ -381,7 +381,7 @@ function locale_translate_batch_finished($success, array $results) { } } } - drupal_set_message(format_plural(count($results['files']), + drupal_set_message(\Drupal::translation()->formatPlural(count($results['files']), 'One translation file imported. %number translations were added, %update translations were updated and %delete translations were removed.', '@count translation files imported. %number translations were added, %update translations were updated and %delete translations were removed.', array('%number' => $additions, '%update' => $updates, '%delete' => $deletes) @@ -390,10 +390,10 @@ function locale_translate_batch_finished($success, array $results) { if ($skips) { if (\Drupal::moduleHandler()->moduleExists('dblog') && \Drupal::currentUser()->hasPermission('access site reports')) { - $message = format_plural($skips, 'One translation string was skipped because of disallowed or malformed HTML. See the log for details.', '@count translation strings were skipped because of disallowed or malformed HTML. See the log for details.', array('@url' => \Drupal::url('dblog.overview'))); + $message = \Drupal::translation()->formatPlural($skips, 'One translation string was skipped because of disallowed or malformed HTML. See the log for details.', '@count translation strings were skipped because of disallowed or malformed HTML. See the log for details.', array('@url' => \Drupal::url('dblog.overview'))); } else { - $message = format_plural($skips, 'One translation string was skipped because of disallowed or malformed HTML. See the log for details.', '@count translation strings were skipped because of disallowed or malformed HTML. See the log for details.'); + $message = \Drupal::translation()->formatPlural($skips, 'One translation string was skipped because of disallowed or malformed HTML. See the log for details.', '@count translation strings were skipped because of disallowed or malformed HTML. See the log for details.'); } drupal_set_message($message, 'warning'); $logger->warning('@count disallowed HTML string(s) in files: @files.', array('@count' => $skips, '@files' => implode(',', $skipped_files))); diff --git a/core/modules/locale/locale.pages.inc b/core/modules/locale/locale.pages.inc index a2b7677283264d0917c6b928d9b4df5262b3e222..f5c5b9a62082215b2fff323bd32d89c063722066 100644 --- a/core/modules/locale/locale.pages.inc +++ b/core/modules/locale/locale.pages.inc @@ -73,7 +73,7 @@ function template_preprocess_locale_translation_update_info(array &$variables) { // Build output for updates not found. if (isset($variables['not_found'])) { $releases = array(); - $variables['missing_updates_status'] = format_plural(count($variables['not_found']), 'Missing translations for one project', 'Missing translations for @count projects'); + $variables['missing_updates_status'] = \Drupal::translation()->formatPlural(count($variables['not_found']), 'Missing translations for one project', 'Missing translations for @count projects'); if ($variables['not_found']) { foreach ($variables['not_found'] as $update) { $version = $update['version'] ? $update['version'] : t('no version'); diff --git a/core/modules/locale/src/Form/TranslateEditForm.php b/core/modules/locale/src/Form/TranslateEditForm.php index fc7126347f07c0fd2790fac809827d8005ba7327..1e3239a7fbda5b39639bdfb90bc15305d3f5999f 100644 --- a/core/modules/locale/src/Form/TranslateEditForm.php +++ b/core/modules/locale/src/Form/TranslateEditForm.php @@ -125,7 +125,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { for ($i = 0; $i < $plural_formulas[$langcode]['plurals']; $i++) { $form['strings'][$string->lid]['translations'][$i] = array( '#type' => 'textarea', - '#title' => ($i == 0 ? $this->t('Singular form') : format_plural($i, 'First plural form', '@count. plural form')), + '#title' => ($i == 0 ? $this->t('Singular form') : $this->formatPlural($i, 'First plural form', '@count. plural form')), '#rows' => $rows, '#default_value' => isset($translation_array[$i]) ? $translation_array[$i] : '', '#attributes' => array('lang' => $langcode), diff --git a/core/modules/locale/src/Tests/LocalePluralFormatTest.php b/core/modules/locale/src/Tests/LocalePluralFormatTest.php index 1542f17186abda43a0283f3e1cda6bba8e0a0bf0..e6b51f1745063ed429f96fcf59fdf8ee41331d49 100644 --- a/core/modules/locale/src/Tests/LocalePluralFormatTest.php +++ b/core/modules/locale/src/Tests/LocalePluralFormatTest.php @@ -34,7 +34,8 @@ protected function setUp() { } /** - * Tests locale_get_plural() and format_plural() functionality. + * Tests locale_get_plural() and \Drupal::translation()->formatPlural() + * functionality. */ public function testGetPluralFormat() { // Import some .po files with formulas to set up the environment. @@ -129,7 +130,7 @@ public function testGetPluralFormat() { // expected index as per the logic for translation lookups. $expected_plural_index = ($count == 1) ? 0 : $expected_plural_index; $expected_plural_string = str_replace('@count', $count, $plural_strings[$langcode][$expected_plural_index]); - $this->assertIdentical(format_plural($count, '1 hour', '@count hours', array(), array('langcode' => $langcode)), $expected_plural_string, 'Plural translation of 1 hours / @count hours for count ' . $count . ' in ' . $langcode . ' is ' . $expected_plural_string); + $this->assertIdentical(\Drupal::translation()->formatPlural($count, '1 hour', '@count hours', array(), array('langcode' => $langcode)), $expected_plural_string, 'Plural translation of 1 hours / @count hours for count ' . $count . ' in ' . $langcode . ' is ' . $expected_plural_string); } } } @@ -217,7 +218,7 @@ public function testPluralEditExport() { // langcode here because the language will be English by default and will // not save our source string for performance optimization if we do not ask // specifically for a language. - format_plural(1, '1 day', '@count days', array(), array('langcode' => 'fr')); + \Drupal::translation()->formatPlural(1, '1 day', '@count days', array(), array('langcode' => 'fr')); $lid = db_query("SELECT lid FROM {locales_source} WHERE source = :source AND context = ''", array(':source' => "1 day" . LOCALE_PLURAL_DELIMITER . "@count days"))->fetchField(); // Look up editing page for this plural string and check fields. $search = array( diff --git a/core/modules/menu_ui/src/Form/MenuDeleteForm.php b/core/modules/menu_ui/src/Form/MenuDeleteForm.php index 2d72b84906b2f932fd7a1d295874432e7b798675..b2899707de0300fa6fd900fa5d56087abfa0334b 100644 --- a/core/modules/menu_ui/src/Form/MenuDeleteForm.php +++ b/core/modules/menu_ui/src/Form/MenuDeleteForm.php @@ -76,7 +76,7 @@ public function getDescription() { $caption = ''; $num_links = $this->menuLinkManager->countMenuLinks($this->entity->id()); if ($num_links) { - $caption .= '

' . format_plural($num_links, 'Warning: There is currently 1 menu link in %title. It will be deleted (system-defined items will be reset).', 'Warning: There are currently @count menu links in %title. They will be deleted (system-defined links will be reset).', array('%title' => $this->entity->label())) . '

'; + $caption .= '

' . $this->formatPlural($num_links, 'Warning: There is currently 1 menu link in %title. It will be deleted (system-defined items will be reset).', 'Warning: There are currently @count menu links in %title. They will be deleted (system-defined links will be reset).', array('%title' => $this->entity->label())) . '

'; } $caption .= '

' . t('This action cannot be undone.') . '

'; return $caption; diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc index 859dece424a1bb287431c68f109cbf79a9dd4ed5..8e0facd39e10e3a465a8c5fad67c7369cde42460 100644 --- a/core/modules/node/node.admin.inc +++ b/core/modules/node/node.admin.inc @@ -159,7 +159,7 @@ function _node_mass_update_batch_finished($success, $results, $operations) { } else { drupal_set_message(t('An error occurred and processing did not complete.'), 'error'); - $message = format_plural(count($results), '1 item successfully processed:', '@count items successfully processed:'); + $message = \Drupal::translation()->formatPlural(count($results), '1 item successfully processed:', '@count items successfully processed:'); $item_list = array( '#theme' => 'item_list', '#items' => $results, diff --git a/core/modules/node/node.api.php b/core/modules/node/node.api.php index 8110c8309bd791a6c6a0d99e462a55eed726c776..9ae46d625c19679c950e6c0ccc36251910cbc727 100644 --- a/core/modules/node/node.api.php +++ b/core/modules/node/node.api.php @@ -380,7 +380,7 @@ function hook_node_access(\Drupal\node\NodeInterface $node, $op, \Drupal\Core\Se */ function hook_node_search_result(\Drupal\node\NodeInterface $node, $langcode) { $rating = db_query('SELECT SUM(points) FROM {my_rating} WHERE nid = :nid', array('nid' => $node->id()))->fetchField(); - return array('rating' => format_plural($rating, '1 point', '@count points')); + return array('rating' => \Drupal::translation()->formatPlural($rating, '1 point', '@count points')); } /** diff --git a/core/modules/node/node.install b/core/modules/node/node.install index 6f8f53adb69501dea1e0f4869508d8d8490c9fca..b7baab87ce1b7003d9c852c75287cac83e19cfde 100644 --- a/core/modules/node/node.install +++ b/core/modules/node/node.install @@ -20,7 +20,7 @@ function node_requirements($phase) { // implement hook_node_grants(). $grant_count = \Drupal::entityManager()->getAccessControlHandler('node')->countGrants(); if ($grant_count != 1 || count(\Drupal::moduleHandler()->getImplementations('node_grants')) > 0) { - $value = format_plural($grant_count, 'One permission in use', '@count permissions in use', array('@count' => $grant_count)); + $value = \Drupal::translation()->formatPlural($grant_count, 'One permission in use', '@count permissions in use', array('@count' => $grant_count)); } else { $value = t('Disabled'); diff --git a/core/modules/node/node.module b/core/modules/node/node.module index ad63d210d1569f32c640bd674c9621398aafa125..84a2d19264b7a117a49d80bd507cd6076c7d9418 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -190,7 +190,7 @@ function node_title_list(StatementInterface $result, $title = NULL) { foreach ($result as $row) { // Do not use $node->label() or $node->urlInfo() here, because we only have // database rows, not actual nodes. - $options = !empty($row->comment_count) ? array('attributes' => array('title' => format_plural($row->comment_count, '1 comment', '@count comments'))) : array(); + $options = !empty($row->comment_count) ? array('attributes' => array('title' => \Drupal::translation()->formatPlural($row->comment_count, '1 comment', '@count comments'))) : array(); $items[] = \Drupal::l($row->title, new Url('entity.node.canonical', ['node' => $row->nid], $options)); $num_rows = TRUE; } diff --git a/core/modules/node/src/Entity/NodeType.php b/core/modules/node/src/Entity/NodeType.php index e33c1ecfcbac07f17f467cd6cee9c89c32875702..611324796c0b7a8d52352b06321073cc062b4dfc 100644 --- a/core/modules/node/src/Entity/NodeType.php +++ b/core/modules/node/src/Entity/NodeType.php @@ -162,7 +162,7 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) { if ($update && $this->getOriginalId() != $this->id()) { $update_count = node_type_update_nodes($this->getOriginalId(), $this->id()); if ($update_count) { - drupal_set_message(format_plural($update_count, + drupal_set_message(\Drupal::translation()->formatPlural($update_count, 'Changed the content type of 1 post from %old-type to %type.', 'Changed the content type of @count posts from %old-type to %type.', array( diff --git a/core/modules/node/src/Form/DeleteMultiple.php b/core/modules/node/src/Form/DeleteMultiple.php index 7b2aced86f5c6514a6c09248aeb82437ba31f375..8116db88233a2f867911506538194f53aea8d789 100644 --- a/core/modules/node/src/Form/DeleteMultiple.php +++ b/core/modules/node/src/Form/DeleteMultiple.php @@ -76,7 +76,7 @@ public function getFormId() { * {@inheritdoc} */ public function getQuestion() { - return format_plural(count($this->nodes), 'Are you sure you want to delete this item?', 'Are you sure you want to delete these items?'); + return $this->formatPlural(count($this->nodes), 'Are you sure you want to delete this item?', 'Are you sure you want to delete these items?'); } /** @@ -122,7 +122,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { $this->tempStoreFactory->get('node_multiple_delete_confirm')->delete(\Drupal::currentUser()->id()); $count = count($this->nodes); $this->logger('content')->notice('Deleted @count posts.', array('@count' => $count)); - drupal_set_message(format_plural($count, 'Deleted 1 post.', 'Deleted @count posts.')); + drupal_set_message($this->formatPlural($count, 'Deleted 1 post.', 'Deleted @count posts.')); } $form_state->setRedirect('system.admin_content'); } diff --git a/core/modules/node/src/Form/NodeTypeDeleteConfirm.php b/core/modules/node/src/Form/NodeTypeDeleteConfirm.php index 02423013f462e5691b4ba38cd5b0d1939af44f3e..2d662c1e7a773669422613971730211eba1bf29d 100644 --- a/core/modules/node/src/Form/NodeTypeDeleteConfirm.php +++ b/core/modules/node/src/Form/NodeTypeDeleteConfirm.php @@ -74,7 +74,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { ->count() ->execute(); if ($num_nodes) { - $caption = '

' . format_plural($num_nodes, '%type is used by 1 piece of content on your site. You can not remove this content type until you have removed all of the %type content.', '%type is used by @count pieces of content on your site. You may not remove %type until you have removed all of the %type content.', array('%type' => $this->entity->label())) . '

'; + $caption = '

' . $this->formatPlural($num_nodes, '%type is used by 1 piece of content on your site. You can not remove this content type until you have removed all of the %type content.', '%type is used by @count pieces of content on your site. You may not remove %type until you have removed all of the %type content.', array('%type' => $this->entity->label())) . '

'; $form['#title'] = $this->getQuestion(); $form['description'] = array('#markup' => $caption); return $form; diff --git a/core/modules/node/src/Plugin/Search/NodeSearch.php b/core/modules/node/src/Plugin/Search/NodeSearch.php index 8c795a2e2d838aa516ca84b26155547e03fa8c69..47f1bc9f836115d20ec52449cc72cf4e1d66f018 100644 --- a/core/modules/node/src/Plugin/Search/NodeSearch.php +++ b/core/modules/node/src/Plugin/Search/NodeSearch.php @@ -265,7 +265,7 @@ protected function findResults() { } if ($status & SearchQuery::NO_POSITIVE_KEYWORDS) { - drupal_set_message(\Drupal::translation()->formatPlural($this->searchSettings->get('index.minimum_word_size'), 'You must include at least one positive keyword with 1 character or more.', 'You must include at least one positive keyword with @count characters or more.'), 'warning'); + drupal_set_message($this->formatPlural($this->searchSettings->get('index.minimum_word_size'), 'You must include at least one positive keyword with 1 character or more.', 'You must include at least one positive keyword with @count characters or more.'), 'warning'); } return $find; diff --git a/core/modules/search/src/Plugin/views/filter/Search.php b/core/modules/search/src/Plugin/views/filter/Search.php index a061fc1dc8a52af1743dde15846810fbb579a061..c5665cbc7c8b702c5e3458eae735740714883c29 100644 --- a/core/modules/search/src/Plugin/views/filter/Search.php +++ b/core/modules/search/src/Plugin/views/filter/Search.php @@ -108,7 +108,7 @@ public function validateExposed(&$form, FormStateInterface $form_state) { if (!$form_state->isValueEmpty($key)) { $this->queryParseSearchExpression($form_state->getValue($key)); if (count($this->searchQuery->words()) == 0) { - $form_state->setErrorByName($key, format_plural(\Drupal::config('search.settings')->get('index.minimum_word_size'), 'You must include at least one positive keyword with 1 character or more.', 'You must include at least one positive keyword with @count characters or more.')); + $form_state->setErrorByName($key, $this->formatPlural(\Drupal::config('search.settings')->get('index.minimum_word_size'), 'You must include at least one positive keyword with 1 character or more.', 'You must include at least one positive keyword with @count characters or more.')); } } } diff --git a/core/modules/search/src/SearchPageListBuilder.php b/core/modules/search/src/SearchPageListBuilder.php index 6310dae22fe2a541346eef7e7a180abe67352e03..9efd4cce5063fdac790dbb6d2d1916e3ff70025e 100644 --- a/core/modules/search/src/SearchPageListBuilder.php +++ b/core/modules/search/src/SearchPageListBuilder.php @@ -170,7 +170,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { } $this->moduleHandler->loadAllIncludes('admin.inc'); - $count = format_plural($remaining, 'There is 1 item left to index.', 'There are @count items left to index.'); + $count = $this->formatPlural($remaining, 'There is 1 item left to index.', 'There are @count items left to index.'); $done = $total - $remaining; // Use floor() to calculate the percentage, so if it is not quite 100%, it // will show as 99%, to indicate "almost done". diff --git a/core/modules/search/src/Tests/SearchMultilingualEntityTest.php b/core/modules/search/src/Tests/SearchMultilingualEntityTest.php index 07a30914eb853b95115238a7f98b422f84b7a017..0370ee2180a4acbd4c092d557d051b4c27aa688c 100644 --- a/core/modules/search/src/Tests/SearchMultilingualEntityTest.php +++ b/core/modules/search/src/Tests/SearchMultilingualEntityTest.php @@ -278,7 +278,9 @@ protected function assertIndexCounts($remaining, $total, $message) { $this->assertEqual($status['total'], $total, 'Total items ' . $message . ' is ' . $total); // Check text in progress section of Search settings page. Note that this - // test avoids using format_plural(), so it tests for fragments of text. + // test avoids using + // \Drupal\Core\StringTranslation\TranslationInterface::formatPlural(), so + // it tests for fragments of text. $indexed = $total - $remaining; $percent = ($total > 0) ? floor(100 * $indexed / $total) : 100; $this->drupalGet('admin/config/search/pages'); diff --git a/core/modules/shortcut/src/Form/ShortcutSetDeleteForm.php b/core/modules/shortcut/src/Form/ShortcutSetDeleteForm.php index 4ab34486271578cd4fd15789d322313493d32267..036005304db90647257ed0a4d8bffe9465cc9b49 100644 --- a/core/modules/shortcut/src/Form/ShortcutSetDeleteForm.php +++ b/core/modules/shortcut/src/Form/ShortcutSetDeleteForm.php @@ -80,7 +80,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { $number = $this->storage->countAssignedUsers($this->entity); $info = ''; if ($number) { - $info .= '

' . format_plural($number, + $info .= '

' . $this->formatPlural($number, '1 user has chosen or been assigned to this shortcut set.', '@count users have chosen or been assigned to this shortcut set.') . '

'; } diff --git a/core/modules/simpletest/simpletest.module b/core/modules/simpletest/simpletest.module index 7c0c34faaf6c3e4f74c86a437883a2e1378d371c..273bf3c06e37681d3dc448ee3e86e8a6f057ac38 100644 --- a/core/modules/simpletest/simpletest.module +++ b/core/modules/simpletest/simpletest.module @@ -528,7 +528,7 @@ function simpletest_clean_environment() { simpletest_clean_temporary_directories(); if (\Drupal::config('simpletest.settings')->get('clear_results')) { $count = simpletest_clean_results_table(); - drupal_set_message(format_plural($count, 'Removed 1 test result.', 'Removed @count test results.')); + drupal_set_message(\Drupal::translation()->formatPlural($count, 'Removed 1 test result.', 'Removed @count test results.')); } else { drupal_set_message(t('Clear results is disabled and the test results table will not be cleared.'), 'warning'); @@ -556,7 +556,7 @@ function simpletest_clean_database() { } if ($count > 0) { - drupal_set_message(format_plural($count, 'Removed 1 leftover table.', 'Removed @count leftover tables.')); + drupal_set_message(\Drupal::translation()->formatPlural($count, 'Removed 1 leftover table.', 'Removed @count leftover tables.')); } else { drupal_set_message(t('No leftover tables to remove.')); @@ -580,7 +580,7 @@ function simpletest_clean_temporary_directories() { } if ($count > 0) { - drupal_set_message(format_plural($count, 'Removed 1 temporary directory.', 'Removed @count temporary directories.')); + drupal_set_message(\Drupal::translation()->formatPlural($count, 'Removed 1 temporary directory.', 'Removed @count temporary directories.')); } else { drupal_set_message(t('No temporary directories to remove.')); diff --git a/core/modules/statistics/statistics.module b/core/modules/statistics/statistics.module index 53dd91f4e198fa5ba29e659f1d6f798528a70ad4..489241fe95ef4b9712f8ef572dffa3feb6d370b0 100644 --- a/core/modules/statistics/statistics.module +++ b/core/modules/statistics/statistics.module @@ -52,7 +52,7 @@ function statistics_node_links_alter(array &$node_links, NodeInterface $entity, if (\Drupal::currentUser()->hasPermission('view post access counter')) { $statistics = statistics_get($entity->id()); if ($statistics) { - $links['statistics_counter']['title'] = format_plural($statistics['totalcount'], '1 view', '@count views'); + $links['statistics_counter']['title'] = \Drupal::translation()->formatPlural($statistics['totalcount'], '1 view', '@count views'); $node_links['statistics'] = array( '#theme' => 'links__node__statistics', '#links' => $links, diff --git a/core/modules/system/src/Form/ModulesListConfirmForm.php b/core/modules/system/src/Form/ModulesListConfirmForm.php index 279b95ebf97189663ad71c5a784b507774e91b8e..24f1b4bc2bdf12c1b0b62ad6fb63eb868f86858b 100644 --- a/core/modules/system/src/Form/ModulesListConfirmForm.php +++ b/core/modules/system/src/Form/ModulesListConfirmForm.php @@ -126,7 +126,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { // Display a list of required modules that have to be installed as well but // were not manually selected. foreach ($this->modules['dependencies'] as $module => $dependencies) { - $items[] = format_plural(count($dependencies), 'You must enable the @required module to install @module.', 'You must enable the @required modules to install @module.', array( + $items[] = $this->formatPlural(count($dependencies), 'You must enable the @required module to install @module.', 'You must enable the @required modules to install @module.', array( '@module' => $this->modules['install'][$module], '@required' => implode(', ', $dependencies), )); diff --git a/core/modules/system/src/Tests/Extension/InfoParserUnitTest.php b/core/modules/system/src/Tests/Extension/InfoParserUnitTest.php index b9252857ddfd976a44eb9beabd1d51771b1e480f..767e0a1c3adc6af178ec874da3c605b6a16680e0 100644 --- a/core/modules/system/src/Tests/Extension/InfoParserUnitTest.php +++ b/core/modules/system/src/Tests/Extension/InfoParserUnitTest.php @@ -74,7 +74,7 @@ public function testInfoParser() { $this->fail('Expected InfoParserException not thrown when reading missing_key.info.txt'); } catch (InfoParserException $e) { - $expected_message = "Missing required key (type) in $filename."; + $expected_message = "Missing required keys (type) in $filename."; $this->assertEqual($e->getMessage(), $expected_message); } diff --git a/core/modules/system/system.install b/core/modules/system/system.install index c9ae4c18a3bce60d707f18f3dc0f336e18907ce7..cc2079fa69613288b60647c76b646c013cbe251f 100644 --- a/core/modules/system/system.install +++ b/core/modules/system/system.install @@ -606,7 +606,7 @@ function system_requirements($phase) { $requirements['disabled_modules'] = array( 'severity' => REQUIREMENT_ERROR, 'title' => t('Disabled modules'), - 'value' => format_plural(count($modules), 'The %modules module is disabled.', 'The following modules are disabled: %modules', array('%modules' => implode(', ', $modules))), + 'value' => \Drupal::translation()->formatPlural(count($modules), 'The %modules module is disabled.', 'The following modules are disabled: %modules', array('%modules' => implode(', ', $modules))), 'description' => t('Drupal 8 no longer supports disabled modules. Please either enable or uninstall them before upgrading.'), ); } diff --git a/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php b/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php index f37453e25acfceeaada9ef65fb2aa6bb6eb9e92a..1c44562ceb12bff7f36539e47295160eae3f1bb8 100644 --- a/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php +++ b/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php @@ -373,7 +373,7 @@ function validate_term_strings(&$form, $values, FormStateInterface $form_state) } if ($missing && !empty($this->options['error_message'])) { - $form_state->setError($form, format_plural(count($missing), 'Unable to find term: @terms', 'Unable to find terms: @terms', array('@terms' => implode(', ', array_keys($missing))))); + $form_state->setError($form, $this->formatPlural(count($missing), 'Unable to find term: @terms', 'Unable to find terms: @terms', array('@terms' => implode(', ', array_keys($missing))))); } elseif ($missing && empty($this->options['error_message'])) { $tids = array(0); diff --git a/core/modules/update/update.manager.inc b/core/modules/update/update.manager.inc index 41866c7cad6473a75aacc49b5bab233128c7d70b..13be6df46240a2b22264ac95e0c2a26eb0b09279 100644 --- a/core/modules/update/update.manager.inc +++ b/core/modules/update/update.manager.inc @@ -112,7 +112,7 @@ function _update_manager_check_backends(&$form, $operation) { $backend_names[] = $backend['title']; } if ($operation == 'update') { - $form['available_backends']['#markup'] = format_plural( + $form['available_backends']['#markup'] = \Drupal::translation()->formatPlural( count($available_backends), 'Updating modules and themes requires @backends access to your server. See the handbook for other update methods.', 'Updating modules and themes requires access to your server via one of the following methods: @backends. See the handbook for other update methods.', @@ -122,7 +122,7 @@ function _update_manager_check_backends(&$form, $operation) { )); } else { - $form['available_backends']['#markup'] = format_plural( + $form['available_backends']['#markup'] = \Drupal::translation()->formatPlural( count($available_backends), 'Installing modules and themes requires @backends access to your server. See the handbook for other installation methods.', 'Installing modules and themes requires access to your server via one of the following methods: @backends. See the handbook for other installation methods.', diff --git a/core/modules/update/update.module b/core/modules/update/update.module index c445986619620933d1f218d529ce4a510bcadac3..e3eba3f5d528fbc27a08c39c8f7906416827aef0 100644 --- a/core/modules/update/update.module +++ b/core/modules/update/update.module @@ -420,10 +420,10 @@ function update_fetch_data_finished($success, $results) { if ($success) { if (!empty($results)) { if (!empty($results['updated'])) { - drupal_set_message(format_plural($results['updated'], 'Checked available update data for one project.', 'Checked available update data for @count projects.')); + drupal_set_message(\Drupal::translation()->formatPlural($results['updated'], 'Checked available update data for one project.', 'Checked available update data for @count projects.')); } if (!empty($results['failures'])) { - drupal_set_message(format_plural($results['failures'], 'Failed to get available update data for one project.', 'Failed to get available update data for @count projects.'), 'error'); + drupal_set_message(\Drupal::translation()->formatPlural($results['failures'], 'Failed to get available update data for one project.', 'Failed to get available update data for @count projects.'), 'error'); } } } @@ -652,7 +652,7 @@ function update_verify_update_archive($project, $archive_file, $directory) { $errors[] = t('%archive_file does not contain any .info.yml files.', array('%archive_file' => drupal_basename($archive_file))); } elseif (!$compatible_project) { - $errors[] = format_plural( + $errors[] = \Drupal::translation()->formatPlural( count($incompatible), '%archive_file contains a version of %names that is not compatible with Drupal !version.', '%archive_file contains versions of modules or themes that are not compatible with Drupal !version: %names', diff --git a/core/modules/user/src/Form/UserLoginForm.php b/core/modules/user/src/Form/UserLoginForm.php index 4cfdff3196ecdc0f10cc6e6306a619fb6a2e585f..999a7cd2fe33072737b1c7ced3d17b4dd92fbd77 100644 --- a/core/modules/user/src/Form/UserLoginForm.php +++ b/core/modules/user/src/Form/UserLoginForm.php @@ -207,7 +207,7 @@ public function validateFinal(array &$form, FormStateInterface $form_state) { if ($flood_control_triggered = $form_state->get('flood_control_triggered')) { if ($flood_control_triggered == 'user') { - $form_state->setErrorByName('name', format_plural($flood_config->get('user_limit'), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or request a new password.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.', array('@url' => $this->url('user.pass')))); + $form_state->setErrorByName('name', $this->formatPlural($flood_config->get('user_limit'), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or request a new password.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.', array('@url' => $this->url('user.pass')))); } else { // We did not find a uid, so the limit is IP-based. diff --git a/core/modules/user/src/Plugin/views/filter/Name.php b/core/modules/user/src/Plugin/views/filter/Name.php index 531dc5d3ad76d29ee86ff79f8e955790197d02a4..76e642a331cb5eb39daf6ba0fef04e3383ce9a6a 100644 --- a/core/modules/user/src/Plugin/views/filter/Name.php +++ b/core/modules/user/src/Plugin/views/filter/Name.php @@ -135,7 +135,7 @@ function validate_user_strings(&$form, FormStateInterface $form_state, $values) } if ($missing) { - $form_state->setError($form, format_plural(count($missing), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', array_keys($missing))))); + $form_state->setError($form, $this->formatPlural(count($missing), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', array_keys($missing))))); } return $uids; diff --git a/core/modules/user/src/Tests/UserLoginTest.php b/core/modules/user/src/Tests/UserLoginTest.php index 43202d6c48f118534edeb857ca4e9d361a7098c3..0235983584e85d3d2efcec313450a0f60fa46651 100644 --- a/core/modules/user/src/Tests/UserLoginTest.php +++ b/core/modules/user/src/Tests/UserLoginTest.php @@ -155,7 +155,7 @@ function assertFailedLogin($account, $flood_trigger = NULL) { $this->assertNoFieldByXPath("//input[@name='pass' and @value!='']", NULL, 'Password value attribute is blank.'); if (isset($flood_trigger)) { if ($flood_trigger == 'user') { - $this->assertRaw(format_plural($this->config('user.flood')->get('user_limit'), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or request a new password.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.', array('@url' => \Drupal::url('user.pass')))); + $this->assertRaw(\Drupal::translation()->formatPlural($this->config('user.flood')->get('user_limit'), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or request a new password.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.', array('@url' => \Drupal::url('user.pass')))); } else { // No uid, so the limit is IP-based. diff --git a/core/modules/user/src/Tests/Views/HandlerFilterUserNameTest.php b/core/modules/user/src/Tests/Views/HandlerFilterUserNameTest.php index b582d3434d373049e63f6eb436b47e7039635b1f..0faa52ca8f4c8dd5968772f0879e7a68df03dcc2 100644 --- a/core/modules/user/src/Tests/Views/HandlerFilterUserNameTest.php +++ b/core/modules/user/src/Tests/Views/HandlerFilterUserNameTest.php @@ -102,7 +102,7 @@ public function testAdminUserInterface() { 'options[value]' => implode(', ', $users) ); $this->drupalPostForm($path, $edit, t('Apply')); - $message = format_plural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); + $message = \Drupal::translation()->formatPlural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); $this->assertText($message); // Pass in an invalid username and a valid username. @@ -114,7 +114,7 @@ public function testAdminUserInterface() { ); $users = array($users[0]); $this->drupalPostForm($path, $edit, t('Apply')); - $message = format_plural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); + $message = \Drupal::translation()->formatPlural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); $this->assertRaw($message); // Pass in just valid usernames. @@ -124,7 +124,7 @@ public function testAdminUserInterface() { 'options[value]' => implode(', ', $users) ); $this->drupalPostForm($path, $edit, t('Apply')); - $message = format_plural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); + $message = \Drupal::translation()->formatPlural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); $this->assertNoRaw($message); } @@ -141,7 +141,7 @@ public function testExposedFilter() { $users = array_map('strtolower', $users); $options['query']['uid'] = implode(', ', $users); $this->drupalGet($path, $options); - $message = format_plural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); + $message = \Drupal::translation()->formatPlural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); $this->assertRaw($message); // Pass in an invalid username and a valid username. @@ -151,7 +151,7 @@ public function testExposedFilter() { $users = array($users[0]); $this->drupalGet($path, $options); - $message = format_plural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); + $message = \Drupal::translation()->formatPlural(count($users), 'Unable to find user: @users', 'Unable to find users: @users', array('@users' => implode(', ', $users))); $this->assertRaw($message); // Pass in just valid usernames. diff --git a/core/modules/views/src/Plugin/views/field/Numeric.php b/core/modules/views/src/Plugin/views/field/Numeric.php index d1d6874e3f8d4578c267a7f69496affb31eeb4ff..c17c7f6aa34209fc702245b3c42f4015acf7fc5a 100644 --- a/core/modules/views/src/Plugin/views/field/Numeric.php +++ b/core/modules/views/src/Plugin/views/field/Numeric.php @@ -150,7 +150,7 @@ public function render(ResultRow $values) { // Should we format as a plural. if (!empty($this->options['format_plural'])) { - $value = format_plural($value, $this->options['format_plural_singular'], $this->options['format_plural_plural']); + $value = $this->formatPlural($value, $this->options['format_plural_singular'], $this->options['format_plural_plural']); } return $this->sanitizeValue($this->options['prefix'], 'xss') diff --git a/core/modules/views/src/Plugin/views/pager/Full.php b/core/modules/views/src/Plugin/views/pager/Full.php index 787580cdee3ac5d481d33c00f15f9e39bd26e229..43a0ca7aaed789f7fe4a2bac3b0e9385777cc3ff 100644 --- a/core/modules/views/src/Plugin/views/pager/Full.php +++ b/core/modules/views/src/Plugin/views/pager/Full.php @@ -73,9 +73,9 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { */ public function summaryTitle() { if (!empty($this->options['offset'])) { - return format_plural($this->options['items_per_page'], '@count item, skip @skip', 'Paged, @count items, skip @skip', array('@count' => $this->options['items_per_page'], '@skip' => $this->options['offset'])); + return $this->formatPlural($this->options['items_per_page'], '@count item, skip @skip', 'Paged, @count items, skip @skip', array('@count' => $this->options['items_per_page'], '@skip' => $this->options['offset'])); } - return format_plural($this->options['items_per_page'], '@count item', 'Paged, @count items', array('@count' => $this->options['items_per_page'])); + return $this->formatPlural($this->options['items_per_page'], '@count item', 'Paged, @count items', array('@count' => $this->options['items_per_page'])); } /** diff --git a/core/modules/views/src/Plugin/views/pager/Mini.php b/core/modules/views/src/Plugin/views/pager/Mini.php index f0195ae203b63e9b0906f00c559dbec578776d9c..b08c9d28500a65c236b96ada0aab77be11772924 100644 --- a/core/modules/views/src/Plugin/views/pager/Mini.php +++ b/core/modules/views/src/Plugin/views/pager/Mini.php @@ -41,9 +41,9 @@ public function defineOptions() { */ public function summaryTitle() { if (!empty($this->options['offset'])) { - return format_plural($this->options['items_per_page'], 'Mini pager, @count item, skip @skip', 'Mini pager, @count items, skip @skip', array('@count' => $this->options['items_per_page'], '@skip' => $this->options['offset'])); + return $this->formatPlural($this->options['items_per_page'], 'Mini pager, @count item, skip @skip', 'Mini pager, @count items, skip @skip', array('@count' => $this->options['items_per_page'], '@skip' => $this->options['offset'])); } - return format_plural($this->options['items_per_page'], 'Mini pager, @count item', 'Mini pager, @count items', array('@count' => $this->options['items_per_page'])); + return $this->formatPlural($this->options['items_per_page'], 'Mini pager, @count item', 'Mini pager, @count items', array('@count' => $this->options['items_per_page'])); } /** diff --git a/core/modules/views/src/Plugin/views/pager/Some.php b/core/modules/views/src/Plugin/views/pager/Some.php index effc40ed0f1df1a69b19f3bde8373895ab359538..125fc3cfa8b6f2660109cc53fd05f9a3b72c205f 100644 --- a/core/modules/views/src/Plugin/views/pager/Some.php +++ b/core/modules/views/src/Plugin/views/pager/Some.php @@ -25,9 +25,9 @@ class Some extends PagerPluginBase { public function summaryTitle() { if (!empty($this->options['offset'])) { - return format_plural($this->options['items_per_page'], '@count item, skip @skip', '@count items, skip @skip', array('@count' => $this->options['items_per_page'], '@skip' => $this->options['offset'])); + return $this->formatPlural($this->options['items_per_page'], '@count item, skip @skip', '@count items, skip @skip', array('@count' => $this->options['items_per_page'], '@skip' => $this->options['offset'])); } - return format_plural($this->options['items_per_page'], '@count item', '@count items', array('@count' => $this->options['items_per_page'])); + return $this->formatPlural($this->options['items_per_page'], '@count item', '@count items', array('@count' => $this->options['items_per_page'])); } protected function defineOptions() { diff --git a/core/modules/views_ui/views_ui.theme.inc b/core/modules/views_ui/views_ui.theme.inc index f56b3b5ee81a4d9a13bc7d9f9c336983f1677eef..294fa07aeb146c8bd6ad2e180507599d9ef630af 100644 --- a/core/modules/views_ui/views_ui.theme.inc +++ b/core/modules/views_ui/views_ui.theme.inc @@ -80,7 +80,7 @@ function template_preprocess_views_ui_view_info(&$variables) { $displays = t('None'); } else { - $displays = format_plural(count($variables['displays']), 'Display', 'Displays') . ': '; + $displays = \Drupal::translation()->formatPlural(count($variables['displays']), 'Display', 'Displays') . ': '; $separator = ''; foreach ($variables['displays'] as $displays_item) { $displays .= $separator . SafeMarkup::escape($displays_item);