我会说这是可能的,但不推荐。根据@Yanhao 回答中的 cmets,您有两个完全独立的字符串,我想说它们应该是您的 yaml 文件中的两个单独条目:
report_name: My report
report_name_with_date: My report on %{date}
由于date 的存在决定了要显示的字符串,您也许可以在控制器方法的params 哈希中测试它的存在,将标题分配给变量,然后在视图中使用它.也许是这样的:
report_date = params[:report_date]
if report_date && report_date.is_a?(Date)
@report_name = I18n.t('report_name_with_date', date: report_date.to_s)
else
@report_name = I18n.t('report_name')
end
如果您想要完全按照您所描述的行为,则无论如何您都需要两个 yaml 条目,并且您将有额外的卷积,并且您将这样做一个 I18n no-no 通过将两个字符串连接在一起创建一个字符串,它假设一个固定的语法句子结构(更不用说这让翻译者陷入困境):
report_name_with_date: My report%{on_date}
on_date: on %{date}
代码如下:
report_date = params[:report_date]
if report_date && report_date.is_a?(Date)
on_date = I18n.t('on_date', date: report_date.to_s)
@report_name = I18n.t('report_name_with_date', on_date: " #{on_date}")
else
@report_name = I18n.t('report_name_with_date', on_date: nil)
end
所以,总而言之,我会说使用两个单独的完整字符串,就像在第一个示例中一样。