我已经阅读了很多关于 Angular 2+ i18n 的内容,并且一直在寻找尝试构建动态组件的最佳方法。
问题:
- i18n 无法将变量文本转换为动态的 xlf 文件
- i18n 使得使用 i18n 属性制作带有文本的动态组件变得很困难
可能的解决方案:
即使我们不能在 i18n 的变量中使用动态字符串来生成语言资源文件时,我们仍然应该能够创建组件并将文本传递给它们。对于下面的示例,是一种<app-error>
用于显示输入错误消息和动画的表单。将有其他形式,因此<app-error>
组件必须是可重用的。
考虑到其他表单组件的可重用性,我做了类似于以下的事情。这种方式允许传递文本并使用嵌入将已翻译的文本注入错误消息<app-error>
组件。
form.component.html
<app-error
i18n="Error | form validation">
Please enter a first name.
</app-error>
应用程序错误.component.html
<li>
<ng-content></ng-content>
</li>
我能够想出上述解决方案以正常工作,因为 i18n 将拾取并翻译它以及文本被正确注入<ng-content>
。所以这看起来是一个很好的解决方案,对吧?
我的想法是必须有更好的方法将翻译后的文本传递给组件,或者能够利用 i18n 构建动态组件。有没有可能的解决方案?