我创建了一个包含angular-translate的指令,并且还可以转换为输入字段,以方便管理员用户进行翻译。
当我更新单个翻译时,我真的不想在更新数据库中的1行后从我的数据库加载整个翻译表,因为它看起来非常低效。
我的问题是,我似乎无法在angular-translate API中找到任何可以访问前端缓存的内容。我想直接修改翻译地图,而不必在我成功更新1行后为我的翻译的整个映射打扰数据库。
我尝试的东西:$ translationCache,$ translateLocalStorage,$ translateCookieStorage。
请有人开导我。
另外,作为奖励,我想知道是否有人想出他们可以在角度翻译中公开翻译映射的位置。 请注意,我不希望控制器中的翻译值来自$ translate,因为它已经被插值。
答案 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方法从提供者处进行“翻译”。