Есть ли способ получить текущую локаль в Spring Cloud Gateway? Я использую LocaleContextHolder.getLocale()
, чтобы получить языковой стандарт пользователя, но он всегда возвращает языковой стандарт по умолчанию en
. Спасибо за помощь!
@Component
public class ClientVersionGatewayFilterFactory extends AbstractGatewayFilterFactory<ClientVersionGatewayFilterFactory.Config> {
private final MessageSource messageSource;
public ClientVersionGatewayFilterFactory(MessageSource messageSource) {
super(Config.class);
this.messageSource = messageSource;
}
@Override
public GatewayFilter apply(Config config) {
return new GatewayFilter() {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
Locale locale = LocaleContextHolder.getLocale();
String message = messageSource.getMessage("test", null, locale);
exchange.getResponse().getHeaders().set("X-Custom-Locale", locale.getLanguage());
exchange.getResponse().getHeaders().set("X-Custom-Test", message);
return exchange.getResponse().setComplete();
}
};
}
public static class Config {
}
}