/
githubmirror
/
angular
Обзор
Документация
Войти
/
githubmirror
/
angular
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/compiler/src/i18n/i18n_html_parser.ts
85 строк
2 KB
Matthieu Riegler
refactor(compiler): Remove the interpolation config (#64071)
29 сен 2025, 22:29
29 сен 2025, 22:29
04462ed
Код
Авторство
О чём код?
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ import {MissingTranslationStrategy} from '../core'; import {HtmlParser} from '../ml_parser/html_parser'; import {TokenizeOptions} from '../ml_parser/lexer'; import {ParseTreeResult} from '../ml_parser/parser'; import {Console} from '../util'; import {digest} from './digest'; import {mergeTranslations} from './extractor_merger'; import {Serializer} from './serializers/serializer'; import {Xliff} from './serializers/xliff'; import {Xliff2} from './serializers/xliff2'; import {Xmb} from './serializers/xmb'; import {Xtb} from './serializers/xtb'; import {TranslationBundle} from './translation_bundle'; export class I18NHtmlParser implements HtmlParser { // @override getTagDefinition: any; private _translationBundle: TranslationBundle; constructor( private _htmlParser: HtmlParser, translations?: string, translationsFormat?: string, missingTranslation: MissingTranslationStrategy = MissingTranslationStrategy.Warning, console?: Console, ) { if (translations) { const serializer = createSerializer(translationsFormat); this._translationBundle = TranslationBundle.load( translations, 'i18n', serializer, missingTranslation, console, ); } else { this._translationBundle = new TranslationBundle( {}, null, digest, undefined, missingTranslation, console, ); } } parse(source: string, url: string, options: TokenizeOptions = {}): ParseTreeResult { const parseResult = this._htmlParser.parse(source, url, {...options}); if (parseResult.errors.length) { return new ParseTreeResult(parseResult.rootNodes, parseResult.errors); } return mergeTranslations(parseResult.rootNodes, this._translationBundle, [], {}); } } function createSerializer(format?: string): Serializer { format = (format || 'xlf').toLowerCase(); switch (format) { case 'xmb': return new Xmb(); case 'xtb': return new Xtb(); case 'xliff2': case 'xlf2': return new Xliff2(); case 'xliff': case 'xlf': default: return new Xliff(); } }