簡體   English   中英

JavaScript中的Rails Translation變量

[英]Rails Translation variables in javascript

Rails提供了將變量傳遞給翻譯的功能:

http://guides.rubyonrails.org/i18n.html#passing-variables-to-translations

我希望能夠在客戶端(即Javascript)中使用這些文件。 這些文件已經轉換為JSON,但是我希望能夠在轉換后的字符串中設置參數。

例如:

There are %{apple_count} apples in basket ID %{basket_id}.

其中%{apple_count}%{basket_id}將被替換為參數。

這是我想在JS中使用的調用(即,我想實現origStr ):

var str = replaceParams(origStr, {apple_count: 5, basket_id: "aaa"});

我猜最好的策略是使用正則表達式。 如果是這樣,請提供一個良好的正則表達式。 但我願意聽到其他選擇。

如果您始終提供所有參數(即,從不忽略它們),並且模板中沒有使用多個參數,則無需使用正則表達式。

function replaceParams(origStr, params) {
    for (var p in params) origStr = origStr.replace("%{" + p+ "}", params[p]);
    return origStr;
}

在其他情況下,如果您只想使用正則表達式,則可以通過回調替換輕松實現:

function replaceParams(origStr, params) {
    return origStr.replace(/%{(\w+)}/g, function(m, pName){
        return params[pName];
        // this will return "undefined" if you forget to pass some param.
        // you may use `params[pName] || ""` but it would make param's value `0` (number)
        // rendered as empty string. You may check whether param is passed with
        // if (pName in params)
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM