特定のクラスのすべての値コンバーターをトリガーして再評価する方法はありますか?
私は現在、ローカリゼーションを行う良い方法、特に翻訳された文字列の辞書を持っていることを理解しようとしているので、これを求めています。
例は次のとおりです。
値コンバーター:
export class TValueConverter {
static inject() { return [Dictionary] }
dictionary: Dictionary;
constructor(dictionary: Dictionary) {
this.dictionary = dictionary;
}
toView(key: string, replacements: any): string {
return this.dictionary.translate(key, replacements);
}
}
見る:
<template>
<p>${"hello_world" | t: {"name": "Some User"} }</p>
</template>
これは次に変換されます
<p>
Hello Some User!
</p>
ただし、ユーザーは現在の言語を変更できます。その場合、新しい言語を使用してこの値の変換を再評価したいと思います。
私の実装はhttps://github.com/zewa666/aurelia-i18nextに触発されていますが、彼らの解決策は依存関係を導入するために値コンバーターに ": currentLanguage" を追加することです。ビューで「currentLanguage」変数を使用できるようにするために、すべてのビューモデルに辞書を挿入します。
TValueConverter クラスから、それが Dictionary.lang に依存していることを通知したり、イベントを使用してそれをトリガーしたりできますか?