如何在Angular 6翻译中切换回源语言?

时间:2018-07-31 13:44:29

标签: angular translate angular-i18n

我目前正在一个项目中,在该项目中我们在JIT设置中使用i18n转换功能,并通过在localStorage中设置lang参数来在不同语言之间进行切换,该参数的工作方式类似于超级按钮,顺便说一句,并为用户提供了准准选项-动态切换应用程序的语言。

但是,如果我想切换回源语言,我有点SOL。仅使用未翻译的文件messages.xlf或将LOCALE_ID切换回空,未定义或“ en”(如果这是源语言),只会导致这种类型的错误,即角度错过翻译,也就是翻译的部分文件。但是,由于它仅是源语言,所以没有翻译(糟糕的语言,糟糕的语言,羞愧的,虚假的!),我真的觉得只要重复行并将其重命名为就可以了。完成,但就变通办法而言,这感觉有点过度设计。

这是main.ts中的相关代码部分:

import { enableProdMode, TRANSLATIONS, TRANSLATIONS_FORMAT } from '@angular/core';

...

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

const lang = window.localStorage.getItem("lang") || "nl";

declare const require;
const translations = {
  "": require(`raw-loader!./assets/locale/messages.xlf`),
  "nl": require(`raw-loader!./assets/locale/messages.nl.xlf`),
  "fr": require(`raw-loader!./assets/locale/messages.fr.xlf`)
};

platformBrowserDynamic()
  .bootstrapModule(AppModule, {
    providers: [
      {provide: TRANSLATIONS, useValue: translations[lang]},
      {provide: TRANSLATIONS_FORMAT, useValue: 'xlf'}
    ]
  })
  .catch(err => console.log(err));

0 个答案:

没有答案