Files
Vetti-Service-new/vetti-common/src/main/java/com/vetti/common/config/InternationalProperties.java
wangxiangshun 5cc31cfbbe 代码初始化
2025-10-02 17:19:01 +08:00

85 lines
2.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.vetti.common.config;
import cn.hutool.core.util.StrUtil;
import com.vetti.common.enums.InternationalLangTypeEnum;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* 国际化配置属性
*
* @author wangxiangshun
*/
@Data
@Component
@ConfigurationProperties(prefix = "vetti.international")
public class InternationalProperties {
/**
* 是否启用默认为False
*/
private boolean enable = true;
/**
* 请求语言参数位置HEADER/PARAM默认为HEADER
*/
private RequestLangParamPosition paramPosition = RequestLangParamPosition.HEADER;
/**
* 请求语言参数名称默认为lang
*/
private String paramName = "lang";
/**
* 获取请求语言
*
* @return 请求语言
*/
public String getLang() {
HttpServletRequest request = null;
try {
request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
} catch (Exception ex) {
// ignore
}
if (null == request) {
return null;
}
String lang;
if (paramPosition == RequestLangParamPosition.HEADER) {
lang = request.getHeader(paramName);
} else {
lang = request.getParameter(paramName);
}
//语言类型特殊转换
if(StrUtil.isNotEmpty(lang)){
lang = lang.replaceAll("-Hans-","_").replaceAll("-Hant-","_").
replaceAll("_Hans_","_").replaceAll("_Hant_","_").replaceAll("-","_");
if(lang.contains("en") || lang.contains("EN")){
lang = InternationalLangTypeEnum.INTERNATIONAL_LANG_TYPE_ENUM_EN.getCode();
}else if(lang.contains("zh") || lang.contains("ZH")){
lang = InternationalLangTypeEnum.INTERNATIONAL_LANG_TYPE_ENUM_ZH.getCode();
}
}else {
lang = InternationalLangTypeEnum.INTERNATIONAL_LANG_TYPE_ENUM_EN.getCode();
}
return lang;
}
/**
* 请求语言参数位置
*/
public enum RequestLangParamPosition {
HEADER, PARAM
}
}