2015-07-20 25 views
0

的I18n鍵:的I18n在angularjs

"step1.download":"{{n0}} Download {{n1}} Some text."

在我的html:

<span translate=step1.download translate-values="{ n0: '{{info0}}', n1: '{{info1}}'}"></span> 

在我的控制器:

$scope.download = function(){ 
     alert("fun executed"); 
     }; 
$scope.info0="<button ng-click=download()>"; 
$scope.info1="</button>"; 

我得到一個錯誤,下載功能不定義,我認爲是因爲在角度編譯之前解析了html,所以有什麼辦法可以解決這個問題問題。替代解決方案也受到讚賞。

回答

0

在HTML中使用 「翻譯編譯」 是這樣的:

<span translate="step1.download" translate-compile translate-values="{ n0: '{{info0}}', n1: '{{info1}}'}"></span> 

與我的情況一起工作,這可能取決於您使用的翻譯器。它會如果您使用「angular-translate.js」,則可以工作。

1

兩件事情:

  • 你把一個指令的轉換指令。你的代碼沒有辦法工作,因爲ng-click會在角度解析之後放入DOM中。
  • 在translate指令中將HTML作爲值並不是一個好主意。該模塊用於處理文本值而不是HTML語法。

對於你的問題,你必須做出這樣的事情:

{ 
    "step1.download":"Download", 
    "step1.someText":"some text." 
} 
在HTML

<span> 
    <button ng-click="download()"> 
     {{'step1.download'|translate}} 
    </button> 
    {{'step1.someText'|translate}} 
</span> 
+0

感謝您的回覆,但我不能分割這些字符串,所以你能告訴我如何通過添加指令來實現這一點。 –

+0

我不明白你爲什麼不能將文本分成兩部分。對我而言,如果不拆分字符串,就無法做到自己想做的事。 –

+0

第二個字符串不是一個完整的句子,所以它不會單獨進行翻譯,我們使用自己的翻譯器,而且這部分代碼更加複雜,我簡化了問題,順便提一下,我得到了解決方案發布,再次感謝。 –