Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Uzbek localization #342

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/Humanizer.Tests/Humanizer.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,15 @@
<Compile Include="Localisation\sv\DateHumanizeTests.cs" />
<Compile Include="Localisation\sv\TimeSpanHumanizeTests.cs" />
<Compile Include="DateTimeHumanizePrecisionStrategyTests.cs" />
<Compile Include="Localisation\uz-Cyrl-UZ\DateHumanizeTests.cs" />
<Compile Include="Localisation\uz-Cyrl-UZ\NumberToWordsTests.cs" />
<Compile Include="Localisation\uz-Cyrl-UZ\TimeSpanHumanizeTests.cs" />
<Compile Include="Localisation\uz-Latn-UZ\DateHumanizeTests.cs"/>
<Compile Include="Localisation\uz-Latn-UZ\NumberToWordsTests.cs" />
<Compile Include="Localisation\tr\DateHumanizeTests.cs" />
<Compile Include="Localisation\tr\NumberToWordsTests.cs" />
<Compile Include="Localisation\tr\TimeSpanHumanizeTests.cs" />
<Compile Include="Localisation\uz-Latn-UZ\TimeSpanHumanizeTests.cs" />
<Compile Include="Localisation\vi\DateHumanizeTests.cs" />
<Compile Include="Localisation\vi\TimeSpanHumanizeTests.cs" />
<Compile Include="Localisation\it\DateHumanizeTests.cs" />
Expand Down
118 changes: 118 additions & 0 deletions src/Humanizer.Tests/Localisation/uz-Cyrl-UZ/DateHumanizeTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
using Humanizer.Localisation;
using Xunit;
using Xunit.Extensions;

namespace Humanizer.Tests.Localisation.uzCyrl
{
public class DateHumanizeTests : AmbientCulture
{
public DateHumanizeTests()
: base("uz-Cyrl-UZ")
{
}

[Theory]
[InlineData(1, "бир сония аввал")]
[InlineData(10, "10 секунд аввал")]
public void SecondsAgo(int seconds, string expected)
{
var cul = System.Threading.Thread.CurrentThread.CurrentCulture;
DateHumanize.Verify(expected, seconds, TimeUnit.Second, Tense.Past);
}

[Theory]
[InlineData(1, "бир сониядан сўнг")]
[InlineData(10, "10 секунддан сўнг")]
public void SecondsFromNow(int seconds, string expected)
{
DateHumanize.Verify(expected, seconds, TimeUnit.Second, Tense.Future);
}

[Theory]
[InlineData(1, "бир дақиқа аввал")]
[InlineData(10, "10 минут аввал")]
[InlineData(60, "бир соат аввал")]
public void MinutesAgo(int minutes, string expected)
{
DateHumanize.Verify(expected, minutes, TimeUnit.Minute, Tense.Past);
}

[Theory]
[InlineData(1, "бир дақиқадан сўнг")]
[InlineData(10, "10 минутдан сўнг")]
public void MinutesFromNow(int minutes, string expected)
{
DateHumanize.Verify(expected, minutes, TimeUnit.Minute, Tense.Future);
}

[Theory]
[InlineData(1, "бир соат аввал")]
[InlineData(10, "10 соат аввал")]
public void HoursAgo(int hours, string expected)
{
DateHumanize.Verify(expected, hours, TimeUnit.Hour, Tense.Past);
}

[Theory]
[InlineData(1, "бир соатдан сўнг")]
[InlineData(10, "10 соатдан сўнг")]
public void HoursFromNow(int hours, string expected)
{
DateHumanize.Verify(expected, hours, TimeUnit.Hour, Tense.Future);
}

[Theory]
[InlineData(1, "кеча")]
[InlineData(10, "10 кун аввал")]
public void DaysAgo(int days, string expected)
{
DateHumanize.Verify(expected, days, TimeUnit.Day, Tense.Past);
}

[Theory]
[InlineData(1, "эртага")]
[InlineData(10, "10 кундан сўнг")]
public void DaysFromNow(int days, string expected)
{
DateHumanize.Verify(expected, days, TimeUnit.Day, Tense.Future);
}

[Theory]
[InlineData(1, "бир ой аввал")]
[InlineData(10, "10 ой аввал")]
public void MonthsAgo(int months, string expected)
{
DateHumanize.Verify(expected, months, TimeUnit.Month, Tense.Past);
}

[Theory]
[InlineData(1, "бир ойдан сўнг")]
[InlineData(10, "10 ойдан сўнг")]
public void MonthsFromNow(int months, string expected)
{
DateHumanize.Verify(expected, months, TimeUnit.Month, Tense.Future);
}

[Theory]
[InlineData(1, "бир йил аввал")]
[InlineData(2, "2 йил аввал")]
public void YearsAgo(int years, string expected)
{
DateHumanize.Verify(expected, years, TimeUnit.Year, Tense.Past);
}

[Theory]
[InlineData(1, "бир йилдан сўнг")]
[InlineData(2, "2 йилдан сўнг")]
public void YearsFromNow(int years, string expected)
{
DateHumanize.Verify(expected, years, TimeUnit.Year, Tense.Future);
}

[Fact]
public void Now()
{
DateHumanize.Verify("ҳозир", 0, TimeUnit.Year, Tense.Future);
}
}
}
109 changes: 109 additions & 0 deletions src/Humanizer.Tests/Localisation/uz-Cyrl-UZ/NumberToWordsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
using Xunit;
using Xunit.Extensions;

namespace Humanizer.Tests.Localisation.uzCyrl
{
public class NumberToWordsTests : AmbientCulture
{
public NumberToWordsTests() : base("uz-Cyrl-UZ") { }

[Theory]
[InlineData(0, "нол")]
[InlineData(1, "бир")]
[InlineData(10, "ўн")]
[InlineData(11, "ўн бир")]
[InlineData(12, "ўн икки")]
[InlineData(13, "ўн уч")]
[InlineData(14, "ўн тўрт")]
[InlineData(15, "ўн беш")]
[InlineData(16, "ўн олти")]
[InlineData(17, "ўн етти")]
[InlineData(18, "ўн саккиз")]
[InlineData(19, "ўн тўққиз")]
[InlineData(20, "йигирма")]
[InlineData(30, "ўттиз")]
[InlineData(40, "қирқ")]
[InlineData(50, "эллик")]
[InlineData(60, "олтмиш")]
[InlineData(70, "етмиш")]
[InlineData(80, "саксон")]
[InlineData(90, "тўқсон")]
[InlineData(100, "юз")]
[InlineData(200, "икки юз")]
[InlineData(300, "уч юз")]
[InlineData(400, "тўрт юз")]
[InlineData(500, "беш юз")]
[InlineData(600, "олти юз")]
[InlineData(700, "етти юз")]
[InlineData(800, "саккиз юз")]
[InlineData(900, "тўққиз юз")]
[InlineData(1000, "бир минг")]
[InlineData(2000, "икки минг")]
[InlineData(3000, "уч минг")]
[InlineData(10000, "ўн минг")]
[InlineData(100000, "юз минг")]
[InlineData(100100, "юз минг бир юз")]
[InlineData(200100, "икки юз минг бир юз")]
[InlineData(1000000, "бир миллион")]
[InlineData(1001000, "бир миллион бир минг")]
[InlineData(1000100, "бир миллион бир юз")]
[InlineData(2000000, "икки миллион")]
[InlineData(10000000, "ўн миллион")]
[InlineData(100000000, "юз миллион")]
[InlineData(100001000, "юз миллион бир минг")]
[InlineData(1000000000, "бир миллиард")]
[InlineData(2000000000, "икки миллиард")]
[InlineData(122, "бир юз йигирма икки")]
[InlineData(3501, "уч минг беш юз бир")]
[InlineData(111, "бир юз ўн бир")]
[InlineData(1112, "бир минг бир юз ўн икки")]
[InlineData(11213, "ўн бир минг икки юз ўн уч")]
[InlineData(121314, "бир юз йигирма бир минг уч юз ўн тўрт")]
[InlineData(2132415, "икки миллион бир юз ўттиз икки минг тўрт юз ўн беш")]
[InlineData(12345516, "ўн икки миллион уч юз қирқ беш минг беш юз ўн олти")]
[InlineData(751633617, "етти юз эллик бир миллион олти юз ўттиз уч минг олти юз ўн етти")]
[InlineData(1111111118, "бир миллиард бир юз ўн бир миллион бир юз ўн бир минг бир юз ўн саккиз")]
[InlineData(-751633617, "минус етти юз эллик бир миллион олти юз ўттиз уч минг олти юз ўн етти")]
public void ToWords(int number, string expected)
{
Assert.Equal(expected, number.ToWords());
}

[Theory]
[InlineData(0, "нолинчи")]
[InlineData(1, "биринчи")]
[InlineData(10, "ўнинчи")]
[InlineData(11, "ўн биринчи")]
[InlineData(12, "ўн иккинчи")]
[InlineData(13, "ўн учинчи")]
[InlineData(14, "ўн тўртинчи")]
[InlineData(15, "ўн бешинчи")]
[InlineData(16, "ўн олтинчи")]
[InlineData(17, "ўн еттинчи")]
[InlineData(18, "ўн саккизинчи")]
[InlineData(19, "ўн тўққизинчи")]
[InlineData(20, "йигирманчи")]
[InlineData(30, "ўттизинчи")]
[InlineData(40, "қирқинчи")]
[InlineData(50, "элликинчи")]
[InlineData(60, "олтмишинчи")]
[InlineData(70, "етмишинчи")]
[InlineData(80, "саксонинчи")]
[InlineData(90, "тўқсонинчи")]
[InlineData(100, "юзинчи")]
[InlineData(200, "икки юзинчи")]
[InlineData(1000, "бир мингинчи")]
[InlineData(2000000, "икки миллионинчи")]
[InlineData(1000000000, "бир миллиардинчи")]
[InlineData(122, "бир юз йигирма иккинчи")]
[InlineData(3501, "уч минг беш юз биринчи")]
[InlineData(111, "бир юз ўн биринчи")]
[InlineData(751633617, "етти юз эллик бир миллион олти юз ўттиз уч минг олти юз ўн еттинчи")]
[InlineData(1111111118, "бир миллиард бир юз ўн бир миллион бир юз ўн бир минг бир юз ўн саккизинчи")]
[InlineData(-751633617, "минус етти юз эллик бир миллион олти юз ўттиз уч минг олти юз ўн еттинчи")]
public void ToOrdinalWords(int number, string words)
{
Assert.Equal(words, number.ToOrdinalWords());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
using System;
using Xunit;
using Xunit.Extensions;

namespace Humanizer.Tests.Localisation.uzCyrl
{
public class TimeSpanHumanizeTests : AmbientCulture
{
public TimeSpanHumanizeTests() : base("uz-Cyrl-UZ") { }

[Theory]
[InlineData(14, "2 ҳафта")]
[InlineData(7, "1 ҳафта")]
public void Weeks(int days, string expected)
{
var actual = TimeSpan.FromDays(days).Humanize();
Assert.Equal(expected, actual);
}

[Theory]
[InlineData(6, "6 кун")]
[InlineData(2, "2 кун")]
public void Days(int days, string expected)
{
var actual = TimeSpan.FromDays(days).Humanize();
Assert.Equal(expected, actual);
}

[Theory]
[InlineData(2, "2 соат")]
[InlineData(1, "1 соат")]
public void Hours(int hours, string expected)
{
var actual = TimeSpan.FromHours(hours).Humanize();
Assert.Equal(expected, actual);
}

[Theory]
[InlineData(2, "2 минут")]
[InlineData(1, "1 минут")]
public void Minutes(int minutes, string expected)
{
var actual = TimeSpan.FromMinutes(minutes).Humanize();
Assert.Equal(expected, actual);
}

[Theory]
[InlineData(2, "2 секунд")]
[InlineData(1, "1 секунд")]
public void Seconds(int seconds, string expected)
{
var actual = TimeSpan.FromSeconds(seconds).Humanize();
Assert.Equal(expected, actual);
}

[Theory]
[InlineData(2, "2 миллисекунд")]
[InlineData(1, "1 миллисекунд")]
public void Milliseconds(int ms, string expected)
{
var actual = TimeSpan.FromMilliseconds(ms).Humanize();
Assert.Equal(expected, actual);
}

[Fact]
public void NoTime()
{
var noTime = TimeSpan.Zero;
var actual = noTime.Humanize();
Assert.Equal("вақт йўқ", actual);
}
}
}
Loading