Missing locale data for the locale "XXX" with angular
Asked Answered
S

4

96

I currently define "LOCALE_ID" on "en-US" this way:

@NgModule({
    providers: [{ provide: LOCALE_ID, useValue: "en-US" }, ...],
    imports: [...],
    bootstrap: [...]
})

and it works pretty well. However, in order to test how dates look like in French, I replaced "en-US" by "fr-FR" and then I got the error:

Missing locale data for the locale "fr-FR".

I did some researches and I didn't find anything related to that. Are the locale for french included in the default package? Is it a different package? Do I have to create them by myself?

Stibnite answered 26/9, 2017 at 6:12 Comment(2)
next.angular.io/guide/i18n.Disapprove
Ah! Thanks a lot, I saw that post but I missed the "i18n pipes" section. These articles are way too long. Thanks a lot, it works now ;-)Stibnite
L
181

In file app.module.ts

...
import { NgModule, LOCALE_ID } from '@angular/core';
import { registerLocaleData } from '@angular/common';
import localeFr from '@angular/common/locales/fr';
registerLocaleData(localeFr);


@NgModule({
  imports: [...],
  declarations: [...],
  bootstrap: [...],
  providers: [
    { provide: LOCALE_ID, useValue: 'fr-FR'},
  ]
})
export class AppModule {}

(source: https://next.angular.io/guide/i18n)

and in your template (*.component.html)

DATE in FRENCH: {{ dateEvent | date: 'longDate'}}

Result:

DATE in FRENCH: 25 mars 2018

(source: https://angular.io/api/common/DatePipe)

Lilienthal answered 18/2, 2018 at 6:59 Comment(2)
The registerLocaleData(localeFr); call is a pure side effect and will be stripped by tree shaking; In other words, if you enable tree-shaking with "sideEffects": false then this works in dev and fails in prod. Better to put it the function call into the AppModule constructor.Rebuke
I had the same issue with this error message: Missing locale data for the locale "hu".' for pipe 'DatePipe'. This solved. Thanks!Clung
C
47

Thanks @Alan, you just forgot this : import { registerLocaleData } from '@angular/common';

Complete code :

import { registerLocaleData } from '@angular/common';
import localeFr from '@angular/common/locales/fr';
registerLocaleData(localeFr);

@NgModule({
  imports: [...],
  declarations: [...],
  bootstrap: [...],
  providers: [
    { provide: LOCALE_ID, useValue: 'fr-FR'},
  ]
})
export class AppModule {}
Connor answered 30/3, 2019 at 16:52 Comment(0)
M
1

In recent Angular versions, if you are using a single locale, you can just add it in your angular.json file under the project configuration like this:

"projects": {
  "disruptive-project": {
    "i18n": {
      "sourceLocale": "fr-FR"
    }
  }
}
Menorrhagia answered 24/12, 2023 at 21:3 Comment(0)
P
0

also check in your message.json or any other file if your locale is correct:

enter image description here

Pyroxene answered 29/11, 2023 at 19:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.