angularjs - Angular 翻译更新翻译表

标签 angularjs angular-translate

我创建了一个指令,它包装了 Angular-translate,并且还可以变成输入字段,以便管理员用户轻松翻译。

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

我的问题是,我似乎无法在 Angular-Translate API 中找到任何允许我访问前端缓存的内容。在成功更新 1 行后,我想直接修改翻译映射,而不必打扰数据库来获取翻译的整个映射。

我尝试过的事情:$translationCache、$translateLocalStorage、$translateCookieStorage。

有人可以启发我吗?

此外,作为奖励,我想知道是否有人知道可以在哪里公开 Angular 翻译中的翻译映射。 请注意,我不需要 Controller 中 $translate 的翻译值,因为它已经被插值了。

最佳答案

对源代码的简短了解并没有提供简单的方法。我最终解决了这个问题,使用自己的提供程序缓存了来自 $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';
    }]
});

或者,您可以修改 Angular 翻译源,并使提供者的“翻译”可通过其 $get 方法访问。

关于angularjs - Angular 翻译更新翻译表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36852190/

相关文章:

javascript - Protractor 找不到 Angular

javascript - 模拟可点击的输入表单

javascript - AngularJS/ui-bootstrap Accordion -单击时滚动到事件(打开) Accordion 的顶部

javascript - Angular 翻译功能未按预期工作

javascript - 如何加载 JSON 数组以使用 Angular-Translate 翻译 AngularJS 网页

angular - 找不到 Angular Electron 上的en.json错误

javascript - 我的 AngularJS 1.x 应用程序在 Angular 2 之后还能运行吗?

javascript - Angular : JSON filter in textarea produces a lot of slashes

javascript - AngularJS 使用 UI Router 进行翻译

javascript - Angular 翻译