From c2e1d062e8947cfeca7f0e3365f3df6a3bc4c846 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sun, 4 Dec 2022 18:39:45 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B0=20=D0=BD=D0=B0=D0=B9=D0=B4=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/opds/AuthorPage.js | 3 ++- server/core/opds/BasePage.js | 2 +- server/core/opds/SeriesPage.js | 3 ++- server/core/opds/TitlePage.js | 3 ++- server/core/utils.js | 20 ++++++++++++++++++++ 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/server/core/opds/AuthorPage.js b/server/core/opds/AuthorPage.js index 9ad4965..3d14936 100644 --- a/server/core/opds/AuthorPage.js +++ b/server/core/opds/AuthorPage.js @@ -1,4 +1,5 @@ const BasePage = require('./BasePage'); +const utils = require('../utils'); class AuthorPage extends BasePage { constructor(config) { @@ -172,7 +173,7 @@ class AuthorPage extends BasePage { if (rec.count) { e.content = { '*ATTRS': {type: 'text'}, - '*TEXT': `${rec.count} авторов`, + '*TEXT': `${rec.count} автор${utils.wordEnding(rec.count, 0)}`, }; } diff --git a/server/core/opds/BasePage.js b/server/core/opds/BasePage.js index 32d52df..e0c19a9 100644 --- a/server/core/opds/BasePage.js +++ b/server/core/opds/BasePage.js @@ -196,7 +196,7 @@ class BasePage { } if (!query.others && others.length) - result.unshift({id: 'other', title: otherTitle, q: '___others'}); + result.unshift({id: 'other', title: otherTitle, q: '___others', count: others.length}); return (!query.others ? result : others); } diff --git a/server/core/opds/SeriesPage.js b/server/core/opds/SeriesPage.js index 06a1996..66097e0 100644 --- a/server/core/opds/SeriesPage.js +++ b/server/core/opds/SeriesPage.js @@ -1,4 +1,5 @@ const BasePage = require('./BasePage'); +const utils = require('../utils'); class SeriesPage extends BasePage { constructor(config) { @@ -105,7 +106,7 @@ class SeriesPage extends BasePage { if (rec.count) { e.content = { '*ATTRS': {type: 'text'}, - '*TEXT': `${rec.count} серий`, + '*TEXT': `${rec.count} сери${utils.wordEnding(rec.count, 1)}`, }; } diff --git a/server/core/opds/TitlePage.js b/server/core/opds/TitlePage.js index 08fc40f..f4511f3 100644 --- a/server/core/opds/TitlePage.js +++ b/server/core/opds/TitlePage.js @@ -1,4 +1,5 @@ const BasePage = require('./BasePage'); +const utils = require('../utils'); class TitlePage extends BasePage { constructor(config) { @@ -75,7 +76,7 @@ class TitlePage extends BasePage { if (rec.count) { e.content = { '*ATTRS': {type: 'text'}, - '*TEXT': `${rec.count} названий`, + '*TEXT': `${rec.count} назван${utils.wordEnding(rec.count, 3)}`, }; } diff --git a/server/core/utils.js b/server/core/utils.js index 7516c5c..98ff85b 100644 --- a/server/core/utils.js +++ b/server/core/utils.js @@ -174,6 +174,25 @@ function makeValidFileNameOrEmpty(fileName) { } } +function wordEnding(num, type = 0) { + const endings = [ + ['ов', '', 'а', 'а', 'а', 'ов', 'ов', 'ов', 'ов', 'ов'],//0 + ['й', 'я', 'и', 'и', 'и', 'й', 'й', 'й', 'й', 'й'],//1 + ['о', '', 'о', 'о', 'о', 'о', 'о', 'о', 'о', 'о'],//2 + ['ий', 'ие', 'ия', 'ия', 'ия', 'ий', 'ий', 'ий', 'ий', 'ий'],//3 + ['о', 'а', 'о', 'о', 'о', 'о', 'о', 'о', 'о', 'о'],//4 + ['ок', 'ка', 'ки', 'ки', 'ки', 'ок', 'ок', 'ок', 'ок', 'ок'],//5 + ['ых', 'ое', 'ых', 'ых', 'ых', 'ых', 'ых', 'ых', 'ых', 'ых'],//6 + ['о', 'о', 'о', 'о', 'о', 'о', 'о', 'о', 'о', 'о'],//7 + ]; + const deci = num % 100; + if (deci > 10 && deci < 20) { + return endings[type][0]; + } else { + return endings[type][num % 10]; + } +} + module.exports = { sleep, processLoop, @@ -193,4 +212,5 @@ module.exports = { toUnixPath, makeValidFileName, makeValidFileNameOrEmpty, + wordEnding, }; \ No newline at end of file