【问题标题】:Get thousand separator of numbers in different languages Angular获取不同语言的千位数字分隔符Angular
【发布时间】:2020-01-06 06:49:20
【问题描述】:

在英语语言环境中,数字如下所示:111,111,222.00 所以千位分隔符是逗号,小数分隔符是一个点。在例如德语相同的数字看起来像111.111.222,00,所以千位和小数点分隔符被颠倒了。有没有办法根据语言环境找到千位分隔符?

我发现 https://angular.io/api/common/getLocaleNumberFormat getLocaleNumberFormat() 有角度的函数,但我找不到如何使用它,因为它总是返回格式 en 语言环境格式

【问题讨论】:

    标签: javascript angular typescript


    【解决方案1】:

    使用getLocaleNumberSymbol()

    getLocaleNumberSymbol(locale: string, symbol: NumberSymbol): string

    import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';
    
    // returns thousands sepator, comma (,) in this case:
    getLocaleNumberSymbol('en-US', NumberSymbol.CurrencyGroup)
    // returns decimal separator, dot (.) in this case:
    getLocaleNumberSymbol('en-US', NumberSymbol.CurrencyDecimal)
    

    如果AppModule 不同于en-US,您应该将您的语言环境数据导入:

    import '@angular/common/locales/global/en-GB';
    
    @NgModule({...})
    export class AppModule {
    }
    

    可在此处找到可用语言环境的列表: https://github.com/angular/angular/tree/master/packages/common/locales

    【讨论】:

      【解决方案2】:

      我通常在我的 app.module 中设置全局语言环境。

      App.Module.ts

      import { registerLocaleData } from '@angular/common';
      import localeHe from '@angular/common/locales/he';
      
      registerLocaleData(localeHe, 'he');
      
      @NgModule({ // ....
      

      Angular I18n docs

      【讨论】:

      • 但是如果设置了de语言,它总是返回格式`#,###.00`不应该返回`#.###,00`吗?
      【解决方案3】:

      正如 Angular 文档所说,您必须将语言环境作为第一个参数提供给 getLocaleNumberFormat() 函数:

      getLocaleNumberFormat(locale: string, type: NumberFormatStyle): string

      参数:
      locale : string 要使用的区域设置格式规则的区域设置代码。
      type : NumberFormatStyle 要格式化的数值类型(例如十进制或货币。)

      如果您提供正确的语言字符串,格式应该可以工作。

      【讨论】:

      • 但是如果设置了de语言,它总是返回格式`#,###.00`不应该返回`#.###,00`吗?
      • 是的,应该使用后一种格式。您是否将正确的语言字符串 ('de-DE') 传递给函数?
      猜你喜欢
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多