Tengo problemas para configurar las configuraciones regionales correctas en mi aplicación angular. De acuerdo con los documentos, agregué el siguiente fragmento a mi archivo angular.json.
"projects": { "appname": { ..., "i18n": { "sourceLocale": "nl-NL" }, En mi app.module.ts , agregué lo siguiente.
providers: [ { provide: LOCALE_ID, useValue: "en-GB" } ]Sin embargo, cuando uso datePipe para formatear una fecha como esta...
<p>{{ '2021-11-16' | date : 'longDate' }}</p> El resultado es November 16, 2021 , pero espero 16 November 2021
Es como si la parte local de en-GB se ignorara por completo. Funciona cuando configuro sourceLocale en angular.json en en-GB , pero la mayoría de las veces mi aplicación será holandesa.
Siento que me falta algo. Los documentos angulares no son tan útiles. Encontré documentos que usan el código ISO 639-2 como LOCALE_ID, que omite la parte de configuración regional por completo. Ver https://angular.io/guide/i18n-opcional-manual-runtime-locale También hay otros documentos que usan la identificación de configuración regional Unicode, ver https://angular.io/api/core/LOCALE_ID
Considerándolo todo. No está funcionando como se esperaba.
Yo no uso i18n para esto, les voy a decir como suelo hacerlo. PD: les dejo un codigo de trabajo AQUI
Para poder usar otro idioma, primero debemos registrarlo con la función registerLocaleData en app.module.ts :
import myLocaleNl from '@angular/common/locales/nl'; import {registerLocaleData} from '@angular/common/'; //function to register it. registerLocaleData(myLocaleNl );Una vez que hayamos registrado una configuración regional, ya podríamos usarla en la tubería como 4 parámetros. p.ej:
{{ date | date: "longDate":"": "nl" }}Podemos registrar tantos locales como necesitemos:
import myLocaleEs from '@angular/common/locals/en'. import myLocaleFr from '@angular/common/locals/fr' import {registerLocaleData} from '@angular/common/'; registerLocaleData(myLocaleEs); registerLocaleData(myLocaleFr);Registrar un locale de forma GLOBAL Para registrarlo globalmente (para que no sea necesario especificarlo cada vez en los pipes y se aplique por defecto), lo "registramos" en la sección PROVIDER app.module.ts :
import { LOCALE_ID} from '@angular/core'; providers: [ {provide: LOCALE_ID, useValue: 'nl'} // Same value used up ],Ver la documentación de Angular DatePipe podría ayudarlo. longDate traduce como MMMM d, y . En tu caso necesitarías algo como esto:
<p>{{ '2021-11-16' | date : 'dd MMMM y' }}</p>Es posible que deba modificar esto un poco ya que no tengo suficiente información con un solo ejemplo.