【问题标题】:Moment.js locale dates won't changeMoment.js 语言环境日期不会改变
【发布时间】:2019-08-26 09:41:56
【问题描述】:

我尝试将月份翻译成德语,但我仍然得到英语月份。我已经阅读了所有论坛,但仍然没有解决问题。

import moment from 'moment/src/moment';
import localization from 'moment/locale/de';

ngOnInit() {
    moment.locale('de', localization);
    console.log(moment.locales()); // output is 'de'
    console.log(moment.months()) // output is 'January', 'February', ...
}

【问题讨论】:

    标签: angular momentjs


    【解决方案1】:

    您不应该从locale 方法中指定第二个参数:

    moment.locale('de');
    

    编辑

    在您的模块中,您应该注册语言环境,导入 MatMomentDateModule 并声明 LOCAL_ID :

    import { MatMomentDateModule } from '@angular/material-moment-adapter';
    import { registerLocaleData } from '@angular/common';
    import localeDe from '@angular/common/locales/de';
    import localeDeExtra from '@angular/common/locales/extra/de';
    
    registerLocaleData(localeDe, 'de-DE', localeDeExtra);
    
    @NgModule({
      ...,
      imports: [MatMomentDateModule],
      providers: [
        { provide: LOCALE_ID, useValue: 'de-DE' },
      ],
      ...,
    })
    export class AppModule {}
    
    

    【讨论】:

    • 不幸的是,这并没有改变。
    • 我检查了我是怎么做的,我忘了提到你需要在你的 Angular 模块中注册语言环境。
    • 感谢您的编辑。我将此添加到我的代码中,并删除了第二个导入。但现在记录的唯一语言环境是“en”。
    • 我成功了!我删除了 node_modules/moment/src 文件夹并将导入更新为 import * as moment from 'moment';感谢您的工作!
    • 注意:MatMomentDateModule 导入仅在使用 Angular Material 时才有用:material.angular.io
    【解决方案2】:

    它对我有用,我做了以下更改:-

    moment.locale('de');
    alert(moment.months()); // output is german months
    

    【讨论】:

      【解决方案3】:

      我已经做了修改看看

      https://stackblitz.com/edit/angular-mb2emg

      解决方案:在“moment”之外显式导入语言环境:

      import moment from 'moment';
      import 'moment/locale/de';
      

      【讨论】:

        猜你喜欢
        • 2018-06-09
        • 2015-02-06
        • 2018-09-22
        • 1970-01-01
        • 2020-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多