| package org.apache.wicket.bean.validation; |
| |
| import java.util.Locale; |
| |
| import jakarta.validation.MessageInterpolator; |
| |
| import org.apache.wicket.Session; |
| import org.apache.wicket.util.lang.Args; |
| |
| /** |
| * {@link MessageInterpolator} that adapts another to a locale from Wicket's {@link Session} |
| * |
| * @author igor |
| */ |
| public class SessionLocaleInterpolator implements MessageInterpolator |
| { |
| private final MessageInterpolator delegate; |
| |
| /** |
| * Constructor |
| * |
| * @param delegate |
| * the MessageInterpolator to delegate to |
| */ |
| public SessionLocaleInterpolator(MessageInterpolator delegate) |
| { |
| Args.notNull(delegate, "delegate"); |
| this.delegate = delegate; |
| } |
| |
| @Override |
| public String interpolate(final String messageTemplate, |
| final MessageInterpolator.Context context) |
| { |
| final Locale locale = getLocale(); |
| if (locale != null) |
| { |
| return interpolate(messageTemplate, context, locale); |
| } |
| else |
| { |
| return delegate.interpolate(messageTemplate, context); |
| } |
| } |
| |
| @Override |
| public String interpolate(final String message, final MessageInterpolator.Context context, |
| final Locale locale) |
| { |
| return delegate.interpolate(message, context, locale); |
| } |
| |
| private Locale getLocale() |
| { |
| return Session.exists() ? Session.get().getLocale() : null; |
| } |
| } |