Angular SSR i18n如何在服务器模块中加载i18n?

时间:2020-06-15 12:16:43

标签: node.js angular typescript rxjs angular-universal

我正在尝试将i18n文件加载到服务器上,因此当有人访问该网站时,所有i18n变量都将已加载到我的ssr Web应用程序中。

这是我的 app.server.module.ts

df = pd.DataFrame( {'Code':[80.02, 82.13,80.,82.06,82.06],'Loc':['A','B','C','D','E'],'Price':[11,21,25,36,43]})
df1= pd.DataFrame({'Code':[82.06,82.06,82.13,80.02]},'Loc':['E','D','B','D'])

这是 translate-server-loader.service.ts

   Code   Loc     Price
0  82.06   E      43.0
1  82.06   D      36.0
2  82.13   B      21.0
3  80.02   D      Nan

问题在于 getTranslation()不会import { NgModule } from '@angular/core'; import { ServerModule, ServerTransferStateModule } from '@angular/platform-server'; import { BrowserModule, TransferState } from '@angular/platform-browser'; import { AppModule } from './app.module'; import { AppComponent } from './app.component'; import { TranslateServerLoader } from './translate-server-loader.service'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; export function translateFactory(transferState: TransferState) { console.log(new TranslateServerLoader('/assets/i18n','.json', transferState)); return new TranslateServerLoader('/assets/i18n','.json', transferState); } @NgModule({ imports: [ AppModule, ServerModule, ServerTransferStateModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: translateFactory, deps: [TransferState] } }), BrowserModule.withServerTransition({ appId: 'autorent' }), ], bootstrap: [AppComponent], }) export class AppServerModule { } 进行任何操作,所以我认为它不起作用吗?

此行功能为console.logged:

import { Observable } from "rxjs";
import { TranslateLoader } from '@ngx-translate/core';

declare var require: any;
import { join } from 'path';
import { makeStateKey, StateKey, TransferState } from '@angular/platform-browser';

const fs = require('fs');

export class TranslateServerLoader implements TranslateLoader {

    constructor(private prefix: string = 'i18n',
        private suffix: string = '.json',
        private transferState: TransferState) {
            console.log('Translation module loaded...');

    }

    public getTranslation(lang: string): Observable<any> {
        console.log('translating in server....');
        return Observable.create(observer => {
            console.log('THIS TEXT WONT CONSOLE LOG');
            const assets_folder = join(process.cwd(), 'dist', 'autorent', 'browser', 'assets', this.prefix);

            const jsonData = JSON.parse(fs.readFileSync(`${assets_folder}/${lang}${this.suffix}?v2`, 'utf8'));
            // Here we save the translations in the transfer-state
            const key: StateKey<number> = makeStateKey<number>('transfer-translate-' + lang);
            this.transferState.set(key, jsonData);

            observer.next(jsonData);
            observer.complete();
        });
    }
}

函数中的这一行不是:

console.log

我在做什么错了?

浏览器中视图源的结果提供了这些信息:

  console.log('translating in server....');

0 个答案:

没有答案