我在我的 Angular 应用程序中使用 DecimalPipe 来显示数字,但问题是十进制管道的默认语言环境是“en-us”。因此,一百万的数字被格式化为
1,000,000
. 然而,我是欧洲人,我希望它是1 000 000
。简单地硬编码十进制管道中的语言环境不是一种选择,因为我确实希望美国人在他们的语言环境中显示它,而欧洲人在我们的语言环境中显示它。
一些解决方案建议使用LOCALE_ID
. 例如
constructor(
@Inject(LOCALE_ID) public locale: string
) { }
即使我的浏览器在荷兰语中排在第一位(未指定国家/地区),在英语中排在第二位(也未指定国家/地区),默认为“en-us”。建议的其他一些解决方案
providers: [ { provide: LOCALE_ID, useValue: 'fr' } ]
但话又说回来,这是硬编码的,我需要它依赖于浏览器。另一种解决方案是通过请求用户的语言,Navigator.language
但这通常只是一种语言,没有国家,也没有语言环境。
当找不到任何地方时,我如何请求语言环境并回退例如“en-us”?