簡體   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