format_plural

Versions
mediamosa-21
format_plural($count, $singular, $plural, array $args = array(), array $options = array())

Format a string containing a count of items.

This function ensures that the string is pluralized correctly. Since t() is called by this function, make sure not to pass already-localized strings to it.

For example:

<?php

$output = format_plural($node->comment_count, '1 comment', '@count comments');

?>

Example with additional replacements:

<?php

$output = format_plural($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)));

?>

Parameters

$count The item count to display.

$singular The string for the singular case. Please make sure it is clear this is singular, to ease translation (e.g. use "1 new comment" instead of "1 new"). Do not use @count in the singular string.

$plural The string for the plural case. Please make sure it is clear this is plural, to ease translation. Use @count in place of the item count, as in "@count new comments".

$args An associative array of replacements to make after translation. Incidences of any key in this array are replaced with the corresponding value. Based on the first character of the key, the value is escaped and/or themed:

  • !variable: inserted as is
  • @variable: escape plain text to HTML (check_plain)
  • %variable: escape text and theme as a placeholder for user-submitted content (check_plain + theme_placeholder)

Note that you do not need to include @count in this array. This replacement is done automatically for the plural case.

$options An associative array of additional options, with the following keys:

  • 'langcode' (default to the current language) The language code to translate to a language other than what is used to display the page.
  • 'context' (default to the empty context) The context the source string belongs to.

Return value

A translated string.

Related topics

▾ 44 functions call format_plural()

actions_synchronize in includes/actions.inc
Synchronizes actions that are provided by modules in hook_action_info().
aggregator_view in modules/aggregator/aggregator.admin.inc
Displays the aggregator administration page.
comment_node_search_result in modules/comment/comment.module
Implements hook_node_search_result().
comment_node_view in modules/comment/comment.module
Implements hook_node_view().
devel_create_users in sites/all/modules/devel/devel_generate.inc
Generate some random users.
devel_generate_content in sites/all/modules/devel/devel_generate.inc
The main API function for creating content.
devel_variable_form_submit in sites/all/modules/devel/devel.module
format_interval in includes/common.inc
Format a time interval with the requested granularity.
format_size in includes/common.inc
Generate a string representation for the given byte count.
hook_node_search_result in modules/node/node.api.php
Act on a node being displayed as a search result.
menu_delete_menu_confirm in modules/menu/menu.admin.inc
Build a confirm form for deletion of a custom menu.
menu_edit_menu_validate in modules/menu/menu.admin.inc
Validates the human and machine-readable names when adding or editing a menu.
node_multiple_delete_confirm in modules/node/node.admin.inc
node_node_type_insert in modules/node/content_types.inc
Implements hook_node_type_insert().
node_node_type_update in modules/node/content_types.inc
Implements hook_node_type_update().
node_requirements in modules/node/node.module
Implements hook_requirements().
node_title_list in modules/node/node.module
Gather a listing of links to nodes.
node_type_delete_confirm in modules/node/content_types.inc
Menu callback; delete a single content type.
number_field_formatter_view in modules/field/modules/number/number.module
Implements hook_field_formatter_view().
poll_page in modules/poll/poll.pages.inc
Menu callback to provide a simple list of all polls available.
search_admin_settings in modules/search/search.admin.inc
Menu callback; displays the search module settings page.
shortcut_set_delete_form in modules/shortcut/shortcut.admin.inc
Form callback: builds the confirmation form for deleting a shortcut set.
simpletest_clean_database in modules/simpletest/simpletest.module
Removed prefixed tables from the database that are left over from crashed tests.
simpletest_clean_environment in modules/simpletest/simpletest.module
Remove all temporary database tables and directories.
simpletest_clean_temporary_directories in modules/simpletest/simpletest.module
Find all leftover temporary directories and remove them.
statistics_node_view in modules/statistics/statistics.module
Implements hook_node_view().
system_modules_confirm_form in modules/system/system.admin.inc
Display confirmation form for required modules.
system_themes_page in modules/system/system.admin.inc
Menu callback; displays a listing of all themes.
template_preprocess_forum_list in modules/forum/forum.module
Process variables to format a forum listing.
template_preprocess_forum_topic_list in modules/forum/forum.module
Preprocess variables to format the topic listing.
tracker_page in modules/tracker/tracker.pages.inc
Menu callback; prints a listing of active nodes on the site.
update_fetch_data_finished in modules/update/update.fetch.inc
Batch API callback when all fetch tasks have been completed.
update_script_selection_form in ./update.php
user_block_view in modules/user/user.module
Implements hook_block_view().
user_login_final_validate in modules/user/user.module
The final validation handler on the login form.
_aggregator_characters in modules/aggregator/aggregator.processor.inc
Helper function for teaser length choices.
_aggregator_items in modules/aggregator/aggregator.module
Helper function for drupal_map_assoc.
_devel_print_object in sites/all/modules/devel/devel.module
Recursive (and therefore magical) function goes through an array or object and returns a nicely formatted listing of its contents.
_locale_batch_language_finished in includes/locale.inc
Finished callback of language addition locale import batch. Inform the user of translation files imported.
_locale_batch_system_finished in includes/locale.inc
Finished callback of system page locale import batch. Inform the user of translation files imported.
_locale_import_po in includes/locale.inc
Parses Gettext Portable Object file information and inserts into database
_node_characters in modules/node/content_types.inc
Helper function for teaser length choices.
_node_mass_update_batch_finished in modules/node/node.admin.inc
Node Mass Update Batch 'finished' callback.
_simpletest_format_summary_line in modules/simpletest/simpletest.module

Code

includes/common.inc, line 1612

<?php
function format_plural($count, $singular, $plural, array $args = array(), array $options = array()) {
  $args['@count'] = $count;
  if ($count == 1) {
    return t($singular, $args, $options);
  }

  // Get the plural index through the gettext formula.
  $index = (function_exists('locale_get_plural')) ? locale_get_plural($count, isset($options['langcode']) ? $options['langcode'] : NULL) : -1;
  // Backwards compatibility.
  if ($index < 0) {
    return t($plural, $args, $options);
  }
  else {
    switch ($index) {
      case "0":
        return t($singular, $args, $options);
      case "1":
        return t($plural, $args, $options);
      default:
        unset($args['@count']);
        $args['@count[' . $index . ']'] = $count;
        return t(strtr($plural, array('@count' => '@count[' . $index . ']')), $args, $options);
    }
  }
}
?>