繁体   English   中英

Angular i18n - 动态加载翻译

[英]Angular i18n - dynamically load translation

我需要为我的 Angular 应用异步加载翻译。 我正在尝试使用@angular/localize模块中的loadTranslations function。 问题是它只有在我将它放入底部的polyfills.ts文件时才有效。 我需要使用 ajax 请求加载此数据,所以我想延迟引导应用程序直到那个。 这是来自main.ts的代码

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

import '@angular/localize/init';

import { loadTranslations } from '@angular/localize';

// delay from ajax call
setTimeout(() => {
  loadTranslations({
    'test': '123'
  });

  if (environment.production) {
    enableProdMode();
  }
  
  platformBrowserDynamic().bootstrapModule(AppModule)
    .catch(err => console.error(err));
}, 1000);

该应用程序启动时没有错误,但未应用翻译。 如果我删除异步延迟,它也不起作用:

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

import '@angular/localize/init';

import { loadTranslations } from '@angular/localize';

loadTranslations({
  'test': '123'
});

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));

但是,如果我将 i18n 代码移至polyfills.ts (仅同步版本),它会起作用

import '@angular/localize/init';

import { loadTranslations } from '@angular/localize';

loadTranslations({
  'test': '123'
});

这是一个示例模板

<p i18n="@@test">Not working</p>

为什么它只适用于polyfills.ts而不适用于main.ts并且有没有办法异步初始化它?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM