Quiero cargar varios archivos de propiedades de varios paquetes como ResourceBundle. ¿Puedo lograr eso en JavaJava Multiple ResourceBundles
5
A
Respuesta
3
Extienda java.util.PropertyResourceBundle
y llame al setParent
.
0
ResourceBundle.Control() controla la lista de archivos del ResourceBundle. Puede sobrescribir getCandidateLocales y toBundleName. toBundleName convierte la configuración regional en "nombre de archivo" y la lista de configuraciones regionales que puede controlar en getCandidateLocales. Por ejemplo como
final String[] variants = new String[]{"your names"};
ResourceBundle.getBundle(baseName, locale,
new ResourceBundle.Control() {
public List<Locale> getCandidateLocales(String baseName, Locale locale) {
List<Locale> out = new ArrayList<Locale>();
String language = locale.getLanguage();
String country = locale.getCountry();
for (String variant : variants) {
out.add(new Locale(language, country, variant));
}
out.addAll(super.getCandidateLocales(baseName, locale));
return out;
}
public String toBundleName(String baseName, Locale locale) {
Locale l = new Locale(locale.getLanguage(), locale.getCountry());
return locale.getVariant() + "." + super.toBundleName(baseName, l);
}
});
Sólo funciona en Java 1.6
0
mirada a esta clase. ¡Me funciona a la perfección! Javadoc for class explica cómo usarlo.
MultiplePropertiesResourceBundle (+ subsidiaria ResourceBundleEnumeration)
Aquí puede encontrar documentación de código atento unit-tests alias.
0
Aquí es mi aplicación:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
public class CombinedResourceBundle extends ResourceBundle
{
private Map<String, String> combinedResources = new HashMap<>();
private List<String> bundleNames;
private Locale locale;
private Control control;
public CombinedResourceBundle(List<String> bundleNames, Locale locale, Control control)
{
this.bundleNames = bundleNames;
this.locale = locale;
this.control = control;
}
public void load()
{
bundleNames.forEach(bundleName ->
{
ResourceBundle bundle = ResourceBundle.getBundle(bundleName, locale, control);
Enumeration<String> keysEnumeration = bundle.getKeys();
ArrayList<String> keysList = Collections.list(keysEnumeration);
keysList.forEach(key -> combinedResources.put(key, bundle.getString(key)));
});
}
@Override
public Object handleGetObject(String key)
{
return combinedResources.get(key);
}
@Override
public Enumeration<String> getKeys()
{
return Collections.enumeration(combinedResources.keySet());
}
}
Cuestiones relacionadas
- 1. Java Multiple Sounds
- 2. Multiple DbContext, multiple Database.SetInitializer
- 3. Multiple login-config para Java webapp
- 4. Merge (Concat) Multiple JSONObjects
- 5. RequireJS: Multiple main.js?
- 6. PHP Multiple Curl Requests
- 7. Listview Multiple Selection
- 8. C# Regex.Replace Multiple Newlines
- 9. Multiple UIBarButtonItems en UINavigationBar
- 10. Merge multiple cv :: Mat?
- 11. LINQ multiple where cláusula
- 12. Latex Multiple Linebreaks
- 13. Cómo usar Multiple TouchDelegate
- 14. jQuery Multiple Forms Submit
- 15. Multiple Backgroundworkers + C#
- 16. QObject Multiple Herencia
- 17. Multiple instanceof cheques
- 18. Apache Multiple VirtualDocumentRoot
- 19. Cabal Multiple Executables
- 20. Symfony multiple sites
- 21. MySQL Multiple Left Joins
- 22. Multiple Rails ORM
- 23. QLabel auto multiple lines
- 24. jQuery - multiple $ (document) .ready ...?
- 25. Android Multiple Notification
- 26. multiple reemplaza con javascript
- 27. Hashes vs. Multiple Params?
- 28. .htaccess Mantenimiento Multiple IP's
- 29. Multiple Regex replace
- 30. Android Adapter multiple getView
ParentResourceHoleder clase privada se extiende ResourceBundle { \t \t @ Override \t Enumeración pública GetKeys() {// \t \t TODO método generado Auto-stub \t \t return null; \t} \t @ Override \t protegido handleGetObject Object (String key) { \t \t // método generado-Auto TODO stub nula \t \t de retorno; \t} \t \t @ Override \t protegida setParent vacío (ResourceBundle padre) { \t \t super.setParent (padre); }} java.util.MissingResourceException: No se puede encontrar el recurso de java.util.PropertyResourceBundle paquete, clave input.error –
Nrusingha
Um, 'extiende java.util.PropertyResourceBundle'. –
http://stackoverflow.com/a/4615268/823282 tal vez esto es lo que querías, pero no sabías que lo querías – activedecay