RTLCss 是一个旨在用作全局包而不是依赖项的工具,你给它一个基于 LTR 的样式表,你就会得到相应的 RTL css。它还有一个简化流程的 CLI:
RTLSCss CLI Guide。
至于使用 ngx-translate 处理 RTL 方向,我在每种语言 .json 文件中都有一个“dir”属性,其值为“ltr”或“rlt”,请参阅此插件:
https ://plnkr.co/edit /oPXmAS?p=预览
使用该“dir”属性,您可以设置一个全局容器 div,其属性 dir 具有该“dir”值,如果该值为“rtl”,还可以向其添加一个特殊类(请参阅前面的 plunker)。您可以为“rtl”语言(字体系列、大小...)设置任何特殊的 css 属性。
@Component({
selector: 'my-app',
template: `
<div dir="{{ 'dir' | translate }}" [class.rtl]="('dir' | translate) === 'rtl'">
<h2>{{ 'HOME.TITLE' | translate }}</h2>
<label>
{{ 'HOME.SELECT' | translate }}
<select #langSelect (change)="translate.use(langSelect.value)">
<option *ngFor="let lang of translate.getLangs()" [value]="lang" [selected]="lang === translate.currentLang">{{ lang }}</option>
</select>
</label>
</div>
`,
styles: ['.rtl { color: red; }']
})
如果您不想使用全局 div 并想在 body 标记中设置它,则必须在 app.component 中注入一个渲染器,如此答案中所述:Angular2 add class to body tag