你可以这样做:
创建两个样式文件。
例如:styles-rtl.scss 和 styles-ltr.scss
在你的应用组件中为 html 标签创建一个渲染器:
你应该在你的构造函数中注入它:
constructor(private translationService: TranslateService, rootRenderer: RendererFactory2
) {
this.renderer = rootRenderer.createRenderer(document.querySelector('html'), null);
}
当语言改变时,将dir属性设置为你的html标签:
this.translationService.onLangChange.subscribe((event: LangChangeEvent) => {
this.renderer.setAttribute(
document.querySelector('html'), 'dir', (event.lang == 'fa') ? 'rtl' : 'ltr'
);
});
然后在你的styles.scss中导入相关的scss文件:
[dir = 'rtl'] {
@import "styles-rtl";
}
[dir = 'ltr'] {
@import "styles-ltr";
}
还有其他方法可以创建多语言应用程序,但我发现这种方法更有效。
另一种方法是在 angualr.json 文件中为每种语言创建两个单独的应用程序。