-
-
Notifications
You must be signed in to change notification settings - Fork 105
v2 Pluralization
axunonb edited this page Feb 6, 2022
·
1 revision
The PluralFormatter
uses language-specific pluralization rules to choose different text for singular and plural forms. Some languages can have as many as 5 different forms.
Smart.Format("There {0:plural:is 1 item|are {} items}.", number);
// outputs "There is 1 item." or "There are 2 items."
{ Number : plural(lang) : singular | plural | more... }
Number | :plural | (lang) | singular | plural | more... |
---|---|---|---|---|---|
Any Number, like int or double
|
"plural" or "p" or implicit | 2-letter language code | the singular text | the plural text | more plural forms |
- English has two plural forms: 1 is singular, everything else is plural.
However, some languages have complex rules, with as many as 6 plural forms! Special cases for 0, 2-4, or singular used for 21, 31, etc.
So, for these languages, you should specify all plural forms, in smallest-to-largest order (eg. zero|one|two|few|many) - The default language rule is english. To use a specific rule, there are 3 ways:
- Change the default:
Smart.Default.GetFormatterExtension<PluralLocalizationFormatter>().DefaultTwoLetterISOLanguageName = "ru";
- Supply a culture info:
Smart.Format(GetCultureInfo("ru"), "{0:банан|банана|бананов}", args...)
- Specify the (lang) like this:
{0:plural(ru):банан|банана|бананов}
- Syntax, Terminology
- Placeholders and Nesting
- string.Format Compatibility
- Character Literals in Format Strings
- HTML With CSS or JavaScript
- Data Source Extensions
- Default _ DefaultFormatter
- Lists _ ListFormatter
- Choose _ ChooseFormatter
- Condition _ ConditionalFormatter
- Null _ NullFormatter
- SubString _ SubStringFormatter
- RegEx _ IsMatchFormatter
- Pluralization _ PluralLocalizationFormatter
- Localization _ LocalizationFormatter
- Templates _ TemplateFormatter
- TimeSpan _ TimeFormatter
- XML _ XElementFormatter
- Extension Methods
- Home
- Common Pitfalls
- HTML with CSS or JavaScript
- Overview
- Main Features
- Formatters
- Extra Features
- Console and StringBuilder
- TemplateFormatter
- SmartSettings to control Smart.Format behavior
- Additional Info
- License