Javascript ngx translate与Angular universal在转换参数化值时存在问题

Javascript ngx translate与Angular universal在转换参数化值时存在问题,javascript,angular,server-side-rendering,angular-universal,ngx-translate,Javascript,Angular,Server Side Rendering,Angular Universal,Ngx Translate,我正在使用Angular universal将Angular 10应用程序迁移到SSR,在翻译参数化值时,我面临ngx翻译的问题 我有翻译 Bei Kauf von {quantity} 其中,该数量是我们组件的一个属性,我们通常将其转换为 {'LABEL'| translate:{quantity:1}}}我们将看到Bei Kauf von 1 但对于SSR来说,它根本不是翻译。我在页面上看到了Bei Kauf von{quantity}。我查看了很多论坛,但没有看到潜在的解决方案。任何帮

我正在使用Angular universal将Angular 10应用程序迁移到SSR,在翻译参数化值时,我面临ngx翻译的问题

我有翻译

Bei Kauf von {quantity} 
其中,该数量是我们组件的一个属性,我们通常将其转换为
{'LABEL'| translate:{quantity:1}}}
我们将看到Bei Kauf von 1

但对于SSR来说,它根本不是翻译。我在页面上看到了
Bei Kauf von{quantity}
。我查看了很多论坛,但没有看到潜在的解决方案。任何帮助都将不胜感激

这是我的翻译服务器.loader.ts

从“路径”导入{join};
从“rxjs”导入{Observable};
从'@ngx translate/core'导入{TranslateLoader};
进口{
makeStateKey,
StateKey,
转移状态
}从“@角度/平台浏览器”;
从“fs”导入*作为fs;
导出类TranslateServerLoader实现TranslateLoader{
建造师(
私有转让国:转让国,
私有前缀:string='i18n',
私有后缀:字符串='.json'
) {}
公共getTranslation(lang:string):可观察{
返回新的可观察对象((观察者)=>{
const assets\u folder=join(
process.cwd(),
“dist”,
“我的应用程序”,
“浏览器”,
“资产”,
这是前缀
);
const jsonData=JSON.parse(
fs.readFileSync(`${assets\u folder}/${lang}${this.suffix}`,'utf8')
);
//在这里,我们将翻译保存在传输状态
const key:StateKey=makeStateKey(
`传输转换-${lang}`
);
this.transferState.set(key,jsonData);
下一位观察员(杰森达);
observer.complete();
});
}
}
导出函数translateServerLoaderFactory(transferState:transferState){
返回新的TranslateServerLoader(transferState);
}
translate-browser.loader.ts

从'rxjs'导入{Observable};
从'@ngx translate/core'导入{TranslateLoader};
进口{
makeStateKey,
StateKey,
转移状态
}从“@角度/平台浏览器”;
从'@ngx translate/http loader'导入{TranslateHttpLoader};
从'@angular/common/http'导入{HttpClient};
导出类TranslateBrowserLoader实现TranslateLoader{
构造函数(私有http:HttpClient,私有transferState:transferState){}
公共getTranslation(lang:string):可观察{
const key:StateKey=makeStateKey(
`传输转换-${lang}`
);
const data=this.transferState.get(key,null);
//首先,我们正在寻找处于传输状态的翻译,
//如果找不到,http将作为回退加载
如果(数据){
返回新的可观察对象((观察者)=>{
下一步(数据);
observer.complete();
});
}否则{
返回新的TranslateHttpLoader(this.http).getTranslation(lang);
}
}
}
导出函数translateBrowserLoaderFactory(
httpClient:httpClient,
转让国:转让国
) {
返回新的TranslateBrowserLoader(httpClient,transferState);
}
app.server.module.ts

从'@angular/core'导入{NgModule};
从'@angular/platform server'导入{ServerModule,ServerTransferStateModule};
从'@angular/flex layout/server'导入{FlexLayoutServerModule};
从'@ngx translate/core'导入{TranslateModule,TranslateLoader};
从“./shared/loaders/translate server.loader”导入{translateServerLoaderFactory};
从“@angular/platform browser”导入{TransferState};
从“./app.module”导入{AppModule};
从“./app.component”导入{AppComponent};
从“~shared/services/environment.service”导入{EnvironmentService};
@NGD模块({
进口:[
应用模块,
服务器模块,
服务器传输状态模块,
TranslateModule.forRoot({
加载器:{
提供:TranslateLoader,
useFactory:translateServerLoaderFactory,
副秘书:[转让国]
}
}),
FlexLayoutServerModule,
],
提供者:[环境服务],
引导:[AppComponent],
})
导出类AppServerModule{}
app.module.ts

导入:[
....,
TranslateModule.forRoot({
加载器:{
提供:TranslateLoader,
使用工厂:translateBrowserLoaderFactory,
deps:[HttpClient,TransferState]
}
}),
]

注意:对于所有其他在翻译中没有任何参数化值的人来说,它工作正常

它应该是双花括号

Bei Kauf von {{quantity}}

谢谢你,伙计。你救了我的命。还有一个问题。如果我们有这个Bei-kaufvon{{{quantity}}{quantity,复数,=1{}=2{}=3{}=4{}=5{+}其他{+},我们该怎么办。我的意思是我需要显示如果超过5个项目是5+。有什么想法吗?对不起,我不明白(:我的意思是如何使用带角度的通用复数?对不起,我在这里无能为力。很久没有接触通用了(:甚至到目前为止还没有用ngx翻译复数。)