【问题标题】:LOCALE_ID en-GB results in incorrect date formatsLOCALE_ID en-GB 导致日期格式不正确
【发布时间】:2021-11-16 15:44:19
【问题描述】:

我在我的 Angular 应用程序中设置正确的语言环境时遇到了麻烦。 根据文档,我已将以下 sn-p 添加到我的 angular.json 文件中。

"projects": {
  "appname": {
    ...,
    "i18n": {
      "sourceLocale": "nl-NL"
    },

在我的app.module.ts 中,我添加了以下内容。

providers: [
  {
    provide: LOCALE_ID,
    useValue: "en-GB"
  }
]

但是,当我使用 datePipe 来格式化这样的日期时...

<p>{{ '2021-11-16' | date : 'longDate' }}</p>

结果是November 16, 2021,但我期待16 November 2021

好像en-GB 的语言环境部分被完全忽略了。 当我将angular.json 中的sourceLocale 设置为en-GB 时,它确实有效,但大多数时候我的应用程序将是荷兰语。

我觉得我错过了什么。角度文档没有那么有用。我发现文档使用 ISO 639-2 代码作为 LOCALE_ID,它完全省略了语言环境部分。见https://angular.io/guide/i18n-optional-manual-runtime-locale 还有其他文档确实使用了 unicode 语言环境 ID,请参阅 https://angular.io/api/core/LOCALE_ID

总之。它没有按预期工作。

【问题讨论】:

    标签: angular internationalization


    【解决方案1】:

    查看Angular DatePipe documentation 可能会对您有所帮助。 longDate 转换为 MMMM d, y。在你的情况下,你需要这样的东西:

    <p>{{ '2021-11-16' | date : 'dd MMMM y' }}</p>
    

    你可能需要稍微调整一下,因为我没有足够的信息,只有一个例子。

    【讨论】:

      【解决方案2】:

      我不为此使用 i18n,我将告诉你我通常是如何做到的。 P.D:我给你留了一个工作代码HERE

      为了能够使用另一种语言,我们必须首先使用 app.module.ts 中的 registerLocaleData 函数注册它:

      import myLocaleNl from '@angular/common/locales/nl';
      import {registerLocaleData} from '@angular/common/'; //function to register it.
       
      registerLocaleData(myLocaleNl );
      

      一旦我们注册了一个语言环境,我们就可以在管道中使用它作为 4 参数。 例如:

      {{ date | date: "longDate":"": "nl" }}
      

      我们可以根据需要注册任意数量的语言环境:

      import myLocaleEs from '@angular/common/locals/en'.
      import myLocaleFr from '@angular/common/locals/fr'
      import {registerLocaleData} from '@angular/common/';
      registerLocaleData(myLocaleEs);
      registerLocaleData(myLocaleFr);
      

      以全球方式注册语言环境 要全局注册它(这样就不必每次都在管道中指定它并且默认应用它),我们在 app.module.ts PROVIDER 部分“注册”它:

      import { LOCALE_ID} from '@angular/core';
      
        providers: [
          {provide: LOCALE_ID, useValue: 'nl'} // Same value used up
        ],
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        • 2013-02-15
        相关资源
        最近更新 更多