Angular number pipe 是否将数字翻译成阿拉伯语?

Does Angular number pipe translate numbers to Arabic?

我正在构建一个 Angular v9 应用程序,它需要翻译成几种不同的语言,包括阿拉伯语。我相信该项目是使用 ar-SA 作为语言环境 ID 之一正确设置的,但是即使我在整个应用程序中使用数字管道,数字也不会像我期望的那样以阿拉伯语显示。日期管道正在翻译日期和月份,但也不是数字。

在app.module.ts

import localeAr from '@angular/common/locales/ar-SA';


registerLocaleData(localeAr);

在angular.json

"ar-SA": {
              "localize": ["ar-SA"],
              "i18nFile": "src/locale/messages.ar.xlf",
              "i18nFormat": "xlf",
              "i18nLocale": "ar-SA",
              "i18nMissingTranslation": "warning"
            }

如有任何帮助,我们将不胜感激!

如果没有,你可以这样写自己的管道:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'anp'})
export class ArabicNumberPipe implements PipeTransform {

  transform(n: number): string {
    if (n === null || n === undefined) {
      return '';
    }
    return new Intl.NumberFormat('ar-SA',{}).format(n);
  }
}

您将在此处找到所用格式化程序的文档:Intl/NumberFormat

您可以将格式与您使用的管道一起传递。

https://github.com/angular/angular/blob/master/packages/common/locales/ar-SA.ts

以上是 link 可用于日期的格式。 这些是支持的格式 ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'],

喜欢'dateVariableFromts' |日期:格式

我正在使用一个管道将字符串中的所有数字从英文数字 (1,2,3 ..) 转换为阿拉伯数字 (١,٢,٣ ...)

numbersObject: { [x: string]: string } = {
    '1': '١',
    '2': '٢',
    '3': '٣',
    '4': '٤',
    '5': '٥',
    '6': '٦',
    '7': '٧',
    '8': '٨',
    '9': '٩',
    '0': '٠',
  };

  transform(n: number | string): string {
    if (n === null || n === undefined) return '';
    n = n + ''; // to make it a string if it was a number 
    let newString = '';
    for (let i = 0; i < n.length; i++) {
      if (this.numbersObject[n.charAt(i)])
        newString += this.numbersObject[n.charAt(i)];
      else
        newString += n.charAt(i);
    }

    return newString;
  }

答案已被接受,但无论如何我都会 post 因为您可能对此包感兴趣。 https://www.npmjs.com/package/angular-translate-numbers

这是演示 https://stackblitz.com/edit/angular-translate-numbers

它支持多种数字类型,例如

Arabic ,Gujarati , Gurmukhi, Bengali , Assamese, Kannada , Odia, Malayalam , Telugu, Burmese , Tibetan, Mongolian , Sinhala, Khmer , Thai, Lao , Javanese, Arabic_Western , Latin, Cyrillic , Greek, Arabic_Hindi , Arabic_Eastern, Persian , Pashto, Dari , Urdu, Shahmukhi , Brahmi, Devanagari

它还支持转换日期中的数字,例如

{{ date | date: 'yyyy-MM-dd mm:ss' | translateNumbers: NumberTypes.Arabic }}

NumberTypes:是您可以导入到组件中的 LanguageType 枚举