Если ваша заявка на английском языке, вы можете использовать все решения, показанные здесь.Однако, если вы планируете локализовать приложение, сообщение с поддержкой множественного числа должно быть сделано правильно.Это означает, что вам может потребоваться несколько шаблонов (от 1 до 6) в зависимости от языка, а правило выбора используемого шаблона зависит от языка.
Например, на английском языке у вас будет два шаблона
"У вас осталось {0} живых" "У вас осталось {0} жизней"
Тогда у вас будет функция Format, в которой вы передадите эти два шаблона с переменной liveAmount.
Format("You have {0} live left", "You have {0} lives left", liveAmount);
В реальном приложении вы не будете жестко кодировать строку, а будете использовать строки ресурсов.
Формат будет знать, какой язык является активным, и если английский, он будет использовать
if (count == 1)
useSingularPattern
else
usePluralPattern
Чтобы реализовать это самостоятельно, это немного сложно, но вам не нужно.Вы можете сделать проект с открытым исходным кодом, который я сделал
https://github.com/jaska45/I18N
Используя его, вы можете легко получить строку
var str = MultiPattern.Format("one;You have {0} live left;other;You have {0} lives left", liveAmount);
Вот и все.Библиотека знает, какой шаблон использовать в зависимости от переданного параметра liveAmount.Правила были извлечены из CLDR в библиотечный файл .cs.
Если вы хотите локализовать приложение, просто поместите строку с несколькими шаблонами в .resx и дайте переводчику перевести ее.В зависимости от целевого языка строка с несколькими шаблонами может содержать 1, 2, 3, 4, 5 или 6 шаблонов.