/
Locale.kt
126 lines (116 loc) 路 2.69 KB
/
Locale.kt
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package com.danneu.kog.negotiation
import com.danneu.kog.Header
import com.danneu.kog.Request
import com.danneu.kog.toy
enum class Locale {
// Special
Wildcard,
// Locales
Germany,
Argentina,
Australia,
Belize,
Brazil,
Liechtenstein,
Luxembourg,
Switzerland,
Bolivia,
Canada,
Caribbean,
Chile,
Colombia,
CostaRica,
DominicanRepublic,
Ecuador,
ElSalvador,
Finland,
Guatemala,
Honduras,
Ireland,
Romania,
Jamaica,
Mexico,
NewZealand,
Nicaragua,
Panama,
Paraguay,
Peru,
Philippines,
Portugal,
PuertoRico,
SouthAfrica,
Spain,
Austria,
TrinidadAndTobago,
UnitedKingdom,
UnitedStates,
Uruguay,
Venezuela,
Zimbabwe
;
companion object {
fun fromString(input: String): Locale? = when (input.toUpperCase()) {
"AR" -> Argentina
"LU" -> Luxembourg
"AU" -> Australia
"BO" -> Bolivia
"BR" -> Brazil
"RO" -> Romania
"BZ" -> Belize
"CA" -> Canada
"CB" -> Caribbean
"CL" -> Chile
"CO" -> Colombia
"CR" -> CostaRica
"DO" -> DominicanRepublic
"EC" -> Ecuador
"ES" -> Spain
"GB" -> UnitedKingdom
"GT" -> Guatemala
"FI" -> Finland
"HN" -> Honduras
"IE" -> Ireland
"JM" -> Jamaica
"MX" -> Mexico
"NI" -> Nicaragua
"NZ" -> NewZealand
"PA" -> Panama
"PE" -> Peru
"PH" -> Philippines
"PR" -> PuertoRico
"PT" -> Portugal
"PY" -> Paraguay
"SV" -> ElSalvador
"TT" -> TrinidadAndTobago
"US" -> UnitedStates
"DE" -> Germany
"LI" -> Liechtenstein
"UY" -> Uruguay
"VE" -> Venezuela
"ZA" -> SouthAfrica
"ZW" -> Zimbabwe
"AT" -> Austria
"CH" -> Switzerland
else -> null
}
}
}
enum class AvailableLang {
Spanish,
English
}
fun Request.lang(): AvailableLang {
val availableLangs = listOf(
Lang.Spanish(),
Lang.English()
)
return when (this.negotiate.acceptableLanguage(availableLangs)) {
Lang.English() -> AvailableLang.English
else -> AvailableLang.Spanish
}
}
fun main(args: Array<String>) {
//val neg = Negotiator(Request.toy(headers = mutableListOf(Header.AcceptLanguage to "en-US, es")))
val req = Request.toy(headers = mutableListOf(Header.AcceptLanguage to "es, en-US, es"))
println(req.lang())
}