Browse Source
!5 update I18nLocaleResolver.java.
Merge pull request !5 from 老周/N/A
master
blue
1 year ago
committed by
Gitee
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with
29 additions and
6 deletions
-
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 |
|
|
|
public Locale resolveLocale(HttpServletRequest httpServletRequest) { |
|
|
|
String language = httpServletRequest.getHeader("content-language"); |
|
|
|
Locale locale = Locale.getDefault(); |
|
|
|
if (language != null && language.length() > 0) { |
|
|
|
String[] split = language.split("_"); |
|
|
|
locale = new Locale(split[0], split[1]); |
|
|
|
String languageHeader = httpServletRequest.getHeader("content-language"); |
|
|
|
Locale locale; |
|
|
|
|
|
|
|
if (languageHeader != null && !languageHeader.isEmpty()) { |
|
|
|
// 处理可能的逗号分隔的语言列表
|
|
|
|
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; |
|
|
|
} |
|
|
|
|
|
|
|
|