From 134c20fefc6689aa7120c5845d717617c8db1cca Mon Sep 17 00:00:00 2001 From: Yegor Sychev Date: Sun, 19 Apr 2026 11:46:13 +0500 Subject: [PATCH 1/2] correct plural forms for week and millisecond in relative date phrases --- src/Humanizer/Locales/ru.yml | 20 +++++++++++++++---- .../Localisation/LocalePhraseTheoryData.cs | 12 +++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/Humanizer/Locales/ru.yml b/src/Humanizer/Locales/ru.yml index c9f7551aa..4ce9cfa32 100644 --- a/src/Humanizer/Locales/ru.yml +++ b/src/Humanizer/Locales/ru.yml @@ -27,7 +27,10 @@ surfaces: millisecond: single: 'миллисекунду назад' multiple: - forms: 'миллисекунд' + forms: + default: 'миллисекунд' + singular: 'миллисекунду' + dual: 'миллисекунды' afterCount: 'назад' second: single: 'секунду назад' @@ -67,7 +70,10 @@ surfaces: week: single: 'неделю назад' multiple: - forms: 'недель' + forms: + default: 'недель' + singular: 'неделю' + dual: 'недели' afterCount: 'назад' month: single: 'месяц назад' @@ -89,7 +95,10 @@ surfaces: millisecond: single: 'через миллисекунду' multiple: - forms: 'миллисекунд' + forms: + default: 'миллисекунд' + singular: 'миллисекунду' + dual: 'миллисекунды' beforeCount: 'через' second: single: 'через секунду' @@ -129,7 +138,10 @@ surfaces: week: single: 'через неделю' multiple: - forms: 'недель' + forms: + default: 'недель' + singular: 'неделю' + dual: 'недели' beforeCount: 'через' month: single: 'через месяц' diff --git a/tests/Humanizer.Tests/Localisation/LocalePhraseTheoryData.cs b/tests/Humanizer.Tests/Localisation/LocalePhraseTheoryData.cs index 292ba04e0..3a44ba3b4 100644 --- a/tests/Humanizer.Tests/Localisation/LocalePhraseTheoryData.cs +++ b/tests/Humanizer.Tests/Localisation/LocalePhraseTheoryData.cs @@ -745,6 +745,18 @@ static class LocalePhraseTheoryData { "ru", 2, TimeUnit.Month, Tense.Future, "через 2 месяца" }, { "ru", 1, TimeUnit.Year, Tense.Past, "год назад" }, { "ru", 2, TimeUnit.Year, Tense.Future, "через 2 года" }, + { "ru", 1, TimeUnit.Week, Tense.Past, "неделю назад" }, + { "ru", 2, TimeUnit.Week, Tense.Past, "2 недели назад" }, + { "ru", 7, TimeUnit.Week, Tense.Past, "7 недель назад" }, + { "ru", 1, TimeUnit.Week, Tense.Future, "через неделю" }, + { "ru", 2, TimeUnit.Week, Tense.Future, "через 2 недели" }, + { "ru", 7, TimeUnit.Week, Tense.Future, "через 7 недель" }, + { "ru", 1, TimeUnit.Millisecond, Tense.Past, "миллисекунду назад" }, + { "ru", 2, TimeUnit.Millisecond, Tense.Past, "2 миллисекунды назад" }, + { "ru", 7, TimeUnit.Millisecond, Tense.Past, "7 миллисекунд назад" }, + { "ru", 1, TimeUnit.Millisecond, Tense.Future, "через миллисекунду" }, + { "ru", 2, TimeUnit.Millisecond, Tense.Future, "через 2 миллисекунды" }, + { "ru", 7, TimeUnit.Millisecond, Tense.Future, "через 7 миллисекунд" }, { "ru", 0, TimeUnit.Second, Tense.Future, "сейчас" }, { "sk", 1, TimeUnit.Second, Tense.Past, "pred sekundou" }, { "sk", 2, TimeUnit.Second, Tense.Future, "o 2 sekundy" }, From 6ea2a21e35c5b6b3ff12646a66932114bff66adc Mon Sep 17 00:00:00 2001 From: Yegor Sychev Date: Sun, 19 Apr 2026 14:42:53 +0500 Subject: [PATCH 2/2] correct tests --- .../GeneratedLocaleDeRuPhraseMigrationTests.cs | 2 +- .../Localisation/LocalePhraseTheoryData.cs | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/tests/Humanizer.Tests/Localisation/GeneratedLocaleData/GeneratedLocaleDeRuPhraseMigrationTests.cs b/tests/Humanizer.Tests/Localisation/GeneratedLocaleData/GeneratedLocaleDeRuPhraseMigrationTests.cs index 215a3ea8c..9bdbe12da 100644 --- a/tests/Humanizer.Tests/Localisation/GeneratedLocaleData/GeneratedLocaleDeRuPhraseMigrationTests.cs +++ b/tests/Humanizer.Tests/Localisation/GeneratedLocaleData/GeneratedLocaleDeRuPhraseMigrationTests.cs @@ -46,7 +46,7 @@ public void RussianPhraseTableUsesCompactGrammarAwareYamlForms() Assert.True(table.TryGetDatePhrase(TimeUnit.Week, Tense.Future, out var futureWeek)); Assert.Equal("недель", futureWeek.Multiple?.Forms.Default); - Assert.Null(futureWeek.Multiple?.Forms.Dual); + Assert.Equal("недели", futureWeek.Multiple?.Forms.Dual); } [Theory] diff --git a/tests/Humanizer.Tests/Localisation/LocalePhraseTheoryData.cs b/tests/Humanizer.Tests/Localisation/LocalePhraseTheoryData.cs index 3a44ba3b4..292ba04e0 100644 --- a/tests/Humanizer.Tests/Localisation/LocalePhraseTheoryData.cs +++ b/tests/Humanizer.Tests/Localisation/LocalePhraseTheoryData.cs @@ -745,18 +745,6 @@ static class LocalePhraseTheoryData { "ru", 2, TimeUnit.Month, Tense.Future, "через 2 месяца" }, { "ru", 1, TimeUnit.Year, Tense.Past, "год назад" }, { "ru", 2, TimeUnit.Year, Tense.Future, "через 2 года" }, - { "ru", 1, TimeUnit.Week, Tense.Past, "неделю назад" }, - { "ru", 2, TimeUnit.Week, Tense.Past, "2 недели назад" }, - { "ru", 7, TimeUnit.Week, Tense.Past, "7 недель назад" }, - { "ru", 1, TimeUnit.Week, Tense.Future, "через неделю" }, - { "ru", 2, TimeUnit.Week, Tense.Future, "через 2 недели" }, - { "ru", 7, TimeUnit.Week, Tense.Future, "через 7 недель" }, - { "ru", 1, TimeUnit.Millisecond, Tense.Past, "миллисекунду назад" }, - { "ru", 2, TimeUnit.Millisecond, Tense.Past, "2 миллисекунды назад" }, - { "ru", 7, TimeUnit.Millisecond, Tense.Past, "7 миллисекунд назад" }, - { "ru", 1, TimeUnit.Millisecond, Tense.Future, "через миллисекунду" }, - { "ru", 2, TimeUnit.Millisecond, Tense.Future, "через 2 миллисекунды" }, - { "ru", 7, TimeUnit.Millisecond, Tense.Future, "через 7 миллисекунд" }, { "ru", 0, TimeUnit.Second, Tense.Future, "сейчас" }, { "sk", 1, TimeUnit.Second, Tense.Past, "pred sekundou" }, { "sk", 2, TimeUnit.Second, Tense.Future, "o 2 sekundy" },