我正在通过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);
});
});
});
}