目前仅支持语言 {{lng}} 和块名称 {{ns}} 作为i18n.backend.loadPath
配置中的动态参数。
为了实现您的目标,您可以实现自定义 Spartacus以根据以下值CONFIG_INITIALIZER
填充您的配置:i18n.backend.loadPath
BaseSiteService.getActive()
@Injectable({ providedIn: 'root' })
export class I18nBackendPathConfigInitializer implements ConfigInitializer {
readonly scopes = ['i18n.backend.loadPath']; // declare config key that you will resolve
readonly configFactory = () => this.resolveConfig().toPromise();
constructor(protected baseSiteService: BaseSiteService) {}
protected resolveConfig(): Observable<I18nConfig> {
return this.baseSiteService.getActive().pipe(
take(1),
map((baseSite) => ({
i18n: {
backend: {
// initialize your i18n backend path using the basesite value:
loadPath: `https://backend.org/${baseSite}/messages?lang={{lng}}&group={{ns}}`,
},
},
}))
);
}
}
并在您的模块中提供它(即在 app.module 中):
@NgModule({
providers: [
{
provide: CONFIG_INITIALIZER,
useExisting: I18nBackendPathConfigInitializer,
multi: true,
},
],
/* ... */
})
注意:上述解决方案假定活动基站仅在应用启动时设置一次(默认情况下在 Spartacus 中就是这种情况)。