2017-03-23 1 views
0

Sur l'un de mes formulaires de contact, il y a un message pré-rempli afin que les candidats évitent les messages malveillants et disposent d'une bonne base de travail initiale.Choisir la traduction I18n aléatoire avec les paramètres

Jusqu'ici j'utilisais un seul message_template, mais j'aimerais introduire une certaine variété avec une liste aléatoire.

Ma traduction a besoin de quelques variables pour fonctionner correctement

Au départ, j'avais quelque chose comme ça

# locales/en.yml 
en: 
    message_template: "Hello %{name}, how are you on this %{day} !" 

# my_view.html.erb 
<%= t(:my_template, name: @user.name, day: DateTime.now.strftime('B') %> 

Je voudrais passer à une chaîne de traduction aléatoire (par exemple choisir une traduction aléatoire dans une liste), ET encore remplacer les variables.

Quelque chose comme

# locales/en.yml 
en: 
    message_templates: 
    - "Hello %{name}, how are you on this %{day} !" 
    - "Hi %{name}, nice %{day} isn't it ? how are you ?" 

# my_view.html.erb 
<%= t('my_templates.sample'), name: @user.name, day: DateTime.now.strftime('B') %> 

Quelle serait une syntaxe de travail?

REMARQUE:

J'ai essayé <%= t('my_templates, name: @user.name, day: DateTime.now.strftime('B')).sample %> Mais j'obtenir des cordes avec des valeurs non param substitués:

Salut% {name}, belle% {jour} est pas? Comment allez-vous ?

+0

Je demande aussi comment je peux vérifier que (par exemple en utilisant capybara) –

Répondre

0

J'ai utilisé un combo de sample, t et I18n.interpolate

<%= I18n.interpolate(
    t('my_templates').sample, 
    name: @user.name, 
    day: DateTime.now.strftime('B') 
%>