[英]ROR: Localised Message String Variable Substitution
我试图找出在我的ruby on rails应用程序中替换本地化消息字符串中的多个变量/占位符的最佳方法。 当替换单个占位符时,我使用了令人满意的:
在en.yml中:url_borked:“无法加载URL:$ url。” 在视图中:t(:url_borked)[“$ url”] = request.url
但这不适合多个占位符。 它看起来很难看,而且它实际上并不起作用,例如:
在en.yml中:
url_borked: "The URL: $url is badly formatted, perhaps you meant: $url_clean"
在视图中:
(t(:url_borked)["$url"] = request.url)["url_clean") = @suggested_url
我已经尝试过使用String :: sub,但是因为丑陋而对它不满意。 例如:
(t(:url_borked).sub("$url", request.url).sub("url_clean", @suggested_url)
如果要替换一个占位符的多个实例,它也不起作用。 例如:
bad_url: "$url cannot be loaded, please try $url another time"
我也考虑过printf函数,但这不适用于本地化,因为占位符的相对位置可能会根据转换而改变。
是否有正确的方法来执行此消息占位符替换?
谢谢。
为什么不:
t(:url_borked, :url=>request.url, :url_clean=>@suggested_url)
?
好吧,我有一个脑波,并且更仔细地查看了I18n :: translate函数,并在其中找到了“插值”功能。
例如
I18n.t :foo, :bar => 'baz' # => 'foo baz'
正是我需要的。 有趣的是,在我最终决定向人群寻求解决方案后,我会解决这个问题:-)
干杯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.