Je crée une application de blog. J'aimerais pouvoir pluraliser le mot "article" si plus d'un "post" est "publié".
Comme ça: articles disponibles ou article disponible
Voici ce que j'ai ...
Available <%= pluralize @posts.published, "Article" %>:
J'ai essayé
Available <%= pluralize @posts.published.count, "Article" %>:
et cela fonctionne ... mais je ne veux pas le numéro. Il ne devrait pas lire les 5 articles disponibles .... il ne devrait pas avoir de numéro.
J'ai moi-même cherché la réponse à cette question et je n'ai été satisfait d'aucune des réponses existantes. Voici la solution la plus simple que j'ai trouvée:
Available <%= "Article".pluralize(@posts.published.count) %>:
La documentation est ici . Bits pertinents:
Renvoie la forme plurielle du mot dans la chaîne.
If the optional parameter count is specified, the singular form will be returned if count == 1. For any other value of count the plural will be returned. 'post'.pluralize # => "posts" 'Apple'.pluralize(1) # => "Apple" 'Apple'.pluralize(2) # => "apples"
Vous pouvez utiliser Rails Internationalization (I18n) pour accomplir cela. Dans ton config/data/en.yml
vos traductions ressembleraient à ceci:
en:
available_articles:
zero: Available Article
one: Available Article
other: Available Articles
Et selon vous, vous devriez pouvoir obtenir la traduction comme ceci:
<%= t(:available_articles, count: @posts.published.count) %>
Oui, j'ai fait comme ça, j'ai tellement aimé:
- if @post.comments.persisted.any?
h4
= t(:available_comments, count: @post.comments.count)
= render @post.comments.persisted
- else
p
| There are no comments for this post.
en:
available_comments:
one: "%{count} Comment"
other: "%{count} Comments"
Merci @Jakob W!
Vous pouvez utiliser <%= @posts.published.count > 0 ? "Available Article".pluralize(@posts.published.count) : nil %>: