默认情况下,如果我尝试使用readUserField: ["trivialField"]
服务或$translate
过滤器翻译不存在的密钥,则会返回密钥本身。
e.g。 translate
有没有办法改变这个(每次调用,而不是全局),以便返回$translate.instant('no.such.key') === 'no.such.key'
?
或者,null
是否提供了比此更简洁的方式来显示只有存在的翻译?
ng-translate
答案 0 :(得分:0)
有一个自定义错误处理程序,您可以在其中控制无法找到密钥时显示的文本。
https://angular-translate.github.io/docs/#/guide/17_custom-error-handler
我在此页面的示例下面复制并粘贴。
app.factory('customTranslationHandler', function () {
return function (translationID, uses) {
// return the following text as a translation 'result' - this will be
// displayed instead of the language key.
return 'NO DEFAULT KEY';
};
});
也许更适合你而不是默默地记录丢失的密钥。见https://angular-translate.github.io/docs/#/guide/16_error-handling
答案 1 :(得分:0)
更改每个调用基础的最佳方法是创建一个自定义过滤器并在其中进行转换。
$ filter允许使用代码中的所有过滤器,因此我们可以测试转换返回值,而返回null。此行为不会覆盖默认的翻译过滤器,因此您只能在需要的地方使用。
angular
.module('app')
.filter('translateNull', ['$filter', function($filter) {
return function(value) {
//Store translation to test and return
const tempValue = $filter("translate")(value);
//If translate returns the same key sent we return null
if (tempValue === value) {
return null;
} else {
return tempValue;
}
};
}]);