2016-04-25 167 views
1

我创建了一个包装角度翻译的指令,也可以变成输入字段,以便管理员用户轻松翻译。角度翻译更新翻译表

当我更新单个翻译时,我并不想在更新数据库中的1行后从我的数据库中加载整个翻译表,因为它看起来效率非常低。

我的问题是,我似乎无法找到角度翻译API中的任何内容,这将允许我访问前端缓存。我想直接修改翻译地图,而不必在成功更新1行后彻底打乱翻译的整个映射的数据库。

我试过的东西:$ translateCache,$ translateLocalStorage,$ translateCookieStorage。

请问有人能够赐教。

此外,作为奖励,我想知道是否有人找出他们可以在角度翻译中揭示翻译映射的位置。 请注意,我不想从控制器中的$ translate翻译的值,因为它已经插入。

回答

3

进入源码的简短视图并没有提供简单的方法。我解决它使用自己的供应商终于缓存从$ translateProvider.translations参考:

app.provider('translationHelper', function() { 
    this.translations = {}; 

    this.$get = function() { 
     return { 
      translations: this.translations 
     } 
    }; 
}); 

在你的应用程序做

app.config([ 
    '$translateProvider', 
    'translationHelperProvider', 
function (
    $translateProvider, 
    translationHelperProvider 
) { 
    translationHelperProvider.translations = $translateProvider.translations(); 
}]); 

并在以后使用它像

app.component('myComponent', { 
    templateUrl: 'views/components/myComponent.html', 
    controller: [ 
     'translationHelper', 
    function (
     translationHelper 
    ) { 
     // query translation 
     var translation = translationHelper.translations['de']["Your.Key.Here"]; 
     // modify translation 
     translationHelper.translations['de']["Your.Key.Here"] = 'A new value'; 
    }] 
}); 

另外,您可以修改角度翻译源,并通过$ get方法使提供者可以访问“翻译”。

+0

在配置中你做了 translationHelperProvider.translations = $ translateProvider.translations(); 它通过延迟加载更新转换时是否更新我们的translationHelper.translations? –