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  
13      @Override
14      public String getMessage(String code, Object[] args, String defaultMessage, Locale locale) {
15          String result = getTranslation(code, locale, args);
16  
17          return !result.equals("!".concat(code)) ? result : defaultMessage;
18      }
19  
20      // needs to be overridden because of the exception my original ResourceBundleTranslater throws that messes with the spring MessageSource
21      @Override
22      public String getMessage(String code, Object[] args, Locale locale) {
23          return getTranslation(code, locale, args);
24      }
25  
26  
27      @Override
28      public String getMessage(MessageSourceResolvable resolvable, Locale locale) {
29          String[] codes = resolvable.getCodes();
30          if (codes != null) {
31              for (int i = 0; i < codes.length; i++) {
32                  String code = codes[i];
33  
34                  String result = getTranslation(code, locale, resolvable.getArguments());
35  
36                  if (! result.equals("!".concat(code))) {
37                      return result;
38                  }
39              }
40          }
41  
42          return getTranslation(resolvable.getDefaultMessage(), locale, resolvable.getArguments());
43      }
44      
45  }