【发布时间】:2019-09-02 14:40:09
【问题描述】:
我正在制作一个可以使用 Ionic4 更改语言的移动应用程序。我基本上遵循了这个教程:https://www.freakyjolly.com/ionic-4-adding-multi-language-translation-feature-in-ionic-application-using-ngx-translate/.
我收到了这个错误: ERROR 错误:未捕获(承诺中):错误:模板解析错误: 找不到管道“翻译”(“
[错误->] {{ '文本' |翻译 }} 默认”): ng:///ConfigurePageModule/ConfigurePage.html@16:2
我一直在阅读其他人有类似问题但仍然无法解决的其他帖子。
我的 app.module.ts
import { HttpClientModule, HttpClient } from '@angular/common/http';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { TranslateConfigService } from './translate-config.service';
export function LanguageLoader(http: HttpClient) {
return new TranslateHttpLoader(http, 'assets/i18n/', '.json');
}
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule, AngularFireModule.initializeApp(environment.firebase), IonicRatingModule, IonicSelectableModule, IonicStorageModule.forRoot(),
IonicModule.forRoot(),
AppRoutingModule,
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (LanguageLoader),
deps: [HttpClient]
}
})
],
providers: [
StatusBar, Firebase, PhotoViewer, HTTP, Toast,
AngularFireDatabase,
CallNumber,
EmailComposer,
AngularFireAuth, AngularFirestore,
SplashScreen, InAppBrowser, TranslateConfigService,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
SocialSharing,
File
],
bootstrap: [AppComponent]
})
export class AppModule { }
我的翻译-config.service.ts
import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
@Injectable({
providedIn: 'root'
})
export class TranslateConfigService {
constructor(
private translate: TranslateService
) { }
getDefaultLanguage() {
let language = this.translate.getBrowserLang();
this.translate.setDefaultLang(language);
return language;
}
setLanguage(setLang) {
this.translate.use(setLang);
}
}
我的 configure.page.ts
import { Component, OnInit, NgModule } from '@angular/core';
import { ThemeService } from '../theme.service';
import { TranslateConfigService } from '../translate-config.service';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'app-configure',
templateUrl: './configure.page.html',
styleUrls: ['./configure.page.scss'],
})
@NgModule({
imports: [TranslateModule]
})
export class ConfigurePage implements OnInit {
selectedLanguage: string;
constructor(private theme: ThemeService, private translateConfigService: TranslateConfigService) {
this.selectedLanguage = this.translateConfigService.getDefaultLanguage();
}
ngOnInit() {
}
languageChanged() {
this.translateConfigService.setLanguage(this.selectedLanguage);
console.log(this.selectedLanguage);
}
}
我的configure.page.html
<ion-content>
{{ 'text' | translate }}
<div style="padding:10px;">
<h5 style="">Configure sus preferencias</h5>
<ion-list>
<ion-item>
<ion-label>Select Language</ion-label>
<ion-select placeholder="Select One" [(ngModel)]="selectedLanguage" (ionChange)="languageChanged()">
<ion-select-option value="es">Español</ion-select-option>
<ion-select-option value="en">English</ion-select-option>
</ion-select>
</ion-item>
</ion-list>
</div>
</ion-content>
我的 en.json
{"title": "Ionic 4 多语言翻译","text": "这是在应用程序中显示翻译的随机文本"
}
我的 es.json
{"title": "Esta en ESpañoool", "text": "Texto aleatorio"}
json 文件在 assets/i18n 中,但我没有那个文件夹,所以我手动创建了。会不会是这个问题?
【问题讨论】: