この場合、コントローラ内に$translate
サービスを使用できます。このサービスは変換された値を返すことができますが、非同期操作です。このため、この翻訳を受け取ったときにのみフォームを表示するには、コントローラにいくつかのフラグを追加する必要があります(この例では、vm.areFieldGenerated
を使用し、フォームと要素をng-if
で表示/非表示にします)。
だから、基本的には、ローカライズキーの配列を渡す必要があると
$translate
サービスはあなたの次のオブジェクトを返します:
{
'NAME': 'Name',
'OPT1': 'Working!',
'OPT2': 'Working indeed!'
}
を、その後、あなたのフィールドのタイトルやオプションをローカライズするために、この値を使用することができます。フィールドを生成し、オプションに変換値を割り当てるための
あなたの関数は次のようになります。
// variable assignment
vm.env = getEnv();
vm.model = {};
vm.options = {formState: {}};
vm.areFieldsGenerated = false;
generateFields();
// function definition
function generateFields() {
$translate(['NAME', 'OPT1', 'OPT2']).then(function(translationData) {
vm.fields = [
{
key: 'item',
type: 'select',
templateOptions: {
valueProp: 'id',
labelProp: 'name',
options: [
{name:'Not working!', id: 1},
{name:'Not working indeed!', id: 2}
]
},
expressionProperties: {
'templateOptions.label': transationData['NAME'],
'templateOptions.options': [
{
name: translationData['OPT1'],
id:1
},
{
name: translationData['OPT2'],
id:2
}
]
}
}
];
vm.originalFields = angular.copy(vm.fields);
vm.areFieldsGenerated = true;
});
}
私は、実施例hereを作成しました。
$translate
の例は、angular-translate.github.ioです。
いいね!ありがとう – kiosia