130 lines
5.7 KiB
JavaScript
130 lines
5.7 KiB
JavaScript
// prettier-ignore
|
|
const supportedLocales = [
|
|
'ach', 'af', 'am', 'an', 'ar', 'ast', 'az', 'be', 'bg', 'bn', 'br', 'bs',
|
|
'ca', 'cak', 'ckb', 'cs', 'cy', 'da', 'de', 'dsb', 'el', 'en', 'eo', 'es',
|
|
'et', 'eu', 'fa', 'ff', 'fi', 'fr', 'fy', 'ga', 'gd', 'gl', 'he', 'hr',
|
|
'hsb', 'hu', 'ia', 'id', 'it', 'ja', 'ka', 'kk', 'kn', 'ko', 'lb', 'lo',
|
|
'lt', 'lv', 'meh', 'ml', 'ms', 'nl', 'nn', 'no', 'oc', 'pl', 'pt', 'rm',
|
|
'ro', 'ru', 'sc', 'scn', 'sk', 'sl', 'sr', 'sv', 'szl', 'tg', 'th', 'tr',
|
|
'uk', 'zh-CN', 'zh-TW',
|
|
];
|
|
const placeholderFields = ["year", "month", "day"];
|
|
const placeholders = {
|
|
ach: { year: "mwaka", month: "dwe", day: "nino" },
|
|
af: { year: "jjjj", month: "mm", day: "dd" },
|
|
am: { year: "ዓዓዓዓ", month: "ሚሜ", day: "ቀቀ" },
|
|
an: { year: "aaaa", month: "mm", day: "dd" },
|
|
ar: { year: "سنة", month: "شهر", day: "يوم" },
|
|
ast: { year: "aaaa", month: "mm", day: "dd" },
|
|
az: { year: "iiii", month: "aa", day: "gg" },
|
|
be: { year: "гггг", month: "мм", day: "дд" },
|
|
bg: { year: "гггг", month: "мм", day: "дд" },
|
|
bn: { year: "yyyy", month: "মিমি", day: "dd" },
|
|
br: { year: "bbbb", month: "mm", day: "dd" },
|
|
bs: { year: "gggg", month: "mm", day: "dd" },
|
|
ca: { year: "aaaa", month: "mm", day: "dd" },
|
|
cak: { year: "jjjj", month: "ii", day: "q'q'" },
|
|
ckb: { year: "ساڵ", month: "مانگ", day: "ڕۆژ" },
|
|
cs: { year: "rrrr", month: "mm", day: "dd" },
|
|
cy: { year: "bbbb", month: "mm", day: "dd" },
|
|
da: { year: "åååå", month: "mm", day: "dd" },
|
|
de: { year: "jjjj", month: "mm", day: "tt" },
|
|
dsb: { year: "llll", month: "mm", day: "źź" },
|
|
el: { year: "εεεε", month: "μμ", day: "ηη" },
|
|
en: { year: "yyyy", month: "mm", day: "dd" },
|
|
eo: { year: "jjjj", month: "mm", day: "tt" },
|
|
es: { year: "aaaa", month: "mm", day: "dd" },
|
|
et: { year: "aaaa", month: "kk", day: "pp" },
|
|
eu: { year: "uuuu", month: "hh", day: "ee" },
|
|
fa: { year: "سال", month: "ماه", day: "روز" },
|
|
ff: { year: "hhhh", month: "ll", day: "ññ" },
|
|
fi: { year: "vvvv", month: "kk", day: "pp" },
|
|
fr: { year: "aaaa", month: "mm", day: "jj" },
|
|
fy: { year: "jjjj", month: "mm", day: "dd" },
|
|
ga: { year: "bbbb", month: "mm", day: "ll" },
|
|
gd: { year: "bbbb", month: "mm", day: "ll" },
|
|
gl: { year: "aaaa", month: "mm", day: "dd" },
|
|
he: { year: "שנה", month: "חודש", day: "יום" },
|
|
hr: { year: "gggg", month: "mm", day: "dd" },
|
|
hsb: { year: "llll", month: "mm", day: "dd" },
|
|
hu: { year: "éééé", month: "hh", day: "nn" },
|
|
ia: { year: "aaaa", month: "mm", day: "dd" },
|
|
id: { year: "tttt", month: "bb", day: "hh" },
|
|
it: { year: "aaaa", month: "mm", day: "gg" },
|
|
ja: { year: " 年 ", month: "月", day: "日" },
|
|
ka: { year: "წწწწ", month: "თთ", day: "რრ" },
|
|
kk: { year: "жжжж", month: "аа", day: "кк" },
|
|
kn: { year: "ವವವವ", month: "ಮಿಮೀ", day: "ದಿದಿ" },
|
|
ko: { year: "연도", month: "월", day: "일" },
|
|
lb: { year: "jjjj", month: "mm", day: "dd" },
|
|
lo: { year: "ປປປປ", month: "ດດ", day: "ວວ" },
|
|
lt: { year: "mmmm", month: "mm", day: "dd" },
|
|
lv: { year: "gggg", month: "mm", day: "dd" },
|
|
meh: { year: "aaaa", month: "mm", day: "dd" },
|
|
ml: { year: "വർഷം", month: "മാസം", day: "തീയതി" },
|
|
ms: { year: "tttt", month: "mm", day: "hh" },
|
|
nl: { year: "jjjj", month: "mm", day: "dd" },
|
|
nn: { year: "åååå", month: "mm", day: "dd" },
|
|
no: { year: "åååå", month: "mm", day: "dd" },
|
|
oc: { year: "aaaa", month: "mm", day: "jj" },
|
|
pl: { year: "rrrr", month: "mm", day: "dd" },
|
|
pt: { year: "aaaa", month: "mm", day: "dd" },
|
|
rm: { year: "oooo", month: "mm", day: "dd" },
|
|
ro: { year: "aaaa", month: "ll", day: "zz" },
|
|
ru: { year: "гггг", month: "мм", day: "дд" },
|
|
sc: { year: "aaaa", month: "mm", day: "dd" },
|
|
scn: { year: "aaaa", month: "mm", day: "jj" },
|
|
sk: { year: "rrrr", month: "mm", day: "dd" },
|
|
sl: { year: "llll", month: "mm", day: "dd" },
|
|
sr: { year: "гггг", month: "мм", day: "дд" },
|
|
sv: { year: "åååå", month: "mm", day: "dd" },
|
|
szl: { year: "rrrr", month: "mm", day: "dd" },
|
|
tg: { year: "сссс", month: "мм", day: "рр" },
|
|
th: { year: "ปปปป", month: "ดด", day: "วว" },
|
|
tr: { year: "yyyy", month: "aa", day: "gg" },
|
|
uk: { year: "рррр", month: "мм", day: "дд" },
|
|
"zh-CN": { year: "年", month: "月", day: "日" },
|
|
"zh-TW": { year: "年", month: "月", day: "日" },
|
|
};
|
|
function getPlaceholderObj(locale) {
|
|
if (!isSupportedLocale(locale)) {
|
|
const localeLanguage = getLocaleLanguage(locale);
|
|
if (!isSupportedLocale(localeLanguage)) {
|
|
return placeholders.en;
|
|
}
|
|
else {
|
|
return placeholders[localeLanguage];
|
|
}
|
|
}
|
|
else {
|
|
return placeholders[locale];
|
|
}
|
|
}
|
|
export function getPlaceholder(field, value, locale) {
|
|
if (isPlaceholderField(field))
|
|
return getPlaceholderObj(locale)[field];
|
|
if (isDefaultField(field))
|
|
return value;
|
|
if (isTimeField(field))
|
|
return "––";
|
|
return "";
|
|
}
|
|
function isSupportedLocale(locale) {
|
|
return supportedLocales.includes(locale);
|
|
}
|
|
function isPlaceholderField(field) {
|
|
return placeholderFields.includes(field);
|
|
}
|
|
function isTimeField(field) {
|
|
return field === "hour" || field === "minute" || field === "second";
|
|
}
|
|
function isDefaultField(field) {
|
|
return field === "era" || field === "dayPeriod";
|
|
}
|
|
function getLocaleLanguage(locale) {
|
|
if (Intl.Locale) {
|
|
return new Intl.Locale(locale).language;
|
|
}
|
|
return locale.split("-")[0];
|
|
}
|