用参数选择随机I18n平移

时间:2017-03-23 16:10:21

标签: ruby ruby-on-rails-5 rails-i18n i18n-gem

在我的一个联系表格中,有一条预先填好的信息,以便候选人避免收到不良信息,并有一个初步的良好基础。

到目前为止,我使用的是单message_template,但我想在随机列表中介绍一些变种。

我的翻译需要一些变量才能正常工作

最初我有类似的东西

# 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') %>

我想切换到随机翻译字符串(即从列表中选择随机翻译),并且仍然替换变量。

这样的东西
# 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') %>

什么是有效的语法?

注意:

我试过<%= t('my_templates, name: @user.name, day: DateTime.now.strftime('B')).sample %>但是我获得的字符串的参数值没有被替换:

  

嗨%{name},好%{天}不是吗?你好吗?

1 个答案:

答案 0 :(得分:1)

我使用了sampletI18n.interpolate

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