この質問は、サブコンテキスト内のデータへのパスを使用して、dust.js テンプレート システムを使用することに関するものです。私の意図は、文字列へのキーのマップを使用して i18n をサポートすることです。
次のようなデータが与えられた場合:
{i18n : { firstname : "First Name" },
people : [
{"name" : "Moe"},
{"name" : "Curly"}
]}
ほこりでは、セクションを使用して各人物をリストできます。
{#people}
{name}
{/people}
また、パスを使用して firstname i18n 文字列にアクセスできます。
{i18n.firstname}
しかし、以下は機能しません。
{#people}
{i18n.firstname}: {name}
{/people}
実際、ドキュメントには具体的に次のように記載されています。
脆弱で紛らわしい参照を避けるために、パスはコンテキスト スタックを逆戻りすることはありません。親コンテキスト内で使用可能なキーにドリルダウンする必要がある場合は、キーをパラメーターとして渡します。
そのため、キーをパラメーターとして渡してみます。
{#people i18n=i18n}
{i18n.firstname}: {name}
{/people}
しかし、これはうまくいきません。ダストホームページでこれを試してみると、コンパイルされたテンプレートに次のコードが含まれていることがわかります。
"i18n": ctx.get("i18n")
これにより、上記の例はうまくいくはずだと思います。
それで、何が得られますか?どうすればこれを機能させることができますか?
注:以下は機能します。
{#people firstname=i18n.firstname}
{firstname}: {name}
{/people}
しかし、ピープルコンテキスト内で多数の i18n キーにアクセスする必要がある場合、これはうまく機能しません。