如何将点击功能应用于警报控制器并更改 Ionic 4 中的语言
How to apply the click function to alert controller and change the language in Ionic 4
我在我的 Ionic 4 应用程序中工作,我在 Ionic 4 中开发多语言应用程序,我使用警报控制器来显示语言,但问题是当用户 select是特定的语言。
这是我的app.component.ts:
language: any = 'en';
constructor(private translate: TranslateService) {
this.initializeApp();
}
initializeApp() {
this.platform.ready().then(() => {
this.translate.addLangs(['en', 'fr']);
this.translate.setDefaultLang('en');
const browserLang = this.translate.getBrowserLang();
this.translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');
});
}
async changeLanguage() {
const alert = await this.alertController.create({
header: 'Language',
inputs: [{
type: 'radio',
label: 'English',
value: 'en',
checked: this.language === 'en'
}, {
type: 'radio',
label: 'French',
value: 'fr',
checked: this.language === 'fr'
}],
buttons: [{
text: 'Cancel'
}, {
text: 'OK',
handler: selectedLanguage => {
this.language = selectedLanguage;
}
}]
});
await alert.present();
}
这是我的app.component.html:
<button ion-button icon-end (click)="changeLanguage()">
<span>{{language | uppercase }}</span>
<ion-icon name="arrow-dropdown"></ion-icon>
</button>
当我打开应用程序时,默认语言 selected 是英语,我想根据用户更改语言 select 警告框的语言。
我添加了 ngx-translate
插件。
这是我的app.module.ts:
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
export function HttpLoaderFactory(httpClient: HttpClient) {
return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');
}
@NgModule({
imports: [
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}) ],
})
默认 selected 语言是英语。
在 html 中使用 {{ 'ACCOUNT_TAB_LAB' | translate }}
翻译管道,我必须在每个子模块中导入 import { TranslateService } from '@ngx-translate/core';
,但我认为这不好。
我必须为此创建服务吗?
非常感谢任何帮助。
你也可以这样解决这个问题。
这是应用点击功能和使用翻译器的最佳方式。
它将解决您的问题。
我在我的 Ionic 4 应用程序中工作,我在 Ionic 4 中开发多语言应用程序,我使用警报控制器来显示语言,但问题是当用户 select是特定的语言。
这是我的app.component.ts:
language: any = 'en';
constructor(private translate: TranslateService) {
this.initializeApp();
}
initializeApp() {
this.platform.ready().then(() => {
this.translate.addLangs(['en', 'fr']);
this.translate.setDefaultLang('en');
const browserLang = this.translate.getBrowserLang();
this.translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');
});
}
async changeLanguage() {
const alert = await this.alertController.create({
header: 'Language',
inputs: [{
type: 'radio',
label: 'English',
value: 'en',
checked: this.language === 'en'
}, {
type: 'radio',
label: 'French',
value: 'fr',
checked: this.language === 'fr'
}],
buttons: [{
text: 'Cancel'
}, {
text: 'OK',
handler: selectedLanguage => {
this.language = selectedLanguage;
}
}]
});
await alert.present();
}
这是我的app.component.html:
<button ion-button icon-end (click)="changeLanguage()">
<span>{{language | uppercase }}</span>
<ion-icon name="arrow-dropdown"></ion-icon>
</button>
当我打开应用程序时,默认语言 selected 是英语,我想根据用户更改语言 select 警告框的语言。
我添加了 ngx-translate
插件。
这是我的app.module.ts:
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
export function HttpLoaderFactory(httpClient: HttpClient) {
return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');
}
@NgModule({
imports: [
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}) ],
})
默认 selected 语言是英语。
在 html 中使用 {{ 'ACCOUNT_TAB_LAB' | translate }}
翻译管道,我必须在每个子模块中导入 import { TranslateService } from '@ngx-translate/core';
,但我认为这不好。
我必须为此创建服务吗?
非常感谢任何帮助。
你也可以这样解决这个问题。
这是应用点击功能和使用翻译器的最佳方式。
它将解决您的问题。