From 5952b3f8c9cfbad5dc259559403cb7cd6c77834d Mon Sep 17 00:00:00 2001 From: Valentyne Stigloher Date: Sun, 26 May 2024 11:39:11 +0200 Subject: [PATCH 1/3] (de)(nouns) typo --- locale/de/nouns/NounsExtra.vue | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/locale/de/nouns/NounsExtra.vue b/locale/de/nouns/NounsExtra.vue index 811e3986d..675d6e027 100644 --- a/locale/de/nouns/NounsExtra.vue +++ b/locale/de/nouns/NounsExtra.vue @@ -155,14 +155,14 @@ export default { A_pl: 'die Arbeitense', }), extendedDeclension: new NounDeclension({ - N: 'meinens beste Lehrens', - G: 'meinens beste Lehrens', - D: 'meinens beste Lehrens', - A: 'meinens beste Lehrens', - N_pl: 'meine besten Lehrens', - G_pl: 'meiner besten Lehrens', - D_pl: 'meinen besten Lehrens', - A_pl: 'meine besten Lehrens', + N: 'meinens beste Lehrense', + G: 'meinens beste Lehrense', + D: 'meinens beste Lehrense', + A: 'meinens beste Lehrense', + N_pl: 'meine besten Lehrense', + G_pl: 'meiner besten Lehrense', + D_pl: 'meinen besten Lehrense', + A_pl: 'meine besten Lehrense', }), }, 'ex-Formen': { @@ -240,7 +240,7 @@ export default { A: 'die Arbeitsperson', N_pl: 'die Arbeitspersonen', G_pl: 'der Arbeitspersonen', - D_pl: 'den Arbeitspersonenn', + D_pl: 'den Arbeitspersonen', A_pl: 'die Arbeitspersonen', }), extendedDeclension: new NounDeclension({ @@ -250,7 +250,7 @@ export default { A: 'meine beste Lehrperson', N_pl: 'meine besten Lehrpersonen', G_pl: 'meiner besten Lehrpersonen', - D_pl: 'meinen besten Lehrpersonenn', + D_pl: 'meinen besten Lehrpersonen', A_pl: 'meine besten Lehrpersonen', }), }, From 49be129029f82a52d52b12b4640145edc6c21612 Mon Sep 17 00:00:00 2001 From: Valentyne Stigloher Date: Sun, 26 May 2024 12:00:42 +0200 Subject: [PATCH 2/3] (de)(nouns) update and add templates --- locale/de/nouns/nounTemplates.tsv | 7 +++++-- src/classes.ts | 29 +++++++++++++++++++++-------- src/data.ts | 9 +-------- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/locale/de/nouns/nounTemplates.tsv b/locale/de/nouns/nounTemplates.tsv index 696511d98..66e7d55e4 100644 --- a/locale/de/nouns/nounTemplates.tsv +++ b/locale/de/nouns/nounTemplates.tsv @@ -1,3 +1,6 @@ masc fem neutr mascPl femPl neutrPl --mann -frau -person -männer -frauen -leute -- -in -In/-:in/-*in -e -innen -Innen/-:innen/-*innen +der -mann die -frau die -person die -männer die -frauen die -leute +der - die -in das -y/de -e/din -nin/dens -ens/der:die -:in/der_die -_in/der*die -*in die -en die -innen die -ys/die -erne/die -ninnen/die -ense/die -:innen/die -_innen/die -*innen +der - die -in das -y/de -ere/din -nin/dens -ens/der:die -:in/der_die -_in/der*die -*in die -e die -innen die -ys/die -erne/die -ninnen/die -ense/die -:innen/die -_innen/die -*innen +der -e die -in das -y/de -ere/din -nin/dens -ens/der:die -:in/der_die -_in/der*die -*in die -en die -innen die -ys/die -erne/die -erninnen/die -ense/die -:innen/die -_innen/die -*innen +der -er die -erin das -y/de -ere/din -ernin/dens -ens/der:die -er:in/der_die -er_in/der*die -er*in die -er die -erinnen die -ys/de -erne/die -erninnen/die -ense/die -er:innen/die -er_innen/die -er*innen diff --git a/src/classes.ts b/src/classes.ts index 59239aee1..25ad82370 100644 --- a/src/classes.ts +++ b/src/classes.ts @@ -875,6 +875,8 @@ export interface NounRaw { declension: unknown; } +const gendersWithNumerus = ['masc', 'fem', 'neutr', 'mascPl', 'femPl', 'neutrPl'] as const; + export class Noun { id: string; masc: string[]; @@ -914,7 +916,7 @@ export class Noun { return true; } - for (const field of ['masc', 'fem', 'neutr', 'mascPl', 'femPl', 'neutrPl'] as const) { + for (const field of gendersWithNumerus) { for (const value of this[field]) { const v = value.toLowerCase(); if (filter.startsWith('-') && v.endsWith(filter.substring(1))) { @@ -947,21 +949,32 @@ export class NounTemplate { this.neutrPl = neutrPl; } + static from(data: Record): NounTemplate { + return new NounTemplate( + data.masc.split('/'), + data.fem.split('/'), + data.neutr.split('/'), + data.mascPl.split('/'), + data.femPl.split('/'), + data.neutrPl.split('/'), + ); + } + fill(stem: string) { return { - masc: this.masc.map((e) => stem + e), - fem: this.fem.map((e) => stem + e), - neutr: this.neutr.map((e) => stem + e), - mascPl: this.mascPl.map((e) => stem + e), - femPl: this.femPl.map((e) => stem + e), - neutrPl: this.neutrPl.map((e) => stem + e), + masc: this.masc.map((e) => e.replace('-', stem)), + fem: this.fem.map((e) => e.replace('-', stem)), + neutr: this.neutr.map((e) => e.replace('-', stem)), + mascPl: this.mascPl.map((e) => e.replace('-', stem)), + femPl: this.femPl.map((e) => e.replace('-', stem)), + neutrPl: this.neutrPl.map((e) => e.replace('-', stem)), base: null, }; } toString(): string { return [this.masc, this.fem, this.neutr, this.mascPl, this.femPl, this.neutrPl] - .map((es) => es.map((e) => `-${e}`).join('/')) + .map((es) => es.join('/')) .join(', ') ; } diff --git a/src/data.ts b/src/data.ts index 4c2c63df2..bbbe5e33a 100644 --- a/src/data.ts +++ b/src/data.ts @@ -20,14 +20,7 @@ export const examples = buildList(function* () { import nounTemplatesRaw from '../data/nouns/nounTemplates.tsv'; export const nounTemplates = buildList(function* () { for (const t of nounTemplatesRaw) { - yield new NounTemplate( - t.masc.replace(/-/g, '').split('/'), - t.fem.replace(/-/g, '').split('/'), - t.neutr.replace(/-/g, '').split('/'), - t.mascPl.replace(/-/g, '').split('/'), - t.femPl.replace(/-/g, '').split('/'), - t.neutrPl.replace(/-/g, '').split('/'), - ); + yield NounTemplate.from(t); } }); From fa99614dede4a1689b605a2d8e1ff2bdcee463e6 Mon Sep 17 00:00:00 2001 From: Valentyne Stigloher Date: Sun, 26 May 2024 12:55:52 +0200 Subject: [PATCH 3/3] (nouns) preview for noun templates --- components/Abbreviation.vue | 37 ++++++---- components/Noun.vue | 14 ++-- components/NounSubmitForm.vue | 122 +++++++++++++++++++++++---------- locale/_base/translations.suml | 7 +- locale/ar/translations.suml | 5 +- locale/de/translations.suml | 7 +- locale/en/translations.suml | 7 +- locale/eo/translations.suml | 5 +- locale/es/translations.suml | 5 +- locale/et/translations.suml | 5 +- locale/fr/translations.suml | 3 +- locale/gl/translations.suml | 5 +- locale/it/translations.suml | 5 +- locale/ja/translations.suml | 3 +- locale/ko/translations.suml | 5 +- locale/lad/translations.suml | 5 +- locale/nl/translations.suml | 3 +- locale/no/translations.suml | 5 +- locale/pl/translations.suml | 5 +- locale/pt/translations.suml | 5 +- locale/ro/translations.suml | 5 +- locale/ru/translations.suml | 5 +- locale/sv/translations.suml | 5 +- locale/tr/translations.suml | 5 +- locale/ua/translations.suml | 5 +- locale/vi/translations.suml | 3 +- locale/zh/translations.suml | 5 +- src/classes.ts | 6 +- src/missingTranslations.ts | 4 ++ 29 files changed, 202 insertions(+), 99 deletions(-) diff --git a/components/Abbreviation.vue b/components/Abbreviation.vue index dc8110b63..538d4a628 100644 --- a/components/Abbreviation.vue +++ b/components/Abbreviation.vue @@ -4,26 +4,35 @@ -