View Javadoc
1   package de.kaiserpfalzedv.commons.spring.i18n;
2   
3   import java.util.Locale;
4   
5   import org.springframework.context.MessageSource;
6   import org.springframework.context.MessageSourceResolvable;
7   import org.springframework.stereotype.Component;
8   import de.kaiserpfalzedv.commons.core.i18n.ResourceBundleTranslator;
9   
10  @Component
11  public class KaiserpfalzMessageSource extends ResourceBundleTranslator implements MessageSource {
12      public static final long serialVersionUID = 0L;
13  
14      @Override
15      public String getMessage(String code, Object[] args, String defaultMessage, Locale locale) {
16          String result = getTranslation(code, locale, args);
17  
18          return !result.equals("!".concat(code)) ? result : defaultMessage;
19      }
20  
21      // needs to be overridden because of the exception my original ResourceBundleTranslater throws that messes with the spring MessageSource
22      @Override
23      public String getMessage(String code, Object[] args, Locale locale) {
24          return getTranslation(code, locale, args);
25      }
26  
27  
28      @Override
29      public String getMessage(MessageSourceResolvable resolvable, Locale locale) {
30          String[] codes = resolvable.getCodes();
31          if (codes != null) {
32              for (int i = 0; i < codes.length; i++) {
33                  String code = codes[i];
34  
35                  String result = getTranslation(code, locale, resolvable.getArguments());
36  
37                  if (! result.equals("!".concat(code))) {
38                      return result;
39                  }
40              }
41          }
42  
43          return getTranslation(resolvable.getDefaultMessage(), locale, resolvable.getArguments());
44      }
45      
46  }