Ionic ngx-translate给我资产/ i18n / .json 404(未找到)

时间:2018-03-16 19:20:27

标签: ionic-framework ionic2

在我的Ionic应用程序上,ngx-translate在控制台上给我这条消息:

  

.... assets / i18n / .json 404(未找到)

关于HttpErrorResponse的另一个细节

所以我在BROWSER上的应用程序一直给出这个错误,当我构建在手机上使用时,它只是触发一条带有此错误的警告消息并关闭应用程序

我的设置: Android系统。 “cordova-plugin-crosswalk-webview”:“^ 2.4.0”< - LITE “@ ngx-translate / core”:“^ 9.1.1”, “@ ngx-translate / http-loader”:“^ 2.0.1”, 离子3

这是我的 app.module.ts

import { HttpClientModule, HttpClient } from '@angular/common/http';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';

export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http, '../assets/i18n/', '.json');
}

imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    HttpClientModule,
    TranslateModule.forRoot({
        loader: {
            provide: TranslateLoader,
            useFactory: HttpLoaderFactory,
            deps: [HttpClient]
        }
    })

我看到其他用户遇到了

的问题
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, '../assets/i18n/', '.json');

将它改为Http而不是HttpClient,但对我没用。打字稿告诉我http必须是HttpClient类型。

这是我的 app.component.ts

import { TranslateService } from '@ngx-translate/core';
.
.
.
constructor(
    private translateService: TranslateService,
    public platform: Platform,
    public statusBar: StatusBar,
    public splashScreen: SplashScreen
  ) {


    this.initializeApp();

  }

initializeApp() {
    this.platform.ready().then(() => {
      this.statusBar.styleDefault();
      this.splashScreen.hide();

      // this.setAppTranslation();
      this.translateService.addLangs(["en", "pt"]);
      this.translateService.setDefaultLang('en');
      this.translateService.use('en');

    });
  }

我已按照本教程将该功能应用于我的应用: https://www.gajotres.net/ionic-2-internationalize-and-localize-your-app-with-angular-2/

任何人都可以帮助我至少理解吗?

我的资产/ i18n文件夹有2个文件: en.json pt.json

1 个答案:

答案 0 :(得分:2)

我以前遇到过这个问题,试试这两件事:

将您的装载机更改为此(如@Mohsen所说):

timeAfterProcess = [NSDate timeIntervalSinceReferenceDate];

你的useFactory就是这样:

return new TranslateHttpLoader(http, './assets/i18n/', '.json');

重要提示:确保您的资源文件夹处于此级别:

/ src / assets /