我目前正在一个项目中,在该项目中我们在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));