【问题标题】:How to import from locales dynamically?如何从语言环境动态导入?
【发布时间】:2018-07-01 16:25:18
【问题描述】:

我正在构建一个 Angular 5 应用程序。我的用户可以在我的应用中选择他们想要的任何文化。我真的应该把“语言环境”路径硬编码吗?如果是这样,我应该将它们都包括在内(以防万一)。

import localeFr from '@angular/common/locales/fr';
registerLocaleData(localeFr, 'fr');
import localePt from '@angular/common/locales/pt';
registerLocaleData(localePt, 'pt');
...

我想要这样的东西:

import locale from '@angular/common/locales/' + varUserLocale;
registerLocaleData(locale);

我怎样才能让它像我的例子一样更有活力?

谢谢

【问题讨论】:

  • 还没有找到一个干净的方法来做到这一点?
  • @JonathP :不,仍在导入所有内容...

标签: angular


【解决方案1】:
export interface ILanguageOption {
  languageId: number;
  name: string;
  value: string;
  priority: number;
  import: string;
}

  public static readonly LANGUAGES: ILanguageOption[] = [
    { languageId: 2, name: 'RU', value: 'ru-RU', priority: 2, import: 'ru' },
    { languageId: 1, name: 'EN', value: 'en-UK', priority: 1, import: 'en-GB' }
  ];

在 app.modele.ts 中

import { registerLocaleData } from '@angular/common';

export function localeInitializerFactory(): () => Promise<any> {
  return () => {
    const all = Consts.LANGUAGES.map(l => {
      Promise.all([
        import(/* webpackInclude: /(ru|en-GB)\.js$/ */ `@angular/common/locales/${l.import}.js`),
        import(/* webpackInclude: /(ru|en-GB)\.js$/ */ `@angular/common/locales/extra/${l.import}.js`)
      ]).then(imp => registerLocaleData(imp[0].default, l.value, imp[1].default));
    });
    return Promise.all(all);
  }
}

{
  provide: APP_INITIALIZER,
  useFactory: localeInitializerFactory,
  multi: true
},

【讨论】:

    【解决方案2】:

    你试过了吗?

    import(@angular/common/locales/${navigator.language}.js).then(locale => { registerLocaleData(locale.default); });

    来源:Angular 5 loading locale at runtime with Angular CLI

    【讨论】:

    • 链接本身并不是一个好的答案。这应该是评论而不是答案。
    • 您好 @Hugo Caldeira,抱歉,Angular 没有正确解释:[ts] 算术运算的左侧必须是“任意”、“数字”或枚举类型。 [tslint] 未使用的表达式,需要赋值或函数调用(no-unused-expression)
    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多