в первую очередь. я знаю, что могу форматировать числа, используя js. я хотел бы избежать сохранения параметра с сервера, который задает формат
мои числа, о которых идет речь, являются js числами с плавающей запятой и должны отображаться в формате языка, который пользователь выбирает в браузере.
Я хотел бы положиться на (современные) настройки браузера для форматирования моих десятичных чисел в Швейцарии, мы используем десятичную точку "." поэтому мой скрипт получает значение navigator.languages [0], чтобы использовать его с объектами intl.date
и intl.number
- (они отлично работают при подаче в "de-ch" в качестве культуры), но получается firefox i можно выбрать только «де» (Deutsch) в качестве языка в опциях. Затем он используется для форматирования и использует «,» для десятичной точки. почему в опциях языка firefox отсутствует настройка "de-ch" (Deutsch-Schweiz)?
мой текущий способ обхода (и чтобы дать немного больше контекста этим вопросам):
let mostPreferedLanguage = globalThis.navigator.languages[0]
if (
mostPreferedLanguage === "de" &&
navigator.userAgent.toLowerCase().indexOf("firefox") > -1
) {
if ((1.1).toString().indexOf(".") > -1) {
mostPreferedLanguage = "de-ch"
}
}
export let displayFormats = {
decimal: {
default: new Intl.NumberFormat(mostPreferedLanguage, {
minimumFractionDigits: 2,
maximumFractionDigits: 2
}),
_4Digits: new Intl.NumberFormat(mostPreferedLanguage, {
minimumFractionDigits: 4,
maximumFractionDigits: 4
})
},
date: {
default: new Intl.DateTimeFormat(mostPreferedLanguage, {
day: "2-digit",
month: "2-digit",
year: "numeric"
}),
_2DigitsYear: new Intl.DateTimeFormat(mostPreferedLanguage, {
day: "2-digit",
month: "2-digit",
year: "2-digit"
}),
defaultTimestamp: new Intl.DateTimeFormat(mostPreferedLanguage, {
day: "2-digit",
month: "2-digit",
year: "2-digit",
hour: "numeric",
minute: "numeric",
second: "numeric",
hour12: false
})
}
}