Итак, моя область применения заключается в том, что в режиме разработки я показываю на странице строки перевода (например, оранжевым цветом).
Итак, у нас есть канал перевода
import { Pipe, PipeTransform } from '@angular/core';
import { TranslationService } from 'app/services/translation.service';
const getByKey = require('lodash.get');
@Pipe({
name: 'translate'
})
export class TranslatePipe implements PipeTransform {
constructor(public _translation: TranslationService) {}
transform(value: string, args?: string): any {
console.log('KEY: ', value, 'ENGLISH', args);
return getByKey(this._translation.store, value) || args;
}
}
и мы используем его в нашем представлении, например
{{ 'global.key' | translate 'Translated text' }}
работает отлично...
теперь мы хотели бы очистить те, которые переведены с помощью конвейера.... чтобы они были видны на странице... чтобы дать нашей странице перевода лучший обзор того, что происходит (что было переведено и что до сих пор отсутствует)
Теперь, если бы мы использовали
это было бы просто, было бы что-то вроде этого
import { Pipe, PipeTransform } from '@angular/core';
import { TranslationService } from 'app/services/translation.service';
import { DomSanitizer } from '@angular/platform-browser';
const getByKey = require('lodash.get');
@Pipe({
name: 'translate'
})
export class TranslatePipe implements PipeTransform {
constructor(public _translation: TranslationService, private _sanitizer: DomSanitizer) {}
transform(value: string, args?: string): any {
console.log('KEY: ', value, 'ENGLISH', args);
return this._sanitizer.bypassSecurityTrustHtml('<span class="translated">' + (getByKey(this._translation.store, value) || args) + '</span>');
}
}
но мы не... мы не используем innerHTML.... и реализовать его на кросс-сайте было бы непростой задачей...
так есть ли другой способ поместить оболочку html/css в наши переведенные тексты?
любая идея приветствуется