Angular 带有@Input() 的组件的 i18n 翻译
Angular i18n translation for component with @Input()
我的组件本质上是 <ion-item>
我可以将标签等传递给。我想使用 i18n 翻译标签。
这是一个精简的例子:
<app-form-text
labelIn="TextToBeTranslated"
[formControlIn]="formGroup.controls.someControl">
</app-form-text>
<ion-item>
<ion-label>
<h2>{{ labelIn }}</h2>
</ion-label>
<ion-input [formControl]="formControlIn"></ion-input>
</ion-item>
如何翻译 labelIn
文本?
您必须加载
import { TranslateModule } from '@ngx-translate/core';
在app.module.ts
然后您可以将翻译服务与键值文本一起使用:
src/assets/i18n/en.json
{
"Sitetitle": "Angular Multi Language Site",
"Name": "Name",
"NameError": "I am sure you must have a name!",
"Email": "Email address",
"PhoneNo": "Phone No",
"Password": "Password",
"Bio": "Enter bio",
"TermsConditions": "I agree to terms and conditions.",
"Submit": "Submit"
}
还有de.json
在您的页面中使用服务并设置默认语言:
export class AppComponent {
constructor(
public translate: TranslateService
) {
translate.addLangs(['en', 'de']);
translate.setDefaultLang('en');
}
}
通过以下方式切换语言:
switchLang(lang: string) {
this.translate.use(lang);
}
use it in your view:
<div class="container">
<form>
<div class="form-group">
<label>{{'Name' | translate}}</label>
<input type="text" class="form-control">
<small class="text-danger">{{'NameError' | translate}}</small>
</div>
<div class="form-group">
<label>{{'Email' | translate}}</label>
<input type="email" class="form-control">
</div>
<div class="form-group">
<label>{{'PhoneNo' | translate}}</label>
<input type="tel" class="form-control">
</div>
因为我不想使用 ngx-translate 而是使用 angulars 默认翻译,所以我就是这样做的:
只需在i18n-
后面加上入参名即可翻译
<app-form-text i18n-labelIn
labelIn="TextToBeTranslated"
[formControlIn]="formGroup.controls.someControl">
</app-form-text>
我的组件本质上是 <ion-item>
我可以将标签等传递给。我想使用 i18n 翻译标签。
这是一个精简的例子:
<app-form-text
labelIn="TextToBeTranslated"
[formControlIn]="formGroup.controls.someControl">
</app-form-text>
<ion-item>
<ion-label>
<h2>{{ labelIn }}</h2>
</ion-label>
<ion-input [formControl]="formControlIn"></ion-input>
</ion-item>
如何翻译 labelIn
文本?
您必须加载
import { TranslateModule } from '@ngx-translate/core';
在app.module.ts
然后您可以将翻译服务与键值文本一起使用:
src/assets/i18n/en.json
{
"Sitetitle": "Angular Multi Language Site",
"Name": "Name",
"NameError": "I am sure you must have a name!",
"Email": "Email address",
"PhoneNo": "Phone No",
"Password": "Password",
"Bio": "Enter bio",
"TermsConditions": "I agree to terms and conditions.",
"Submit": "Submit"
}
还有de.json
在您的页面中使用服务并设置默认语言:
export class AppComponent {
constructor(
public translate: TranslateService
) {
translate.addLangs(['en', 'de']);
translate.setDefaultLang('en');
}
}
通过以下方式切换语言:
switchLang(lang: string) {
this.translate.use(lang);
}
use it in your view:
<div class="container">
<form>
<div class="form-group">
<label>{{'Name' | translate}}</label>
<input type="text" class="form-control">
<small class="text-danger">{{'NameError' | translate}}</small>
</div>
<div class="form-group">
<label>{{'Email' | translate}}</label>
<input type="email" class="form-control">
</div>
<div class="form-group">
<label>{{'PhoneNo' | translate}}</label>
<input type="tel" class="form-control">
</div>
因为我不想使用 ngx-translate 而是使用 angulars 默认翻译,所以我就是这样做的:
只需在i18n-
后面加上入参名即可翻译
<app-form-text i18n-labelIn
labelIn="TextToBeTranslated"
[formControlIn]="formGroup.controls.someControl">
</app-form-text>