Skip to content

Commit be41004

Browse files
committed
fix(locale): handle arabic plural ranges
1 parent 9c338f1 commit be41004

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

locale/ar-SA.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@ import (
88

99
func arabicCount(value float64, singular, dual, few, many string) string {
1010
n := int(math.Ceil(value))
11+
if n < 0 {
12+
n = -n
13+
}
1114

12-
switch n {
13-
case 1:
15+
switch {
16+
case n == 1:
1417
return singular
15-
case 2:
18+
case n == 2:
1619
return dual
20+
case n%100 >= 3 && n%100 <= 10:
21+
return fmt.Sprintf("%d %s", n, few)
1722
default:
18-
if n >= 3 && n <= 10 {
19-
return fmt.Sprintf("%d %s", n, few)
20-
}
2123
return fmt.Sprintf("%d %s", n, many)
2224
}
2325
}

timediff_ar_SA_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ var fixtures_ar_SA = map[string]string{
4848
fmt.Sprintf("-%dh", 17*24*30+1): "منذ سنتين",
4949
fmt.Sprintf("-%dh", 24*24*30): "منذ سنتين",
5050
fmt.Sprintf("-%dh", 20*24*30*12): "منذ 20 سنة",
51+
fmt.Sprintf("-%dh", 103*24*30*12): "منذ 103 سنوات",
5152
fmt.Sprintf("-%dh", 100*24*30*12): "منذ 100 سنة",
5253

5354
"10s": "بعد ثوانٍ قليلة",
@@ -86,6 +87,7 @@ var fixtures_ar_SA = map[string]string{
8687
fmt.Sprintf("%dh", 12*24*30): "بعد سنة",
8788
fmt.Sprintf("%dh", 24*24*30): "بعد سنتين",
8889
fmt.Sprintf("%dh", 20*24*30*12): "بعد 20 سنة",
90+
fmt.Sprintf("%dh", 103*24*30*12): "بعد 103 سنوات",
8991
fmt.Sprintf("%dh", 100*24*30*12): "بعد 100 سنة",
9092
}
9193

0 commit comments

Comments
 (0)