- Interceptor에서 Accept-Language 헤더를 파싱 - 요청 단위 LangContext에 언어 정보 저장 - 서비스 및 예외 처리 계층에서 언어 컨텍스트 주입 - enum 및 when 기반 언어 정책을 한 곳으로 통합
23 lines
622 B
Kotlin
23 lines
622 B
Kotlin
package kr.co.vividnext.sodalive.i18n
|
|
|
|
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 {
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|