diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MessageUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MessageUtils.java index 24928f88..92cec81b 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MessageUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MessageUtils.java @@ -3,6 +3,7 @@ package com.ruoyi.common.core.utils; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.springframework.context.MessageSource; +import org.springframework.context.NoSuchMessageException; import org.springframework.context.i18n.LocaleContextHolder; /** @@ -23,6 +24,10 @@ public class MessageUtils { * @return 获取国际化翻译值 */ public static String message(String code, Object... args) { - return MESSAGE_SOURCE.getMessage(code, args, LocaleContextHolder.getLocale()); + try { + return MESSAGE_SOURCE.getMessage(code, args, LocaleContextHolder.getLocale()); + } catch (NoSuchMessageException e) { + return code; + } } } diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/I18nConfig.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/I18nConfig.java deleted file mode 100644 index 032327c1..00000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/I18nConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.ruoyi.gateway.config; - -import com.ruoyi.gateway.resolver.I18nLocaleResolver; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.reactive.config.DelegatingWebFluxConfiguration; -import org.springframework.web.server.i18n.LocaleContextResolver; - -/** - * webflux 国际化解析器 - * - * @author Lion Li - */ -@Configuration -public class I18nConfig extends DelegatingWebFluxConfiguration { - - @Override - protected LocaleContextResolver createLocaleContextResolver() { - return new I18nLocaleResolver(); - } - -} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/GlobalI18nFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/GlobalI18nFilter.java new file mode 100644 index 00000000..d48500d9 --- /dev/null +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/GlobalI18nFilter.java @@ -0,0 +1,41 @@ +package com.ruoyi.gateway.filter; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.context.i18n.SimpleLocaleContext; +import org.springframework.core.Ordered; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +import java.util.Locale; + +/** + * 全局国际化处理 + * + * @author Lion Li + */ +@Slf4j +@Component +public class GlobalI18nFilter implements GlobalFilter, Ordered { + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + String language = exchange.getRequest().getHeaders().getFirst("content-language"); + Locale locale = Locale.getDefault(); + if (language != null && language.length() > 0) { + String[] split = language.split("_"); + locale = new Locale(split[0], split[1]); + } + LocaleContextHolder.setLocaleContext(new SimpleLocaleContext(locale), true); + return chain.filter(exchange); + } + + @Override + public int getOrder() { + return Ordered.HIGHEST_PRECEDENCE; + } + +} diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/resolver/I18nLocaleResolver.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/resolver/I18nLocaleResolver.java deleted file mode 100644 index ec5dd280..00000000 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/resolver/I18nLocaleResolver.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ruoyi.gateway.resolver; - -import org.springframework.context.i18n.LocaleContext; -import org.springframework.context.i18n.SimpleLocaleContext; -import org.springframework.web.server.ServerWebExchange; -import org.springframework.web.server.i18n.LocaleContextResolver; - -import java.util.Locale; - -/** - * 获取请求头国际化信息 - * - * @author Lion Li - */ -public class I18nLocaleResolver implements LocaleContextResolver { - - @Override - public LocaleContext resolveLocaleContext(ServerWebExchange exchange) { - String language = exchange.getRequest().getHeaders().getFirst("content-language"); - Locale locale = Locale.getDefault(); - if (language != null && language.length() > 0) { - String[] split = language.split("_"); - locale = new Locale(split[0], split[1]); - } - return new SimpleLocaleContext(locale); - } - - @Override - public void setLocaleContext(ServerWebExchange exchange, LocaleContext localeContext) { - - } -}