在刷新用于角度应用程序的浏览器时,i18n文件夹问题

我正在通过npm run watch运行该应用程序,该监视程序在单独的端口中启动节点服务器,在不同的端口中启动angular应用程序。资产文件夹也位于其中,其中包含用于语言实现的i18n文件夹,位于src文件夹中。我在i18n文件夹中有en.json和fr.json文件,我通过ngx-translate模块使用。刷新浏览器时,该语言无法正确呈现。我使用setdefaultlang作为en,但在刷新时会出现en.json的键而不是键的值。但是当我导航时,它可以很好地呈现。可能是问题还是我该怎么办?

y4853592 回答:在刷新用于角度应用程序的浏览器时,i18n文件夹问题

您的问题是json文件尚未到达您的应用程序。

选中git issue here。有同样的问题。然后json进入您的应用程序,因此可以进行转换。

可以找到来自重定向的修复程序here

基本上是以下内容:

providers: [
  {
    provide: APP_INITIALIZER,useFactory: appInitializerFactory,deps: [TranslateService,Injector],multi: true
  }
]

并在同一文件中的上方定义工厂函数appInitializerFactory:

import { Injector,APP_INITIALIZER } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { LOCATION_INITIALIZED } from '@angular/common';

export function appInitializerFactory(translate: TranslateService,injector: Injector) {
  return () => new Promise<any>((resolve: any) => {
    const locationInitialized = injector.get(LOCATION_INITIALIZED,Promise.resolve(null));
    locationInitialized.then(() => {
      const langToSet = 'en-GB'
      translate.setDefaultLang('en-US');
      translate.use(langToSet).subscribe(() => {
        console.info(`Successfully initialized '${langToSet}' language.'`);
      },err => {
        console.error(`Problem with '${langToSet}' language initialization.'`);
      },() => {
        resolve(null);
      });
    });
  });
}
本文链接:https://www.f2er.com/3073875.html

大家都在问