Add Udmurt language, replace locales override implementation

This commit is contained in:
ErickSkrauch 2021-03-27 03:57:26 +01:00
parent bda3994138
commit 4379444abe
No known key found for this signature in database
GPG Key ID: 669339FCBB30EE0E
7 changed files with 448 additions and 14 deletions

View File

@ -45,7 +45,8 @@
"build:dll": "babel-node --extensions '.ts,.d.ts' ./packages/scripts/build-dll.ts", "build:dll": "babel-node --extensions '.ts,.d.ts' ./packages/scripts/build-dll.ts",
"build:serve": "http-server --proxy https://dev.account.ely.by ./build", "build:serve": "http-server --proxy https://dev.account.ely.by ./build",
"sb": "APP_ENV=storybook start-storybook -p 9009 --ci", "sb": "APP_ENV=storybook start-storybook -p 9009 --ci",
"sb:build": "APP_ENV=storybook build-storybook" "sb:build": "APP_ENV=storybook build-storybook",
"postinstall": "node -e \"try{require('./postinstall.js')}catch(e){}\""
}, },
"lint-staged": { "lint-staged": {
"*.{json,scss,css,md}": [ "*.{json,scss,css,md}": [

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480">
<path d="M0 0h204.8v480H0z"/>
<path fill="#D21" d="M435.2 0H640v480H435.2z"/>
<path fill="#FFF" d="M204.8 0h230.4v480H204.8z"/>
<path fill="#D21" d="M286.667 140L420 273.333H220L353.333 140v200L220 206.667h200L286.667 340V140z"/>
</svg>

After

Width:  |  Height:  |  Size: 316 B

View File

@ -0,0 +1,250 @@
IntlPolyfill.__addLocaleData({
locale: "udm",
date: {
ca: ["gregory", "generic"],
hourNo0: true,
hour12: false,
formats: {
short: "{1}, {0}",
medium: "{1}, {0}",
full: "{1}, {0}",
long: "{1}, {0}",
availableFormats: {
d: "d",
E: "ccc",
Ed: "ccc, d",
Ehm: "E h:mm a",
EHm: "E HH:mm",
Ehms: "E h:mm:ss a",
EHms: "E HH:mm:ss",
Gy: "G y 'аре'",
GyMMM: "LLL G y",
GyMMMd: "d MMM G y 'аре'",
GyMMMEd: "E, d MMM G y 'аре'",
h: "h a",
H: "H",
hm: "h:mm a",
Hm: "H:mm",
hms: "h:mm:ss a",
Hms: "H:mm:ss",
hmsv: "h:mm:ss a v",
Hmsv: "H:mm:ss v",
hmv: "h:mm a v",
Hmv: "H:mm v",
M: "L",
Md: "dd.MM",
MEd: "E, dd.MM",
MMdd: "dd.MM",
MMM: "LLL",
MMMd: "d MMM",
MMMEd: "ccc, d MMM",
MMMMd: "d MMMM",
ms: "mm:ss",
y: "y",
yM: "MM.y",
yMd: "dd.MM.y",
yMEd: "ccc, d.MM.y 'аре'",
yMM: "MM.y",
yMMM: "LLL y 'аре'",
yMMMd: "d MMM y 'аре'",
yMMMEd: "E, d MMM y 'аре'",
yMMMM: "LLLL y 'аре'",
yQQQ: "QQQ y 'аре'",
yQQQQ: "QQQQ y 'аре'",
},
dateFormats: {
yMMMMEEEEd: "EEEE, d MMMM y 'аре'",
yMMMMd: "d MMMM y 'аре'",
yMMMd: "d MMM y 'аре'",
yMd: "dd.MM.yy",
},
timeFormats: {
hmmsszzzz: "H:mm:ss zzzz",
hmsz: "H:mm:ss z",
hms: "H:mm:ss",
hm: "H:mm",
},
},
calendars: {
generic: {
months: {
narrow: [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
],
short: [
"Т01",
"Т02",
"Т03",
"Т04",
"Т05",
"Т06",
"Т07",
"Т08",
"Т09",
"Т10",
"Т11",
"Т12",
],
long: [
"Т01",
"Т02",
"Т03",
"Т04",
"Т05",
"Т06",
"Т07",
"Т08",
"Т09",
"Т10",
"Т11",
"Т12",
],
},
days: {
narrow: ["А", "В", "П", "В", "П", "У", "К"],
short: ["ан", "вр", "пк", "вн", "па", "уд", "кн"],
long: [
"арнянунал",
"вордӥськон",
"пуксён",
"вирнунал",
"покчиарня",
"удмуртарня",
"кӧснунал",
],
},
eras: {
narrow: ["ERA0", "ERA1"],
short: ["ERA0", "ERA1"],
long: ["ERA0", "ERA1"],
},
dayPeriods: { am: "ЛА", pm: "ЛБ" },
},
gregory: {
months: {
narrow: ["Т", "Т", "М", "А", "М", "И", "И", "А", "С", "О", "Н", "Д"],
short: [
"тшт",
"тпт",
"южт",
"ошт",
"крт",
"ивт",
"пст",
"гкт",
"кут",
"квт",
"шкт",
"тст",
],
long: [
"толшоре",
"тулыспалэ",
"южтолэзе",
"оштолэзе",
"куартолэзе",
"инвожое",
"пӧсьтолэзе",
"гудырикошконэ",
"куарусёнэ",
"коньывуонэ",
"шуркынмонэ",
"толсуре",
],
},
days: {
narrow: ["А", "В", "П", "В", "П", "У", "К"],
short: ["ан", "вр", "пк", "вн", "па", "уд", "кн"],
long: [
"арнянунал",
"вордӥськон",
"пуксён",
"вирнунал",
"покчиарня",
"удмуртарня",
"кӧснунал",
],
},
eras: {
narrow: ["КА", "КБ", "ава", "ав"],
short: ["КА", "КБ", "а.в.а", "а.в."],
long: [
"Кристослэн вордскем азяз",
"Кристослэн вордскем бераз",
"асьме вакытлэсь азьло",
"асьме вакытэ",
],
},
dayPeriods: { am: "ЛА", pm: "ЛБ" },
},
},
},
number: {
nu: ["latn"],
patterns: {
decimal: {
positivePattern: "{number}",
negativePattern: "{minusSign}{number}",
},
currency: {
positivePattern: "{number} {currency}",
negativePattern: "{minusSign}{number} {currency}",
},
percent: {
positivePattern: "{number} {percentSign}",
negativePattern: "{minusSign}{number} {percentSign}",
},
},
symbols: {
latn: {
decimal: ",",
group: " ",
nan: "лыд ӧвӧл",
plusSign: "+",
minusSign: "-",
percentSign: "%",
infinity: "∞",
},
},
currencies: {
AUD: "A$",
BRL: "R$",
CAD: "CA$",
CNY: "CN¥",
EUR: "€",
GBP: "£",
HKD: "HK$",
ILS: "₪",
INR: "₹",
JPY: "¥",
KRW: "₩",
MXN: "MX$",
NZD: "NZ$",
RUB: "₽",
RUR: "р.",
THB: "฿",
TMT: "ТМТ",
TWD: "NT$",
UAH: "₴",
USD: "$",
VND: "₫",
XAF: "FCFA",
XCD: "EC$",
XOF: "CFA",
XPF: "CFPF",
XXX: "XXXX",
},
},
});

View File

@ -0,0 +1,12 @@
Intl.PluralRules && 'function' == typeof Intl.PluralRules.__addLocaleData && Intl.PluralRules.__addLocaleData({
data: {
udm: {
categories: {
cardinal: ['other'],
ordinal: ['other'],
}, fn: function(a, l) {
return 'other';
},
},
}, availableLocales: ['udm'], aliases: {}, parentLocales: {},
});

View File

@ -0,0 +1,159 @@
Intl.RelativeTimeFormat && 'function' == typeof Intl.RelativeTimeFormat.__addLocaleData && Intl.RelativeTimeFormat.__addLocaleData({
data: {
udm: {
nu: ['latn'],
year: {
0: 'таяз аре',
1: 'вуоно аре',
'-1': 'кылем аре',
past: { other: '{0} ар талэсь азьло' },
future: { other: '{0} ар ортчыса' },
},
'year-short': {
0: 'туэ',
1: 'вуоно аре',
'-1': 'кылем аре',
past: { other: '{0} ар талэсь азьло' },
future: { other: '{0} ар ортчыса' },
},
'year-narrow': {
0: 'туэ',
1: 'кайта',
'-1': 'мийым',
past: { other: '{0} ар талэсь азьло' },
future: { other: '{0} ар ортчыса' },
},
quarter: {
0: 'таяз арньыльмосэ',
1: 'вуоно арньыльмосэ',
'-1': 'ортчем арньыльмосэ',
past: { other: '{0} арньыльмос талэсь азьло' },
future: { other: '{0} арныльмос ортчыса' },
},
'quarter-short': {
0: 'таяз арньыльмосэ',
1: 'вуоно арньыльмосэ',
'-1': 'ортчем арньыльмосэ',
past: { other: '{0} арньыльмос талэсь азьло' },
future: { other: '{0} арныльмос ортчыса' },
},
'quarter-narrow': {
0: 'таяз арньыльмосэ',
1: 'вуоно арньыльмосэ',
'-1': 'ортчем арньыльмосэ',
past: { other: '{0} арньыльмос талэсь азьло' },
future: { other: '{0} арныльмос ортчыса' },
},
month: {
0: 'таяз толэзе',
1: 'вуоно толэзе',
'-1': 'ортчем толэзе',
past: { other: '{0} толэзь талэсь азьло' },
future: { other: '{0} толэзь ортчыса' },
},
'month-short': {
0: 'таяз толэзе',
1: 'вуоно толэзе',
'-1': 'ортчем толэзе',
past: { other: '{0} толэзь талэсь азьло' },
future: { other: '{0} толэзь ортчыса' },
},
'month-narrow': {
0: 'таяз толэзе',
1: 'вуоно толэзе',
'-1': 'ортчем толэзе',
past: { other: '{0} толэзь талэсь азьло' },
future: { other: '{0} толэзь ортчыса' },
},
week: {
0: 'таяз арняе',
1: 'вуоно арняе',
'-1': 'ортчем арняе',
past: { other: '{0} арня талэсь азьло' },
future: { other: '{0} арня ортчыса' },
},
'week-short': {
0: 'таяз арняе',
1: 'вуоно арняе',
'-1': 'ортчем арняе',
past: { other: '{0} арня талэсь азьло' },
future: { other: '{0} арня ортчыса' },
},
'week-narrow': {
0: 'таяз арняе',
1: 'вуоно арняе',
'-1': 'ортчем арняе',
past: { other: '{0} арня талэсь азьло' },
future: { other: '{0} арня ортчыса' },
},
day: {
0: 'туннэ',
1: 'ӵуказе',
2: 'ӵуказе улыса',
'-2': 'валлян',
'-1': 'толон',
past: { other: '{0} нунал талэсь азьло' },
future: { other: '{0} нунал ортчыса' },
},
'day-short': {
0: 'туннэ',
1: 'ӵуказе',
2: 'ӵуказе улыса',
'-2': 'валлян',
'-1': 'толон',
past: { other: '{0} нунал талэсь азьло' },
future: { other: '{0} нунал ортчыса' },
},
'day-narrow': {
0: 'туннэ',
1: 'ӵуказе',
2: 'усьсэ',
'-2': 'валлян',
'-1': 'толон',
past: { other: '{0} нунал талэсь азьло' },
future: { other: '{0} нунал ортчыса' },
},
hour: { 0: 'таяз часэ', past: { other: '{0} час талэсь азьло' }, future: { other: '{0} час ортчыса' } },
'hour-short': {
0: 'таяз часэ',
past: { other: '{0} час талэсь азьло' },
future: { other: '{0} час ортчыса' },
},
'hour-narrow': {
0: 'таяз часэ',
past: { other: '{0} час талэсь азьло' },
future: { other: '{0} час ортчыса' },
},
minute: {
0: 'таяз минутэ',
past: { other: '{0} минут талэсь азьло' },
future: { other: '{0} минут ортчыса' },
},
'minute-short': {
0: 'таяз минутэ',
past: { other: '{0} минут талэсь азьло' },
future: { other: '{0} минут ортчыса' },
},
'minute-narrow': {
0: 'таяз минутэ',
past: { other: '{0} минут талэсь азьло' },
future: { other: '{0} минут ортчыса' },
},
second: {
0: 'таяз секундэ',
past: { other: '{0} секунд талэзь азьло' },
future: { other: '{0} секунд ортчыса' },
},
'second-short': {
0: 'таяз секундэ',
past: { other: '{0} секунд талэзь азьло' },
future: { other: '{0} секунд ортчыса' },
},
'second-narrow': {
0: 'таяз секундэ',
past: { other: '{0} секунд талэзь азьло' },
future: { other: '{0} секунд ортчыса' },
},
},
}, availableLocales: ['udm'], aliases: {}, parentLocales: {},
});

19
postinstall.js Executable file
View File

@ -0,0 +1,19 @@
#!/usr/bin/env node
/* eslint-disable @typescript-eslint/no-var-requires */
const fs = require('fs');
const path = require('path');
const localeOverrides = {
'packages/app/services/i18n/overrides/intl': 'node_modules/intl/locale-data/jsonp',
'packages/app/services/i18n/overrides/pluralrules': 'node_modules/@formatjs/intl-pluralrules/dist/locale-data',
// eslint-disable-next-line prettier/prettier
'packages/app/services/i18n/overrides/relativetimeformat': 'node_modules/@formatjs/intl-relativetimeformat/dist/locale-data',
};
Object.entries(localeOverrides).forEach(([sourceDir, targetDir]) => {
fs.readdirSync(sourceDir).forEach((localeFile) => {
fs.copyFileSync(path.join(sourceDir, localeFile), path.join(targetDir, localeFile));
});
});

View File

@ -201,19 +201,6 @@ const webpackConfig = {
type: 'javascript/auto', type: 'javascript/auto',
use: ['fontgen-loader'], use: ['fontgen-loader'],
}, },
{
// Replace some locales provided by FormatJS with local ones
test: /@formatjs\/intl-\w+\/dist\/locale-data/,
loader: 'file-replace-loader',
options: {
condition: 'if-replacement-exists',
replacement: (resource) =>
resource.replace(
/node_modules\/@formatjs\/intl-(\w+)\/dist\/locale-data\/(\w+)\.js/,
'packages/app/services/i18n/overrides/$1/$2.js',
),
},
},
], ],
}, },