2010-04-13 13 views

उत्तर

3

java.util.PropertyResourceBundle बढ़ाकर setParent पर कॉल कर सकता हूं।

+0

निजी वर्ग ParentResourceHoleder फैली ResourceBundle { \t \t @Override \t सार्वजनिक गणन getKeys() { \t \t // TODO स्वत: निर्मित विधि ठूंठ \t \t वापसी शून्य; \t} \t @Override \t संरक्षित वस्तु handleGetObject (स्ट्रिंग कुंजी) { \t \t // TODO स्वत: निर्मित विधि ठूंठ \t \t वापसी अशक्त; \t} \t \t @Override \t संरक्षित शून्य setParent (ResourceBundle माता पिता) { \t \t super.setParent (पैरेंट); } } java.util.MissingResourceException: बंडल java.util.PropertyResourceBundle के लिए संसाधन, कुंजी input.error – Nrusingha

+0

उम नहीं खोजा जा सका, 'java.util.PropertyResourceBundle' फैली हुई है। –

+0

http://stackoverflow.com/a/4615268/823282 शायद यह वही है जो आप चाहते थे, लेकिन आपको नहीं पता था कि आप इसे चाहते थे – activedecay

0

संसाधनबंडल। नियंत्रण() संसाधनबंडल के लिए फ़ाइलों की सूची को नियंत्रित करता है। आप getCandidateLocales और toBundleName को ओवरराइट कर सकते हैं। toBundleName लोकेल को "फ़ाइल नाम" में परिवर्तित करता है और उन स्थानों की सूची जिन्हें आप नियंत्रण में प्राप्त कर सकते हैं। कैंडिडेट लॉकल्स। उदाहरण के लिए

तरह
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); 
       } 
      }); 

यह केवल जावा 1.6

0

इस वर्ग में देखो में काम करता है। यह मेरे लिए पूरी तरह से काम करता है! वर्ग के लिए जावाडोक बताता है कि इसका उपयोग कैसे करें।

MultiplePropertiesResourceBundle (+ सहायक ResourceBundleEnumeration)

यहाँ आप मददगार unit-tests उर्फ ​​कोड प्रलेखन मिल सकता है।

0

यहाँ मेरी दिया गया है:

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()); 
    } 
} 
संबंधित मुद्दे