की मैं कक्षा पथ में तीन संसाधन फ़ाइलों है:कैसे परवाह किए बिना डिफ़ॉल्ट ResourceBundle प्राप्त करने के लिए वर्तमान डिफ़ॉल्ट लोकेल
labels.properties:
language = Default
labels_en.properties:
language = English
labels_fr .properties:
language = French
क्या ResourceBundle
ऑब्जेक्ट प्राप्त करने का कोई तरीका है जो हमेशा labels.properties
लोड करता है कोई बात नहीं कि मेरा डिफ़ॉल्ट Locale
क्या है?
ResourceBundle.getBundle("labels")
वर्तमान डिफ़ॉल्ट लोकेल (अपेक्षित के रूप में) के अनुरूप एक देता है।
एकमात्र तरीका जो मैं पा सकता हूं वह डिफ़ॉल्ट लोकेल को एक गैर-मौजूदा लोकेल में सेट करना है, लेकिन यह अन्य मॉड्यूल तोड़ सकता है।
धन्यवाद!
Locale.setDefault(Locale.ENGLISH);
Assert.assertEquals("English", ResourceBundle.getBundle("labels").getString("language"));
Locale.setDefault(Locale.FRENCH);
Assert.assertEquals("French", ResourceBundle.getBundle("labels").getString("language"));
Assert.assertEquals("French", ResourceBundle.getBundle("labels", new Locale("do-not-exist")).getString("language"));
Locale.setDefault(new Locale("do-not-exist"));
Assert.assertEquals("Default", ResourceBundle.getBundle("labels").getString("language"));
आप प्रयास करने से पहले 'ResourceBundle.clearCache()' कॉल करने के लिए आवश्यकता हो सकती है: 'ResourceBundle .getBundle ("लेबल", नया लोकेल ("अस्तित्व में नहीं है")। getString ("भाषा")); '। ([इस सवाल से] (http://stackoverflow.com/questions/10981521/ गतिशील रूप से-change-resourcebundle-locale-in-java?rq=1))। –
@ डंकन आपकी टिप्पणी के लिए धन्यवाद। हालांकि, यह काम नहीं किया। यदि 'नया लोकेल (" अस्तित्व में नहीं है ") (मुझे इसका नाम होना चाहिए था" अस्तित्व में नहीं है "...) नहीं मिला है, 'संसाधन बंडल'' Locale.getDefault() 'के साथ एक को लोड करने का प्रयास करता है। इसके बजाय, बंडल का डिफ़ॉल्ट संस्करण नहीं है। –