-
-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathja-jp.go
112 lines (93 loc) · 1.81 KB
/
ja-jp.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package ntw
func init() {
// register the language
Languages["ja-jp"] = Language{
Name: "Japanese",
Aliases: []string{"jp", "ja-jp", "ja_JP", "japanese"},
Flag: "🇯🇵",
IntegerToWords: IntegerToJaJp,
}
}
func integerToQuadruplets(number int) []int {
quadruplet := []int{}
for number > 0 {
quadruplet = append(quadruplet, number%10000)
number = number / 10000
}
return quadruplet
}
// IntegerToJaJp converts an integer to Japanese words
func IntegerToJaJp(input int) string {
var japaneseUnits = []string{
"",
"一",
"二",
"三",
"四",
"五",
"六",
"七",
"八",
"九",
}
var japaneseDigits = []string{
"",
"万",
"億",
"兆",
}
//log.Printf("Input: %d\n", input)
words := ""
if input < 0 {
words = "マイナス"
input *= -1
}
// split integer in quadruplets
quadruplets := integerToQuadruplets(input)
//log.Printf("Quadruplets: %v\n", quadruplets)
// zero is a special case
if len(quadruplets) == 0 {
return "零"
}
// iterate over quadruplet
for idx := len(quadruplets) - 1; idx >= 0; idx-- {
quadruplet := quadruplets[idx]
// nothing todo for empty quadruplet
if quadruplet == 0 {
continue
}
// four-digits
thousands := quadruplet / 1000 % 10
hundreds := quadruplet / 100 % 10
tens := quadruplet / 10 % 10
units := quadruplet % 10
if thousands > 0 {
if thousands == 1 {
words += "千"
} else {
words += japaneseUnits[thousands] + "千"
}
}
if hundreds > 0 {
if hundreds == 1 {
words += "百"
} else {
words += japaneseUnits[hundreds] + "百"
}
}
if tens > 0 {
if tens == 1 {
words += "十"
} else {
words += japaneseUnits[tens] + "十"
}
}
if units > 0 {
words += japaneseUnits[units]
}
if idx > 0 {
words += japaneseDigits[idx]
}
}
return words
}