timepiece/node_modules/date-fns/locale/fr/_lib/localize.mjs

166 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { buildLocalizeFn } from "../../_lib/buildLocalizeFn.mjs";
const eraValues = {
narrow: ["av. J.-C", "ap. J.-C"],
abbreviated: ["av. J.-C", "ap. J.-C"],
wide: ["avant Jésus-Christ", "après Jésus-Christ"],
};
const quarterValues = {
narrow: ["T1", "T2", "T3", "T4"],
abbreviated: ["1er trim.", "2ème trim.", "3ème trim.", "4ème trim."],
wide: ["1er trimestre", "2ème trimestre", "3ème trimestre", "4ème trimestre"],
};
const monthValues = {
narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
abbreviated: [
"janv.",
"févr.",
"mars",
"avr.",
"mai",
"juin",
"juil.",
"août",
"sept.",
"oct.",
"nov.",
"déc.",
],
wide: [
"janvier",
"février",
"mars",
"avril",
"mai",
"juin",
"juillet",
"août",
"septembre",
"octobre",
"novembre",
"décembre",
],
};
const dayValues = {
narrow: ["D", "L", "M", "M", "J", "V", "S"],
short: ["di", "lu", "ma", "me", "je", "ve", "sa"],
abbreviated: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."],
wide: [
"dimanche",
"lundi",
"mardi",
"mercredi",
"jeudi",
"vendredi",
"samedi",
],
};
const dayPeriodValues = {
narrow: {
am: "AM",
pm: "PM",
midnight: "minuit",
noon: "midi",
morning: "mat.",
afternoon: "ap.m.",
evening: "soir",
night: "mat.",
},
abbreviated: {
am: "AM",
pm: "PM",
midnight: "minuit",
noon: "midi",
morning: "matin",
afternoon: "après-midi",
evening: "soir",
night: "matin",
},
wide: {
am: "AM",
pm: "PM",
midnight: "minuit",
noon: "midi",
morning: "du matin",
afternoon: "de laprès-midi",
evening: "du soir",
night: "du matin",
},
};
const ordinalNumber = (dirtyNumber, options) => {
const number = Number(dirtyNumber);
const unit = options?.unit;
if (number === 0) return "0";
const feminineUnits = ["year", "week", "hour", "minute", "second"];
let suffix;
if (number === 1) {
suffix = unit && feminineUnits.includes(unit) ? "ère" : "er";
} else {
suffix = "ème";
}
return number + suffix;
};
const LONG_MONTHS_TOKENS = ["MMM", "MMMM"];
export const localize = {
preprocessor: (date, parts) => {
// Replaces the `do` tokens with `d` when used with long month tokens and the day of the month is greater than one.
// Use case "do MMMM" => 1er août, 29 août
// see https://github.com/date-fns/date-fns/issues/1391
if (date.getDate() === 1) return parts;
const hasLongMonthToken = parts.some(
(part) => part.isToken && LONG_MONTHS_TOKENS.includes(part.value),
);
if (!hasLongMonthToken) return parts;
return parts.map((part) =>
part.isToken && part.value === "do"
? { isToken: true, value: "d" }
: part,
);
},
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",
}),
};