Я использую JS Intl.NumberFormat()
для форматирования тайской валюты следующим образом:
const number = 123456789;
const object = {
style: 'currency',
currency: 'THB',
currencyDisplay: 'name',
trailingZeroDisplay: 'stripIfInteger'
}
console.info(new Intl.NumberFormat('th-TH', object).format(number));
// => "123,456,789 บาทไทย"
console.info(new Intl.NumberFormat('en-EN', object).format(number));
//=> "123,456,789 Thai baht"
Однако для Thai Locale я хочу, чтобы он возвращал "123,456,789 บาท"
и "123,456,789 Baht"
для английского языка. Как мне это сделать?
Я думаю, что одним из полезных решений является установка функции, которая меняет концы отформатированного числа, я создал ее для вас:
const number = 123456789;
const object = {
style: "currency",
currency: "THB",
currencyDisplay: "name",
trailingZeroDisplay: "stripIfInteger",
};
// Function that returns formatted number
const formatNumberFunction = (local, object, number) => {
const formatedNumberValue = Intl.NumberFormat(local, object).format(number);
// Return the value according to the ends of the formatedNumberValue
if (formatedNumberValue.endsWith("บาทไทย")) {
return formatedNumberValue.slice(0, -3);
}
return formatedNumberValue.slice(0, -5);
};
console.info(formatNumberFunction("th-TH", object, number));
console.info(formatNumberFunction("en-EN", object, number));
Результат:
123,456,789 บาท
123,456,789 Thai