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 枚举
我正在构建一个 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 枚举