0

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"});

正規表現を使うのが一番いい戦略だと思います。もしそうなら、良い正規表現を提供してください。しかし、私は他のオプションを聞くことを開いています。

4

1 に答える 1

1

常にすべてのパラメーターを提供し(つまり、決して省略しない)、テンプレートでパラメーターが2回以上使用されない場合は、正規表現を使用する必要はありません。

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)
    });
}
于 2012-04-20T07:26:48.350 に答える