Muitas vezes, ao gerar mensagens para mostrar ao usuário, a mensagem conterá uma série de algo que desejo informar ao cliente.
Vou dar um exemplo: o cliente selecionou uma série de itens de 1 em diante e clicou em excluir. Agora, quero deixar uma mensagem de confirmação para o cliente e mencionar o número de itens que ele selecionou para minimizar a chance de ele cometer um erro ao selecionar um monte de itens e clicar em excluir quando ele só deseja excluir um dos eles.
Uma maneira é fazer a mensagem genérica assim:
int noofitemsselected = SomeFunction();
string message = "You have selected " + noofitemsselected + " item(s). Are you sure you want to delete it/them?";
O "problema" aqui é o caso em que noofitemselected
é 1, e temos que escrever item e ele em vez de itens e eles .
Minha solução normal será algo assim
int noofitemsselected = SomeFunction();
string message = "You have selected " + noofitemsselected + " " + (noofitemsselected==1?"item" : "items") + ". Are you sure you want to delete " + (noofitemsselected==1?"it" : "them") + "?";
Isso fica muito longo e muito desagradável muito rápido se houver muitas referências à pluralidade de números dentro do código, e a mensagem real ficar difícil de ler.
Portanto, minhas perguntas são simples. Existe alguma maneira melhor de gerar mensagens como esta?
EDITAR
Vejo que muitas pessoas ficaram muito presas no caso de eu ter mencionado que a mensagem deveria ser exibida dentro de uma caixa de mensagem e simplesmente deu uma resposta de como evitar o uso da caixa de mensagem, e isso é bom .
Mas lembre-se de que o problema de pluralização também se aplica a textos em outros lugares do programa além de caixas de mensagens. Por exemplo, um rótulo ao lado de uma grade exibindo o número de linhas selecionadas na grade terá o mesmo problema em relação à pluralização.
Portanto, isso se aplica basicamente à maioria do texto que é gerado de alguma forma a partir de programas, e então a solução não é tão simples quanto apenas mudar o programa para não produzir mais texto :)