format_plural
Definition
format_plural($count, $singular, $plural, $args = array(), $langcode = NULL)
includes/common.inc, line 1032
Description
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)
$langcode Optional language code to translate to a language other than what is used to display the page.
Return value
A translated string.
Related topics
| Name | Description |
|---|---|
| Formatting | Functions to format numbers, strings, dates, etc. |
Code
<?php
function format_plural($count, $singular, $plural, $args = array(), $langcode = NULL) {
$args['@count'] = $count;
if ($count == 1) {
return t($singular, $args, $langcode);
}
// Get the plural index through the gettext formula.
$index = (function_exists('locale_get_plural')) ? locale_get_plural($count, $langcode) : -1;
// Backwards compatibility.
if ($index < 0) {
return t($plural, $args, $langcode);
}
else {
switch ($index) {
case "0":
return t($singular, $args, $langcode);
case "1":
return t($plural, $args, $langcode);
default:
unset($args['@count']);
$args['@count['. $index .']'] = $count;
return t(strtr($plural, array('@count' => '@count['. $index .']')), $args, $langcode);
}
}
}
?> 