角度翻译更新翻译表

时间:2016-04-25 22:26:01

标签: angularjs angular-translate

我创建了一个包含angular-translate的指令,并且还可以转换为输入字段,以方便管理员用户进行翻译。

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

我的问题是,我似乎无法在angular-translate API中找到任何可以访问前端缓存的内容。我想直接修改翻译地图,而不必在我成功更新1行后为我的翻译的整个映射打扰数据库。

我尝试的东西:$ translationCache,$ translateLocalStorage,$ translateCookieStorage。

请有人开导我。

另外,作为奖励,我想知道是否有人想出他们可以在角度翻译中公开翻译映射的位置。 请注意,我不希望控制器中的翻译值来自$ translate,因为它已经被插值。

1 个答案:

答案 0 :(得分:4)

对源代码的简短介绍没有提供简单的方法。我最终解决了它使用自己的提供程序从$ 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方法从提供者处进行“翻译”。