0

在我的 Angular 8 应用程序中,我无法以本地化形式显示日期字段。我想提出以下内容:

  • in English : "February 18, 2020 12:15:50"
  • 法语:“18 février 2020, 12:15:50”

我想我应该使用 Angular 的DatePipe

{{ 我的日期 | 日期 }}

对于所有其他本地化目的,我使用的是ngx-translate(not Angular i18n)。它使我可以访问当前语言(用户可以即时切换语言),但我不知道如何TranslateService#currentLangDatePipe. 有没有办法以简单的方式做到这一点?

4

2 回答 2

1

angular 提供了很多语言环境,因此 use 可以注册将在日期管道中使用的正确语言环境。

// app.module.ts

import { registerLocaleData } from '@angular/common';
import frenchLocale from '@angular/common/locales/fr';
import { LOCALE_ID, NgModule } from '@angular/core';

registerLocaleData(frenchLocale);

然后您可以在日期管道中指定语言环境

someDate | date: null: null: 'fr'

或覆盖的默认语言环境

@NgModule({
  providers: [
    { provide: LOCALE_ID, useValue: "fr" }
  ]
})

更新

Angular i18n 使用差异构建,但 ngx-translate 按需获取所需的语言环境。由于我们无法结合这些方法,我们可以创建自定义日期管道,这将满足我们的要求。

我使用当前的 TranslateService 语言环境提供程序和自定义日期管道创建了演示,该管道等效于原始 date.pipe

于 2020-05-15T10:43:19.883 回答
0

是的,您可以使用DatePipe。如您所见,它LOCALE_ID默认使用令牌。如果您使用 Angular CLI,则会自动提供 LOCALE_ID:

要使用的区域设置格式规则的区域设置代码。未提供时,使用 LOCALE_ID 的值,默认为 en-US

于 2020-05-15T13:46:35.693 回答