pipe - 找不到管道“翻译” Ionic 4
问题描述
我正在制作一个可以使用 Ionic4 更改语言的移动应用程序。我基本上遵循了本教程: https ://www.freakyjolly.com/ionic-4-adding-multi-language-translation-feature-in-ionic-application-using-ngx-translate/ 。
我收到此错误:错误错误:未捕获(承诺):错误:模板解析错误:找不到管道“翻译”(“
[错误->] {{ '文本' | 翻译 }} 默认”):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>
my en.json {"title": "Ionic 4 Multi Language Translation","text": "这是在应用程序中显示翻译的随机文本"
} my es.json {"title": "Esta en ESpañoool", "text ": "文本 aleatorio"}
json 文件在 assets/i18n 中,但我没有那个文件夹,所以我手动创建了。可能是这个问题吗?
解决方案
我没有看到您也将其放入页面级模块文件中。
如果您在 Ionic Academy 上查看Simon 的教程,您会看到“使用 ngx 翻译服务、管道和指令”下有一个额外的部分。
对于您的项目,您需要打开configure.module.ts
并添加TranslateModule
如下内容:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { ConfigurePage } from './home.page';
import { TranslateModule } from '@ngx-translate/core';
@NgModule({</ul>
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild([
{
path: '',
component: ConfigurePage
}
]),
TranslateModule
],
declarations: [ConfigurePage]
})
export class ConfigurePageModule {}
我在 JollyFreaky 教程底部的第一条评论中也看到了这种可能的变体,所以如果这不起作用,请尝试像这样导入它:
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild([
{
path: '',
component: ConfigurePage
}
]),
TranslateModule.forChild()
// etc
推荐阅读
- android - 在 Android Studio 中使用来自 SQLite 的数据填充 ExpandableListView
- javascript - 停止额外的间隔
- python - 如何处理 ML 分类中的字符串数据
- python-multiprocessing - python3中multiprocessing.Lock的共享字典
- javascript - setTimeout 在 iOS 中立即调用,同时启用模态视图,因此模态不会出现
- python - Tkinter Canvas.create_oval 不更新颜色
- perl - 通过 perl 更新查询时出现解析错误
- python - keras, scikit-learn, python, 二元分类混淆矩阵(我可能有bug)
- javascript - JavaScript RegEx 不以 (.js|.jsx|.scss) 结尾
- android - java.lang.OutOfMemoryError:无法分配 7144212 字节分配,其中 4194304 字节和 4MB 直到 OOM