Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright (C) 2014 the original author or authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ro.pippo.pebble;
public class I18nExtension extends AbstractExtension {
    private static final Logger log = LoggerFactory.getLogger(I18nExtension.class);
    private final Messages messages;
    public I18nExtension(Messages messages) {
        this. = messages;
    }
    @Override
    public Map<StringFunctiongetFunctions() {
        Map<StringFunctionfunctions = new HashMap<>();
        functions.put("i18n"new I18nFunction());
        return functions;
    }
    class I18nFunction implements FunctionLocaleAware {
        private Locale locale;
        @Override
        public void setLocale(Locale locale) {
            this. = locale;
        }
        @Override
        public List<StringgetArgumentNames() {
            List<Stringnames = new ArrayList<>();
            names.add("key");
            // we simulate up to 5 arguments for message parameters
            names.add("arg1");
            names.add("arg2");
            names.add("arg3");
            names.add("arg4");
            names.add("arg5");
            return names;
        }
        @Override
        public Object execute(Map<StringObjectargs) {
            String messageKey = (Stringargs.get("key");
            String requestLang = .toLanguageTag();
            List<ObjectmessageArgs = Lists.newArrayList();
            for (int i = 1; i <= 5; i++) {
                if (args.containsKey("arg" + i)) {
                    Object object = args.get("arg" + i);
                    messageArgs.add(object);
                }
            }
            String messageValue = .get(messageKeyrequestLangmessageArgs.toArray());
            return messageValue;
        }
    }
New to GrepCode? Check out our FAQ X