为 angular 应用程序刷新浏览器时,i18n 文件夹问题

On refresh of browser for angular application, i18n folder problem

我 运行 通过 npm 运行 watch 启动应用程序,它在单独的端口启动节点服务器,angular 在不同的端口启动应用程序。资产文件夹也在那里,其中包含用于语言实现的 i18n 文件夹,并且位于 src 文件夹内。我在 i18n 文件夹中有 en.json 和 fr.json 文件,我通过 ngx-translate 模块使用它们。当我刷新浏览器时,语言没有正确呈现。我正在使用 setdefaultlang 作为 en,但是在刷新时 en.json 的键出现而不是 keys.But 的值,当我导航时它呈现良好。可能是什么问题或我应该怎么做?

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

勾选git issue here。有同样的问题。然后 json 出现在您的应用程序中,因此转换可用。

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

基本上是这样的:

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

并在同一个文件中定义工厂函数appInitializerFactory upper:

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);
      });
    });
  });
}