缺少语言环境“ru”Angular 5

时间:2017-11-13 11:52:41

标签: javascript angular internationalization angular5

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

Error

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

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

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

3 个答案:

答案 0 :(得分:13)

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

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

  • 现在缩小版的时代是GGGGG而不是G,格式G现在与GG和GGG类似。

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

    您应该更改日期管道

    enter image description here

  

此外,您需要在app.module中提供您的语言,如下所示:

enter image description here

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我已经更新了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>
...