我创建了一个指令,它包装了 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/