2017-07-18 60 views
0

我工作的一個AngularJs項目,我現在用的是翻譯過濾以下方式過濾器使用變量我的翻譯。這是我曾嘗試:與翻譯在AngularJs

在控制器:

vm.text = "This {{toReplace}} is a variable."; 
vm.myVariable = "random value"; 

在HTML:

<h2>{{vm.text | translate:'{ toReplace: vm.myVariable }'}}</h2> 

它不會取代{{toReplace}}與MYVARIABLE的內容。相反,頁面顯示「This {{toReplace}}」是一個變量。「

我該怎麼做才能做到這一點?

回答

0

這裏是爲我工作,考慮到「MYVARIABLE」的解決方案是在我的控制器中定義的變量:

<h2 data-translate>This {{vm.myVariable}} is a variable</h2> 

棘手的部分是,使用翻譯濾波器時一樣,在元素中的文本是不被顯示的文本,但是該元件的ID平移。在翻譯文件(po)中,您必須具有ID爲「This {{vm.myVariable}}是變量」的元素,包括變量的名稱。如果您需要顯示相同的文本,但數據來自不同的變量,則必須用自己的ID聲明不同的翻譯,即使只有文本的可變部分不同。

對於爲例,這必須是在翻譯文件不同的條目:

<h2 data-translate>This {{vm.myVariable2}} is a variable</h2> 
0

你是否試過使用指令而不是過濾器?事情是這樣的:

<h2 translate="vm.text" translate-values={'toReplace':vm.myVariable}"></h2> 
0

vm.text必須包含一個有效的轉換鍵,你應該在你的語言文件中定義。翻譯密鑰的值將是"This {{toReplace}} is a variable."。然後你的HTML應該正確渲染。

如果你只是想使這段文字沒有國際化的支持,你可能只是這樣做:

<h2>This {{vm.toReplace}} is a variable.</h2>