167 lines
3.2 KiB
JavaScript
167 lines
3.2 KiB
JavaScript
|
import { buildLocalizeFn } from "../../_lib/buildLocalizeFn.mjs";
|
||
|
|
||
|
const eraValues = {
|
||
|
narrow: ["f.Kr.", "e.Kr."],
|
||
|
abbreviated: ["f.Kr.", "e.Kr."],
|
||
|
wide: ["före Kristus", "efter Kristus"],
|
||
|
};
|
||
|
|
||
|
const quarterValues = {
|
||
|
narrow: ["1", "2", "3", "4"],
|
||
|
abbreviated: ["Q1", "Q2", "Q3", "Q4"],
|
||
|
wide: ["1:a kvartalet", "2:a kvartalet", "3:e kvartalet", "4:e kvartalet"],
|
||
|
};
|
||
|
|
||
|
const monthValues = {
|
||
|
narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
|
||
|
abbreviated: [
|
||
|
"jan.",
|
||
|
"feb.",
|
||
|
"mars",
|
||
|
"apr.",
|
||
|
"maj",
|
||
|
"juni",
|
||
|
"juli",
|
||
|
"aug.",
|
||
|
"sep.",
|
||
|
"okt.",
|
||
|
"nov.",
|
||
|
"dec.",
|
||
|
],
|
||
|
|
||
|
wide: [
|
||
|
"januari",
|
||
|
"februari",
|
||
|
"mars",
|
||
|
"april",
|
||
|
"maj",
|
||
|
"juni",
|
||
|
"juli",
|
||
|
"augusti",
|
||
|
"september",
|
||
|
"oktober",
|
||
|
"november",
|
||
|
"december",
|
||
|
],
|
||
|
};
|
||
|
|
||
|
const dayValues = {
|
||
|
narrow: ["S", "M", "T", "O", "T", "F", "L"],
|
||
|
short: ["sö", "må", "ti", "on", "to", "fr", "lö"],
|
||
|
abbreviated: ["sön", "mån", "tis", "ons", "tors", "fre", "lör"],
|
||
|
wide: ["söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"],
|
||
|
};
|
||
|
|
||
|
// https://www.unicode.org/cldr/charts/32/summary/sv.html#1888
|
||
|
const dayPeriodValues = {
|
||
|
narrow: {
|
||
|
am: "fm",
|
||
|
pm: "em",
|
||
|
midnight: "midnatt",
|
||
|
noon: "middag",
|
||
|
morning: "morg.",
|
||
|
afternoon: "efterm.",
|
||
|
evening: "kväll",
|
||
|
night: "natt",
|
||
|
},
|
||
|
abbreviated: {
|
||
|
am: "f.m.",
|
||
|
pm: "e.m.",
|
||
|
midnight: "midnatt",
|
||
|
noon: "middag",
|
||
|
morning: "morgon",
|
||
|
afternoon: "efterm.",
|
||
|
evening: "kväll",
|
||
|
night: "natt",
|
||
|
},
|
||
|
wide: {
|
||
|
am: "förmiddag",
|
||
|
pm: "eftermiddag",
|
||
|
midnight: "midnatt",
|
||
|
noon: "middag",
|
||
|
morning: "morgon",
|
||
|
afternoon: "eftermiddag",
|
||
|
evening: "kväll",
|
||
|
night: "natt",
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const formattingDayPeriodValues = {
|
||
|
narrow: {
|
||
|
am: "fm",
|
||
|
pm: "em",
|
||
|
midnight: "midnatt",
|
||
|
noon: "middag",
|
||
|
morning: "på morg.",
|
||
|
afternoon: "på efterm.",
|
||
|
evening: "på kvällen",
|
||
|
night: "på natten",
|
||
|
},
|
||
|
abbreviated: {
|
||
|
am: "fm",
|
||
|
pm: "em",
|
||
|
midnight: "midnatt",
|
||
|
noon: "middag",
|
||
|
morning: "på morg.",
|
||
|
afternoon: "på efterm.",
|
||
|
evening: "på kvällen",
|
||
|
night: "på natten",
|
||
|
},
|
||
|
wide: {
|
||
|
am: "fm",
|
||
|
pm: "em",
|
||
|
midnight: "midnatt",
|
||
|
noon: "middag",
|
||
|
morning: "på morgonen",
|
||
|
afternoon: "på eftermiddagen",
|
||
|
evening: "på kvällen",
|
||
|
night: "på natten",
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const ordinalNumber = (dirtyNumber, _options) => {
|
||
|
const number = Number(dirtyNumber);
|
||
|
|
||
|
const rem100 = number % 100;
|
||
|
if (rem100 > 20 || rem100 < 10) {
|
||
|
switch (rem100 % 10) {
|
||
|
case 1:
|
||
|
case 2:
|
||
|
return number + ":a";
|
||
|
}
|
||
|
}
|
||
|
return number + ":e";
|
||
|
};
|
||
|
|
||
|
export const localize = {
|
||
|
ordinalNumber,
|
||
|
|
||
|
era: buildLocalizeFn({
|
||
|
values: eraValues,
|
||
|
defaultWidth: "wide",
|
||
|
}),
|
||
|
|
||
|
quarter: buildLocalizeFn({
|
||
|
values: quarterValues,
|
||
|
defaultWidth: "wide",
|
||
|
argumentCallback: (quarter) => quarter - 1,
|
||
|
}),
|
||
|
|
||
|
month: buildLocalizeFn({
|
||
|
values: monthValues,
|
||
|
defaultWidth: "wide",
|
||
|
}),
|
||
|
|
||
|
day: buildLocalizeFn({
|
||
|
values: dayValues,
|
||
|
defaultWidth: "wide",
|
||
|
}),
|
||
|
|
||
|
dayPeriod: buildLocalizeFn({
|
||
|
values: dayPeriodValues,
|
||
|
defaultWidth: "wide",
|
||
|
formattingValues: formattingDayPeriodValues,
|
||
|
defaultFormattingWidth: "wide",
|
||
|
}),
|
||
|
};
|