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