32 lines
1.0 KiB
Kotlin
32 lines
1.0 KiB
Kotlin
package kr.co.vividnext.sodalive.i18n
|
|
|
|
import com.fasterxml.jackson.annotation.JsonCreator
|
|
import java.util.Locale
|
|
|
|
enum class Lang(val code: String, val locale: Locale) {
|
|
KO("ko", Locale.KOREAN),
|
|
EN("en", Locale.ENGLISH),
|
|
JA("ja", Locale.JAPANESE);
|
|
|
|
companion object {
|
|
@JvmStatic
|
|
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
|
|
fun fromCode(value: String): Lang {
|
|
return values().find {
|
|
it.code.equals(value.trim(), ignoreCase = true) || it.name.equals(value.trim(), ignoreCase = true)
|
|
} ?: throw IllegalArgumentException("Unknown language code: $value")
|
|
}
|
|
|
|
fun fromAcceptLanguage(header: String?): Lang {
|
|
if (header.isNullOrBlank()) return KO
|
|
val two = header.trim().lowercase().take(2) // 앱은 2자리만 보내지만 안전하게 처리
|
|
return when (two) {
|
|
"ko" -> KO
|
|
"en" -> EN
|
|
"ja" -> JA
|
|
else -> KO
|
|
}
|
|
}
|
|
}
|
|
}
|