Вы можете использовать интерполяции и HTML-разметку внутри вашего
переводы.
См. Документацию .
Таким образом, простой тег i18n, такой как <div class="toolbar" i18n>Welcome to {{companyName}}!</div>
, должен это делать.
В отрендеренном файле .xlf, который будет выглядеть примерно так:
<trans-unit id="91073dbc0b03be401d8c83b8e9c1513c3fa87b14" datatype="html">
<source>Welcome to <x id="INTERPOLATION" equiv-text="{{ companyName }}"/>!</source>
<context-group purpose="location">
<context context-type="sourcefile">app/login/welcome-screen/welcome-screen.template.html</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
Надеюсь, что ответит на ваш вопрос:)
Редактировать на основе комментариев ниже:
Чтобы решить вашу конкретную проблему, вы можете написать свой start.template.html как:
<div style="display: none">
<span #firstTitle i18n>First title</span>
<span #secondTitle i18n>Second title</span>
<span #thirdTitle i18n>Third title</span>
</div>
<div>{{ title }}</div>
Писать скрытые элементы с помощью тегов i18n
- это обычный обходной путь, поскольку вы не можете переводить внутри компонентов или служб прямо сейчас. (для получения дополнительной информации см. сообщение )
В файле start.component.ts вы можете подписаться на изменения маршрутизатора и установить соответствующий заголовок, например:
@Component({
selector: 'toolbar',
templateUrl: './toolbar.component.html',
styles: []
})
export class StartComponent implements OnInit {
public title : string;
@ViewChild('firstTitle') firstTitle: ElementRef<HTMLSpanElement>;
@ViewChild('secondTitle') secondTitle: ElementRef<HTMLSpanElement>;
@ViewChild('thirdTitle') thirdTitle: ElementRef<HTMLSpanElement>;
constructor(private router: Router) {}
ngOnInit() {
this.router.events.subscribe((event) => {
if(event.url) {
setTitleByUrl(event.url);
}
});
}
private setTitleByUrl(url: string) {
if (url === 'firstUrl') {
title = this.firstTitle.nativeElement.textContent;
} else if (url === 'secondUrl') {
title = this.secondTitle.nativeElement.textContent;
} else if (url === 'thirdUrl') {
title = this.thirdTitle.nativeElement.textContent;
}
}
}
Здесь вы подписываетесь на Angular router (подробнее смотрите здесь ) и устанавливаете заголовок.