Browse Source

!5 update I18nLocaleResolver.java.

Merge pull request !5 from 老周/N/A
master
blue 1 year ago
committed by Gitee
parent
commit
723a1718f4
No known key found for this signature in database GPG Key ID: 173E9B9CA92EEF8F
  1. 33
      im-admin/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/I18nLocaleResolver.java

33
im-admin/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/core/I18nLocaleResolver.java

@ -15,12 +15,35 @@ public class I18nLocaleResolver implements LocaleResolver {
@Override @Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) { public Locale resolveLocale(HttpServletRequest httpServletRequest) {
String language = httpServletRequest.getHeader("content-language"); String languageHeader = httpServletRequest.getHeader("content-language");
Locale locale = Locale.getDefault(); Locale locale;
if (language != null && language.length() > 0) {
String[] split = language.split("_"); if (languageHeader != null && !languageHeader.isEmpty()) {
locale = new Locale(split[0], split[1]); // 处理可能的逗号分隔的语言列表
String[] languages = languageHeader.split(",");
String preferredLanguage = languages[0]; // 取第一个语言标签作为首选
// 处理语言标签的格式(可能包含语言、国家、区域)
String[] parts = preferredLanguage.split("-");
switch (parts.length) {
case 1: // 只有语言代码
locale = new Locale(parts[0]);
break;
case 2: // 语言代码和国家代码
locale = new Locale(parts[0], parts[1]);
break;
case 3: // 语言代码、国家代码和区域代码
locale = new Locale(parts[0], parts[1], parts[2]);
break;
default: // 默认回退到默认语言环境
locale = Locale.getDefault();
break;
} }
} else {
// 如果没有 content-language 头部,使用默认语言环境
locale = Locale.getDefault();
}
return locale; return locale;
} }

Loading…
Cancel
Save