占位符的translate-default属性

时间:2015-06-12 02:12:38

标签: angularjs angularjs-directive angular-translate

我已经包含了一个在我的html中显示占位符的指令,数据源属性保存了我的翻译的关键值

app.directive("placeholderLink", function ($compile, $translate, $filter) {
        return {
            
            priority: 1001, // compiles first
            terminal: true, // prevent lower priority directives to compile after it
            compile: function (el) {
                var params = $.parseJSON(el.context.attributes['dataSource'].value);
                var key = params.pHolderKey;
                var value = $filter('translate')(key);
                var att = "";
                if (value == key)
                    att = params.pHolderMessage;                    
                else
                    att = "{{'" + key + "'|translate}}";
                el.removeAttr('placeholder-Link');
                el.attr('placeholder', att);
                var fn = $compile(el);
                return function (scope) {
                    fn(scope);
                };
            }
        };
    });

翻译的关键值在json文件中,如下所示

烯US.json

{“81”:“用户名”}

解DE.json

{ “81”: “Benutzername”}

以下是我的指示

<input type="text" id="txtusername" placeholder="{{'81'|translate}}" />

我有一个下拉菜单来改变en-US和de-DE之间的语言(Defualt languafe设置为en-US)。如果我们有密钥81的json数据(en-US&amp; de-DE),它工作正常。

如果密钥在json中可用,则html将如下所示

<input type="text" id="txtusername" placeholder="User Name" />

并且在更改语言时翻译工作正常。

如果密钥在en-US的json文件中不可用,但在de-DE中可用。然后html形成如下

{{1}}

在这种情况下,即使密钥在de-DE json中可用,翻译也不适用于其他语言。

我需要一个像占位符的translate-default这样的属性。

是否可能。

先谢谢

0 个答案:

没有答案