对于我的应用中的所有静态文本,我使用i18n
,但现在我遇到了这样的情况。在我的service.ts文件中,我有一些像
sources = [
{ title: 'Phone', description: 'phone description', icon: 'phone', type: 'phone' },
{ title: 'Chat', description: ' Chat description', icon: 'chat', type: 'chat' },
{ title: 'Email', description: 'Email description', icon: 'mail_outline', type: 'email' }
];
然后在我的HTML中我*ngFor
虽然这样,问题是我无法在HTML中执行i18n
。目前的解决方案是在我的TS文件中获取用户语言或浏览器语言,如果我没有用户语言,然后从服务中获取不同的JSON,具体取决于此。
任何人都可以想到另一种解决方案或解决方法吗?
谢谢
答案 0 :(得分:0)
您可能想研究using the select option的角度平移。那对我来说差不多。
哦,您可能想要跳过他们建议的仅使用源语言中的伪表达式的部分,我发现这不必要地弄乱了事情。而且,如果您要分发xlf文件进行翻译,则无论如何都将需要源文本,而“ ng xi18n”仍然会为您复制所有多余的文本。因此,我的模板如下所示:
...<button class="tab" *ngFor="let tab of tabService.tabs">
<label i18n="|tab categories@@toolbarTabName">
{ tab.key, select, realTimeEvents {Real-Time} reporting {Reporting} status {Status} dashboards {Dashboards} configuration {Configuration} }
</label>
</button>...
其中tabs.key是参数,其值对应于翻译文件和模板的“选择”部分之后{}之前的值。
还有我的messages.nl.xlf文件:
<source>{VAR_SELECT, select, realTimeEvents {Real-Time Event Messages} reporting {Reporting} status {Status} dashboards {Dashboards} configuration {Configuration}}</source>
<target>{VAR_SELECT, select, realTimeEvents {Real-Time Gebeurtenisse} reporting {Rapportering} status {Status} dashboards {Dashboards} configuration {Configuratie}}</target>
(忽略翻译的质量,这仍然是很多POC,但它可以工作;-))