package com.ruoyi.framework.config;

import org.springframework.web.servlet.LocaleResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

/**
 * 自定义区域解析器：从 Language 请求头获取 locale
 */
public class CustomLanguageLocaleResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        // 1. 获取 Language 请求头的值
        String languageHeader = request.getHeader("Language");

        // 2. 处理空值：默认返回系统 locale（或根据需求指定默认值，如 Locale.SIMPLIFIED_CHINESE）
        if (languageHeader == null || languageHeader.trim().isEmpty()) {
            return Locale.getDefault();
        }

        // 3. 解析请求头值为 Locale（支持格式：zh-CN、en、en-US 等）
        // 分割语言和国家/地区（如 "zh-CN" -> 语言 "zh"，国家 "CN"）
        String[] parts = languageHeader.split("_");
        if (parts.length == 1) {
            // 只有语言（如 "en"）
            return new Locale(parts[0]);
        } else if (parts.length == 2) {
            // 语言 + 国家/地区（如 "zh-CN"）
            return new Locale(parts[0], parts[1]);
        }

        // 4. 非法格式：返回默认 locale
        return Locale.getDefault();
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
    }
}