繁体   English   中英

ROR:本地化消息字符串变量替换

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM