package org.jabref.logic.l10n; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.List; import java.util.Objects; import java.util.ResourceBundle; import java.util.stream.Collectors; /** * A bundle containing localized strings. * It wraps an ordinary resource bundle and performs escaping/unescaping of keys and values similar to * {@link Localization}. Needed to support JavaFX inline binding. */ public class LocalizationBundle extends ResourceBundle { private final ResourceBundle baseBundle; public LocalizationBundle(ResourceBundle baseBundle) { this.baseBundle = Objects.requireNonNull(baseBundle); } @Override protected Object handleGetObject(String key) { return Localization.translate(baseBundle, "message", key); } @Override public Enumeration<String> getKeys() { ArrayList<String> baseKeys = Collections.list(baseBundle.getKeys()); List<String> unescapedKeys = baseKeys.stream().map(key -> new LocalizationKey(key).getTranslationValue()) .collect(Collectors.toList()); return Collections.enumeration(unescapedKeys); } }