From e36ca1d8be7d990014197d7f226481f8500e826d Mon Sep 17 00:00:00 2001 From: Mihai Cozmuta Date: Tue, 19 Aug 2025 14:14:24 +0300 Subject: [PATCH] Add zh and ru support --- humanize-duration.js | 38 +++++++++++++++++++++++++++++- package.json | 2 +- test/definitions/ru.csv | 47 ++++++++++++++++++++++++++++++++++++++ test/definitions/zh_CN.csv | 18 +++++++++++++++ 4 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 test/definitions/ru.csv create mode 100644 test/definitions/zh_CN.csv diff --git a/humanize-duration.js b/humanize-duration.js index 933dfd9..aec5477 100644 --- a/humanize-duration.js +++ b/humanize-duration.js @@ -24,6 +24,17 @@ ms: function (c) { return 'millisecond' + (c === 1 ? '' : 's') }, decimal: '.' }, + ru: { + y: function (c) { return ['лет', 'год', 'года'][getSlavicForm(c)] }, + mo: function (c) { return ['месяцев', 'месяц', 'месяца'][getSlavicForm(c)] }, + w: function (c) { return ['недель', 'неделя', 'недели'][getSlavicForm(c)] }, + d: function (c) { return ['дней', 'день', 'дня'][getSlavicForm(c)] }, + h: function (c) { return ['часов', 'час', 'часа'][getSlavicForm(c)] }, + m: function (c) { return ['минут', 'минута', 'минуты'][getSlavicForm(c)] }, + s: function (c) { return ['секунд', 'секунда', 'секунды'][getSlavicForm(c)] }, + ms: function (c) { return ['миллисекунд', 'миллисекунда', 'миллисекунды'][getSlavicForm(c)] }, + decimal: ',' + }, ur: { y: 'سال', mo: function (c) { return c === 1 ? 'مہینہ' : 'مہینے' }, @@ -34,7 +45,18 @@ s: 'سیکنڈ', ms: 'ملی سیکنڈ', decimal: '.' - } + }, + zh_CN: { + y: '年', + mo: '个月', + w: '周', + d: '天', + h: '小时', + m: '分钟', + s: '秒', + ms: '毫秒', + decimal: '.' + }, } // You can create a humanizer, which returns a function with default @@ -191,6 +213,20 @@ return destination } + function getSlavicForm (c) { + if (Math.floor(c) !== c) { + return 2 + } else if ((c % 100 >= 5 && c % 100 <= 20) || (c % 10 >= 5 && c % 10 <= 9) || c % 10 === 0) { + return 0 + } else if (c % 10 === 1) { + return 1 + } else if (c > 1) { + return 2 + } else { + return 0 + } + } + humanizeDuration.getSupportedLanguages = function getSupportedLanguages () { var result = [] for (var language in languages) { diff --git a/package.json b/package.json index a0b85a2..a669679 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "Abdul Jalil (https://github.com/abduljalilm94)", "Alex Sam (https://github.com/sam-lex)" ], - "version": "3.15.1-sl.2", + "version": "3.15.1-sl.3", "description": "Convert millisecond durations to English and many other languages.", "homepage": "https://github.com/SectorLabs/HumanizeDuration.js", "main": "humanize-duration.js", diff --git a/test/definitions/ru.csv b/test/definitions/ru.csv new file mode 100644 index 0000000..8f477fe --- /dev/null +++ b/test/definitions/ru.csv @@ -0,0 +1,47 @@ +0$0 миллисекунд +1$1 миллисекунда +1.2$1,2 миллисекунды +2$2 миллисекунды +3$3 миллисекунды +4$4 миллисекунды +5$5 миллисекунд +11$11 миллисекунд +12$12 миллисекунд +13$13 миллисекунд +14$14 миллисекунд +111$111 миллисекунд +112$112 миллисекунд +113$113 миллисекунд +114$114 миллисекунд +121$121 миллисекунда +122$122 миллисекунды +123$123 миллисекунды +123$123 миллисекунды +1000$1 секунда +2000$2 секунды +3000$3 секунды +4000$4 секунды +60000$1 минута +120000$2 минуты +180000$3 минуты +240000$4 минуты +3600000$1 час +7200000$2 часа +10800000$3 часа +14400000$4 часа +86400000$1 день +172800000$2 дня +259200000$3 дня +345600000$4 дня +604800000$1 неделя +1209600000$2 недели +1814400000$3 недели +2419200000$4 недели +2629800000$1 месяц +5259600000$2 месяца +7889400000$3 месяца +10519200000$4 месяца +31557600000$1 год +63115200000$2 года +94672800000$3 года +126230400000$4 года \ No newline at end of file diff --git a/test/definitions/zh_CN.csv b/test/definitions/zh_CN.csv new file mode 100644 index 0000000..bc496a7 --- /dev/null +++ b/test/definitions/zh_CN.csv @@ -0,0 +1,18 @@ +0$0 毫秒 +1$1 毫秒 +1.2$1.2 毫秒 +1000$1 秒 +60000$1 分钟 +3600000$1 小时 +86400000$1 天 +604800000$1 周 +2629800000$1 个月 +31557600000$1 年 +2$2 毫秒 +2000$2 秒 +120000$2 分钟 +7200000$2 小时 +172800000$2 天 +1209600000$2 周 +5259600000$2 个月 +63115200000$2 年 \ No newline at end of file