Introduce custom locale-data polyfill for udm locale

This commit is contained in:
ErickSkrauch committed 2026-06-09 17:23:31 +02:00
1 parent 485493f184
commit f04d8d741b
3 files changed
+165 -4

No files matched your search

+3 -4
View File
@@ -1,11 +1,12 @@
/* eslint-disable @typescript-eslint/no-var-requires */
import React, { ComponentType } from 'react';
import { IntlProvider, addLocaleData } from 'react-intl';
import { IntlProvider } from 'react-intl';
import { SUPPORTED_LANGUAGES, DEFAULT_LANGUAGE } from 'params';
import { Html, BaseLayout } from 'components';
import { loadLocale } from 'services/i18n';
interface Params {
type: string;
@@ -19,9 +20,7 @@ const App: ComponentType<Params> = ({ type, payload: { locale, ...params } }) =>
locale = DEFAULT_LANGUAGE;
}
const { default: messages } = require(`!extended-translations-loader!i18n/${locale}.json`);
const localeData = require(`react-intl/locale-data/${locale}.js`);
addLocaleData(localeData);
const messages = loadLocale(locale);
const { default: Email } = require(`emails/${type}/index`);
+18
View File
@@ -0,0 +1,18 @@
/* eslint-disable @typescript-eslint/no-var-requires */
import { addLocaleData } from 'react-intl';
export function loadLocale(locale: string): any {
const { default: messages } = require(`!extended-translations-loader!i18n/${locale}.json`);
let localeData;
try {
localeData = require(`./locale-data/${locale}.js`).default;
} catch {
localeData = require(`react-intl/locale-data/${locale}.js`);
}
addLocaleData(localeData);
return messages;
}
+144
View File
@@ -0,0 +1,144 @@
export default [
{
locale: 'udm',
pluralRuleFunction: () => 'other',
fields: {
year: {
displayName: 'ар',
relative: {
0: 'таяз аре',
1: 'вуоно аре',
'-1': 'кылем аре',
},
relativeTime: {
future: { other: '{0} ар ортчыса' },
past: { other: '{0} ар талэсь азьло' },
},
},
'year-short': {
displayName: 'ар',
relative: {
0: 'туэ',
1: 'вуоно аре',
'-1': 'кылем аре',
},
relativeTime: {
future: { other: '{0} ар ортчыса' },
past: { other: '{0} ар талэсь азьло' },
},
},
month: {
displayName: 'толэзь',
relative: {
0: 'таяз толэзе',
1: 'вуоно толэзе',
'-1': 'ортчем толэзе',
},
relativeTime: {
future: { other: '{0} толэзь ортчыса' },
past: { other: '{0} толэзь талэсь азьло' },
},
},
'month-short': {
displayName: 'толэзь',
relative: {
0: 'таяз толэзе',
1: 'вуоно толэзе',
'-1': 'ортчем толэзе',
},
relativeTime: {
future: { other: '{0} толэзь ортчыса' },
past: { other: '{0} толэзь талэсь азьло' },
},
},
day: {
displayName: 'нунал',
relative: {
0: 'туннэ',
1: 'ӵуказе',
2: 'ӵуказе улыса',
'-2': 'валлян',
'-1': 'толон',
},
relativeTime: {
future: { other: '{0} нунал ортчыса' },
past: { other: '{0} нунал талэсь азьло' },
},
},
'day-short': {
displayName: 'нунал',
relative: {
0: 'туннэ',
1: 'ӵуказе',
2: 'ӵуказе улыса',
'-2': 'валлян',
'-1': 'толон',
},
relativeTime: {
future: { other: '{0} нунал ортчыса' },
past: { other: '{0} нунал талэсь азьло' },
},
},
hour: {
displayName: 'час',
relative: {
0: 'таяз часэ',
},
relativeTime: {
future: { other: '{0} час ортчыса' },
past: { other: '{0} час талэсь азьло' },
},
},
'hour-short': {
displayName: 'час',
relative: {
0: 'таяз часэ',
},
relativeTime: {
future: { other: '{0} час ортчыса' },
past: { other: '{0} час талэсь азьло' },
},
},
minute: {
displayName: 'минут',
relative: {
0: 'таяз минутэ',
},
relativeTime: {
future: { other: '{0} минут ортчыса' },
past: { other: '{0} минут талэсь азьло' },
},
},
'minute-short': {
displayName: 'минут',
relative: {
0: 'таяз минутэ',
},
relativeTime: {
future: { other: '{0} минут ортчыса' },
past: { other: '{0} минут талэсь азьло' },
},
},
second: {
displayName: 'секунд',
relative: {
0: 'таяз секундэ',
},
relativeTime: {
future: { other: '{0} секунд ортчыса' },
past: { other: '{0} секунд талэзь азьло' },
},
},
'second-short': {
displayName: 'секунд',
relative: {
0: 'таяз секундэ',
},
relativeTime: {
future: { other: '{0} секунд ортчыса' },
past: { other: '{0} секунд талэзь азьло' },
},
},
},
},
];