我认为你必须实现一个定制TranslateLoader
,就像这GitHub issue中提到的那样.
这LazyTranslateLoader
将发送获取当前语言的JSON文件的请求.如果返回的响应不成功,它将获取默认语言的JSON文件.
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { Observable } from 'rxjs';
import { catchError } from 'rxjs/operators';
export const DEFAULT_LANG = 'en-US';
export class LazyTranslateLoader implements TranslateLoader {
constructor(private http: HttpClient) {}
getTranslation(lang: string): Observable<any> {
return this.http
.get(`/assets/i18n/${lang}.json`)
.pipe(
catchError(() => this.http.get(`/assets/i18n/${DEFAULT_LANG}.json`))
);
}
}
接下来,在配置中为根模块中的TranslateModule
提供LazyTranslateLoader
.
@NgModule({
// ...,
imports: [
// ...,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: LazyTranslateLoader,
deps: [HttpClient],
},
}),
]
})
export class AppModule {}
Demo @ StackBlitz个
Reference个
Write & use your own loader个