diff --git a/src/i18n.ts b/src/i18n.ts index bf1b9b2..fa46716 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -3,12 +3,35 @@ import plLang from './locales/pl.json'; import { createI18n } from 'vue-i18n'; +function customRule(choice: number, choicesLength: number) { + if (choice === 0) { + return 0; + } + + const teen = choice > 10 && choice < 20; + const endsWithOne = choice % 10 === 1; + + if (!teen && endsWithOne) { + return 1; + } + + if (!teen && choice % 10 >= 2 && choice % 10 <= 4) { + return 2; + } + + return choicesLength < 4 ? 2 : 3; +} + const i18n = createI18n({ locale: 'pl', legacy: false, warnHtmlMessage: false, fallbackLocale: 'pl', + pluralizationRules: { + pl: customRule + }, + messages: { en: enLang, pl: plLang diff --git a/src/locales/en.json b/src/locales/en.json index 664b684..7f1c0d7 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -593,7 +593,18 @@ "tablice-link": "Timetable summary board
(by Thundo)", "bottom-info": "Show full history in the Journal tab", "btn-show-internal-routes": "Show internal routes", - "btn-hide-internal-routes": "Hide internal routes" + "btn-hide-internal-routes": "Hide internal routes", + "top-list": { + "header": "RECORDS ON THE SCENERY", + "mode-likes": "DISP. RATING", + "mode-dispatchers": "DUTY COUNT", + "scope-name": "GENERAL", + "scope-hash": "CURRENT HASH", + + "place": "{n}. place", + "like-count": "Rating: {n}", + "dispatch-count": "No duties | 1 duty | Duties: {n}" + } }, "availability": { "title": "Availability", diff --git a/src/locales/pl.json b/src/locales/pl.json index 59e623e..7f80222 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -580,13 +580,16 @@ "bottom-info": "Pokaż pełną historię w zakładce Dziennika", "btn-show-internal-routes": "Pokazuj szlaki wewnętrzne", "btn-hide-internal-routes": "Ukrywaj szlaki wewnętrzne", - "top-list": { "header": "REKORDY NA SCENERII", "mode-likes": "OCENA DR", "mode-dispatchers": "LICZBA DYŻURÓW", "scope-name": "OGÓLNIE", - "scope-hash": "OBECNY HASH" + "scope-hash": "OBECNY HASH", + + "place": "{n}. miejsce", + "like-count": "Ocena: {n}", + "dispatch-count": "Brak dyżurów | 1 dyżur | Dyżury: {n}" } }, "availability": {