Angular翻译变量替换

时间:2017-05-09 15:29:50

标签: angularjs internationalization angular-translate

我想在翻译中使用变量,但我不知道如何在我的模板中使用它。

在我的HTML模板中:

 <md-input-container class="md-block">
                <md-autocomplete md-no-cache="vm.noCache" 
                                    md-search-text="user.searchUser" 
                                    md-items="userItem in vm.querySearch(user.searchUser)" 
                                    md-item-text="userItem.display"
                                    md-selected-item-change="vm.selectedItemChange(userItem, user)"
                                    md-min-length="0"
                                    required>
                    <md-item-template>
                        <span md-highlight-text="user.searchUser" md-highlight-flags="^i">{{userItem.display}}</span>
                    </md-item-template>
                    <md-not-found>
                        {{ 'user.autocomplete.no_user' | translate:'{ username: user.searchUser }' }}

                    </md-not-found>
                </md-autocomplete>
            </md-input-container>

和我的翻译文件(json):

"user": {
            "autocomplete": {
        "no_user" : "No user has been found ({{username}})",
     }
}

如何使用user.searchUser显示该消息?

非常感谢!

4 个答案:

答案 0 :(得分:12)

这里是直接在HTML模板中进行的答案:

{{ 'user.autocomplete.no_user' | translate:{ username: user.searchUser } }}

答案 1 :(得分:1)

您可以创建一个包含所有翻译参数的对象,并将其用于翻译,如下所示:

{{ 'user.autocomplete.no_user' | translate:translationParameters }}

请查看this plunker我是如何做到的,有关详细信息,请参阅<{3>}的转换过滤器中的变量替换部分的结尾部分

答案 2 :(得分:1)

这就是你在 Angular 5+ 中可以做到的

翻译文件:

{
  "HELLO": "Hello {user}"
}

模板:

{ 'HELLO' | translate: { user: "World" } }

显示:Hello World

答案 3 :(得分:-1)

{{ELEMENT_TRANSLATE|translate}}

{{ 'ELEMENT_TRANSLATE'|translate:'{value: 111 }'}}

{{ 'ELEMENT_TRANSLATE'|translate:{value: user.searchUser} }}

最后一个是最好的。