Skip to content

Commit b98332a

Browse files
Add Catalan localisation support (#1590)
Co-authored-by: Claire Novotny <[email protected]>
1 parent 53d49e2 commit b98332a

24 files changed

+2120
-10
lines changed

NuSpecs/Humanizer.Core.ca.nuspec

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<package>
3+
<metadata minClientVersion="2.12">
4+
<id>Humanizer.Core.ca</id>
5+
<version>$version$</version>
6+
<title>Humanizer Locale (ca)</title>
7+
<authors>Mehdi Khalili, Claire Novotny</authors>
8+
<projectUrl>https://github.com/Humanizr/Humanizer</projectUrl>
9+
<icon>logo.png</icon>
10+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
11+
<description>Humanizer Locale Catalan (ca)</description>
12+
<copyright>Copyright (c) .NET Foundation and Contributors</copyright>
13+
<license type="expression">MIT</license>
14+
<repository type="$RepositoryType$" url="$RepositoryUrl$" commit="$RepositoryCommit$" />
15+
<language>ca</language>
16+
<dependencies>
17+
<dependency id="Humanizer.Core" version="[$version$]" />
18+
</dependencies>
19+
</metadata>
20+
<files>
21+
<file src="Humanizer\bin\Release\netstandard2.0\ca\*.*" target="lib\netstandard2.0\ca" />
22+
<file src="Humanizer\bin\Release\net8.0\ca\*.*" target="lib\net8.0\ca" />
23+
<file src="Humanizer\bin\Release\net48\ca\*.*" target="lib\net48\ca" />
24+
<file src="Humanizer\bin\Release\net10.0\ca\*.*" target="lib\net10.0\ca" />
25+
<file src="..\logo.png" target="logo.png" />
26+
</files>
27+
</package>

NuSpecs/Humanizer.nuspec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<dependency id="Humanizer.Core.az" version="$version$" />
1919
<dependency id="Humanizer.Core.bg" version="$version$" />
2020
<dependency id="Humanizer.Core.bn" version="$version$" />
21+
<dependency id="Humanizer.Core.ca" version="$version$" />
2122
<dependency id="Humanizer.Core.cs" version="$version$" />
2223
<dependency id="Humanizer.Core.da" version="$version$" />
2324
<dependency id="Humanizer.Core.de" version="$version$" />
@@ -38,8 +39,8 @@
3839
<dependency id="Humanizer.Core.ko" version="$version$" />
3940
<dependency id="Humanizer.Core.ku" version="$version$" />
4041
<dependency id="Humanizer.Core.lb" version="$version$" />
41-
<dependency id="Humanizer.Core.lv" version="$version$" />
4242
<dependency id="Humanizer.Core.lt" version="$version$" />
43+
<dependency id="Humanizer.Core.lv" version="$version$" />
4344
<dependency id="Humanizer.Core.ms" version="$version$" />
4445
<dependency id="Humanizer.Core.mt" version="$version$" />
4546
<dependency id="Humanizer.Core.nb" version="$version$" />
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
namespace ca;
2+
3+
[UseCulture("ca")]
4+
public class DateHumanizeTests
5+
{
6+
[Theory]
7+
[InlineData(1, "fa un segon")]
8+
[InlineData(2, "fa 2 segons")]
9+
public void SecondsAgo(int seconds, string expected) =>
10+
DateHumanize.Verify(expected, seconds, TimeUnit.Second, Tense.Past);
11+
12+
[Theory]
13+
[InlineData(1, "d'aquí un segon")]
14+
[InlineData(2, "d'aquí 2 segons")]
15+
public void SecondsFromNow(int seconds, string expected) =>
16+
DateHumanize.Verify(expected, seconds, TimeUnit.Second, Tense.Future);
17+
18+
[Theory]
19+
[InlineData(1, "fa un minut")]
20+
[InlineData(2, "fa 2 minuts")]
21+
[InlineData(60, "fa una hora")]
22+
public void MinutesAgo(int minutes, string expected) =>
23+
DateHumanize.Verify(expected, minutes, TimeUnit.Minute, Tense.Past);
24+
25+
[Theory]
26+
[InlineData(1, "d'aquí un minut")]
27+
[InlineData(2, "d'aquí 2 minuts")]
28+
public void MinutesFromNow(int minutes, string expected) =>
29+
DateHumanize.Verify(expected, minutes, TimeUnit.Minute, Tense.Future);
30+
31+
[Theory]
32+
[InlineData(1, "fa una hora")]
33+
[InlineData(2, "fa 2 hores")]
34+
public void HoursAgo(int hours, string expected) =>
35+
DateHumanize.Verify(expected, hours, TimeUnit.Hour, Tense.Past);
36+
37+
[Theory]
38+
[InlineData(1, "d'aquí una hora")]
39+
[InlineData(2, "d'aquí 2 hores")]
40+
public void HoursFromNow(int hours, string expected) =>
41+
DateHumanize.Verify(expected, hours, TimeUnit.Hour, Tense.Future);
42+
43+
[Theory]
44+
[InlineData(1, "ahir")]
45+
[InlineData(2, "fa 2 dies")]
46+
public void DaysAgo(int days, string expected) =>
47+
DateHumanize.Verify(expected, days, TimeUnit.Day, Tense.Past);
48+
49+
[Theory]
50+
[InlineData(1, "demà")]
51+
[InlineData(2, "d'aquí 2 dies")]
52+
public void DaysFromNow(int days, string expected) =>
53+
DateHumanize.Verify(expected, days, TimeUnit.Day, Tense.Future);
54+
55+
[Theory]
56+
[InlineData(1, "fa un mes")]
57+
[InlineData(2, "fa 2 mesos")]
58+
public void MonthsAgo(int months, string expected) =>
59+
DateHumanize.Verify(expected, months, TimeUnit.Month, Tense.Past);
60+
61+
[Theory]
62+
[InlineData(1, "d'aquí un mes")]
63+
[InlineData(2, "d'aquí 2 mesos")]
64+
public void MonthsFromNow(int months, string expected) =>
65+
DateHumanize.Verify(expected, months, TimeUnit.Month, Tense.Future);
66+
67+
[Theory]
68+
[InlineData(1, "fa un any")]
69+
[InlineData(2, "fa 2 anys")]
70+
public void YearsAgo(int years, string expected) =>
71+
DateHumanize.Verify(expected, years, TimeUnit.Year, Tense.Past);
72+
73+
[Theory]
74+
[InlineData(1, "d'aquí un any")]
75+
[InlineData(2, "d'aquí 2 anys")]
76+
public void YearsFromNow(int years, string expected) =>
77+
DateHumanize.Verify(expected, years, TimeUnit.Year, Tense.Future);
78+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
namespace ca;
2+
3+
[UseCulture("ca")]
4+
public class DateToOrdinalWordsTests
5+
{
6+
[Fact]
7+
public void OrdinalizeString()
8+
{
9+
Assert.Equal("25 de gener de 2022", new DateTime(2022, 1, 25).ToOrdinalWords());
10+
Assert.Equal("29 de febrer de 2020", new DateTime(2020, 2, 29).ToOrdinalWords());
11+
Assert.Equal("4 de setembre de 2015", new DateTime(2015, 9, 4).ToOrdinalWords());
12+
Assert.Equal("7 de novembre de 1979", new DateTime(1979, 11, 7).ToOrdinalWords());
13+
}
14+
15+
#if NET6_0_OR_GREATER
16+
[Fact]
17+
public void OrdinalizeDateOnlyString()
18+
{
19+
Assert.Equal("25 de gener de 2022", new DateOnly(2022, 1, 25).ToOrdinalWords());
20+
Assert.Equal("29 de febrer de 2020", new DateOnly(2020, 2, 29).ToOrdinalWords());
21+
Assert.Equal("4 de setembre de 2015", new DateOnly(2015, 9, 4).ToOrdinalWords());
22+
Assert.Equal("7 de novembre de 1979", new DateOnly(1979, 11, 7).ToOrdinalWords());
23+
}
24+
#endif
25+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace ca;
2+
3+
[UseCulture("ca")]
4+
public class NumberToWordsFeminineTests
5+
{
6+
[Theory]
7+
[InlineData(1, "una")]
8+
[InlineData(21, "vint-i-una")]
9+
[InlineData(31, "trenta-una")]
10+
[InlineData(81, "vuitanta-una")]
11+
[InlineData(500, "cinc-centes")]
12+
[InlineData(701, "set-centes una")]
13+
[InlineData(3500, "tres mil cinc-centes")]
14+
[InlineData(200121, "dues-centes mil cent vint-i-una")]
15+
[InlineData(200000121, "dos-cents milions cent vint-i-una")]
16+
[InlineData(1000001, "un milió una")]
17+
public void ToWords(int number, string expected) =>
18+
Assert.Equal(expected, number.ToWords(GrammaticalGender.Feminine));
19+
}

0 commit comments

Comments
 (0)