test #369

Merged
klaus merged 90 commits from test into main 2025-12-31 05:44:55 +00:00
4 changed files with 67 additions and 1 deletions
Showing only changes of commit 082f255773 - Show all commits

View File

@@ -1,11 +1,19 @@
package kr.co.vividnext.sodalive.configs
import kr.co.vividnext.sodalive.i18n.LangInterceptor
import org.springframework.context.annotation.Configuration
import org.springframework.web.servlet.config.annotation.CorsRegistry
import org.springframework.web.servlet.config.annotation.InterceptorRegistry
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
@Configuration
class WebConfig : WebMvcConfigurer {
class WebConfig(
private val langInterceptor: LangInterceptor
) : WebMvcConfigurer {
override fun addInterceptors(registry: InterceptorRegistry) {
registry.addInterceptor(langInterceptor).addPathPatterns("/**")
}
override fun addCorsMappings(registry: CorsRegistry) {
registry.addMapping("/**")
.allowedOrigins(

View File

@@ -0,0 +1,22 @@
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
}
}
}
}

View File

@@ -0,0 +1,15 @@
package kr.co.vividnext.sodalive.i18n
import org.springframework.stereotype.Component
import org.springframework.web.context.annotation.RequestScope
@Component
@RequestScope
class LangContext {
var lang: Lang = Lang.KO
internal set
fun setLang(lang: Lang) {
this.lang = lang
}
}

View File

@@ -0,0 +1,21 @@
package kr.co.vividnext.sodalive.i18n
import org.springframework.stereotype.Component
import org.springframework.web.servlet.HandlerInterceptor
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
@Component
class LangInterceptor(
private val langContext: LangContext
) : HandlerInterceptor {
override fun preHandle(
request: HttpServletRequest,
response: HttpServletResponse,
handler: Any
): Boolean {
val acceptLanguage = request.getHeader("Accept-Language")
langContext.setLang(Lang.fromAcceptLanguage(acceptLanguage))
return true
}
}