私はAngular 7で国際化のためにngx-translateを使用し、bootstrapベースのAdminLTE3を使用してアプリケーションを開発しています。2つのcssがあります。
RTL方向であるアラビア語を選択した場合、bootstrap_rtl.cssをロードしてbootstrap_ltr.cssをアンロードする方法。
<div class="dropdown-menu dropdown-menu-sm dropdown-menu-right">
<a class="dropdown-item" (click)="useLanguage('en')">
English
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" (click)="useLanguage('ar')">
Arabic
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" (click)="useLanguage('ta')">
Russian
</a>
</div>
export class NavbarComponent implements OnInit {
constructor(private translate: TranslateService) { }
ngOnInit() {
}
useLanguage(language: string) {
this.translate.use(language);
}
}
rtl
またはltr
の場合、現在のテーマのフラグとして翻訳ファイルにキーを作成できます。この値により、選択した言語のベースが変更されます。
style.scss
.ltr {
@import 'themes/_en';
}
.rtl {
@import 'themes/_ar';
}
_ar.json
{
"currentTheme":"rtl"
}
_en.json
{
"currentTheme":"ltr"
}
app.template
<div [ngClass]="'currentTheme' | translate"> // ????
{{'currentTheme' | translate}}
<p class="base-align">
<hello name="{{ name }}"></hello>
Start editing to see some magic happen :)
</p>
theme <button (click)="useLanguage('en')">English</button>
<button (click)="useLanguage('ar')">Arabic</button>
</div>
言語が変更されると、currentThemeの値が変更され、スタイルが変更されます