【问题标题】:Missing locale data for the locale "ru" Angular 5缺少区域设置“ru”Angular 5的区域设置数据
【发布时间】:2018-04-26 02:22:45
【问题描述】:

我将 Angular 更新到版本 5 并收到此错误

在我看来,这一行中的管道错误

<h5>{{ event.date | date:"yyyy.MM.dd"}}</h5>.

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: javascript angular internationalization angular5


    【解决方案1】:

    似乎你没有更新你的管道,因为破坏了角度 5 的变化 见:https://github.com/angular/angular/blob/master/CHANGELOG.md

    • 默认情况下,Angular 现在只包含语言的区域设置数据 en-US,如果您将 LOCALE_ID 的值设置为另一个语言环境,您将 必须为此语言导入新的语言环境数据,因为我们不使用 不再使用 intl API。
    • 所有 i18n 管道现在都有一个额外的最后一个参数 locale,它允许您使用特定的语言环境,而不是令牌 LOCALE_ID(其默认值为 en-US)中定义的语言环境。
    • 预定义格式(short、shortTime、shortDate、medium 等)现在使用 CLDR 提供的模式(就像在 AngularJS 中一样),而不是来自 intl API 的模式。您可能会注意到一些变化,例如对于 en-US,shortDate 将是 8/15/17,而不是 8/15/2017。

    • eras 的窄版现在是 GGGGG 而不是 G,格式 G 现在类似于 GG 和 GGG。

    • 月份的窄版本现在是 MMMMM 而不是 L,格式 L 现在是月份的短独立版本。
    • 工作日的窄版本现在是 EEEEE 而不是 E,格式 E 现在类似于 EE 和 EEE。
    • 时区 z 现在将回退到 O 并输出 GMT+1 而不是完整的时区名称(例如太平洋标准时间),这是因为在所有现有语言环境中拥有所有时区名称所需的数据量是太大了。
    • 时区 Z 现在将输出 ISO8601 基本格式,例如+0100,您现在应该使用 ZZZZ 来获取 GMT+01:00。

      你应该改变你的日期管道

    您还需要像这样在 app.module 中提供您的语言:

    【讨论】:

    • 它一定已经解决了这个问题,任何正在寻找信息的机构 - 如何将您的 Angular 旧版本项目(2,4)升级到 Angular 5,----stackoverflow.com/a/47181121/2810015
    • 非常感谢!它的工作解决方案。我只是用俄语替换了法语。从“@angular/common”导入 { registerLocaleData };从“@angular/common/locales/ru”导入 localeRu; registerLocaleData(localeRu);
    • 对我来说,这适用于 ng serve。但是在 ng build --prod 上,它会抛出与问题相同的错误。
    【解决方案2】:

    我已更新 app.mudule.ts 以本地化日期。

    // app.mudule.ts
    
    ...
    import { NgModule, LOCALE_ID } from '@angular/core';
    import { registerLocaleData } from '@angular/common';
    import localeRu from '@angular/common/locales/ru';
    
    registerLocaleData(localeRu);
    
    @NgModule({
      ...
      providers: [
        ...
        { provide: LOCALE_ID, useValue: 'ru' }
      ],
      bootstrap: [AppComponent]
    })
    
    // feed-list-item.component.html (nothing was updated here)
    
    ...
    <span>{{ event.date | date:'fullDate'}}</span>
    ...
    

    【讨论】:

      【解决方案3】:

      快速修复:为您的语言环境添加导入。对于“ru”,您应该在 app.module 中添加以下行:

      import '@angular/common/locales/global/ru';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-23
        • 2020-06-14
        • 1970-01-01
        • 2014-05-08
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多