दिलचस्प पोस्ट
TextView की लाइनों की संख्या कैसे प्राप्त करें? Nullable <value> प्रकारों के साथ सशर्त ऑपरेटर असाइनमेंट? दबाया <बटन> सीएसएस टेम्पलेट केवल हेडर फाइल में क्यों लागू हो सकते हैं? बल लेआउट () का उपयोग, अनुरोध लेआउट () और अमान्य () एक ऊँचाई डिवी में खड़ी रूप से केंद्र डिवीजन? $ _GET / $ _POST / $ _COOKIE के स्थान पर कब और क्यों $ _REQUEST का उपयोग किया जाना चाहिए? IIS8 में IIS_IUSRS और IUSR अनुमतियाँ "#प्रगमा टिप्पणी" क्या मतलब है? एंड्रॉइड प्रोजेक्ट में दायरे का उन्नयन एक विशिष्ट समय क्षेत्र में सी # एफएक्स 3.5 में दिनांक समय बनाना जीआईटीटी और जीआईएन सूचकांक के बीच का अंतर CKEditor उदाहरण पहले से मौजूद है जब static_cast, dynamic_cast, const_cast और reinterpret_cast को इस्तेमाल किया जाना चाहिए? लॉलीपॉप में ऐप मैच करने के लिए स्टेटस बार का रंग कैसे बदल सकता है?

प्रबंधित बीन में संसाधन बंडल गुण पढ़ें

<resource-bundle> फ़ाइलों का उपयोग करना मैं अपने JSF पृष्ठों में i18n पाठ प्राप्त करने में सक्षम हूं।

लेकिन क्या यह मेरी प्रबंधित बीन में इन गुणों का उपयोग करना संभव है, इसलिए मैं i18n मानों के साथ चेहरे संदेश सेट कर सकता हूं?

Solutions Collecting From Web of "प्रबंधित बीन में संसाधन बंडल गुण पढ़ें"

मान लें कि आपने इसे निम्नानुसार कॉन्फ़िगर किया है:

 <resource-bundle> <base-name>com.example.i18n.text</base-name> <var>text</var> </resource-bundle> 

यदि आपकी बीन का अनुरोध किया गया है, तो आप केवल <resource-bundle> @ManagedProperty रूप में अपने <var> द्वारा इंजेक्ट कर सकते हैं:

 @ManagedProperty("#{text}") private ResourceBundle text; public void someAction() { String someKey = text.getString("some.key"); // ... } 

या यदि आपको कुछ विशेष कुंजी की आवश्यकता है:

 @ManagedProperty("#{text['some.key']}") private String someKey; public void someAction() { // ... } 

यदि आपकी बीन एक विस्तृत क्षेत्र में है, तो विधिवत स्थानीय क्षेत्र में #{text} प्रोग्रामेटिक रूप से मूल्यांकन करें:

 public void someAction() { FacesContext context = FacesContext.getCurrentInstance(); ResourceBundle text = context.getApplication().evaluateExpressionGet(context, "#{text}", ResourceBundle.class); String someKey = text.getString("some.key"); // ... } 

या यदि आपको केवल कुछ विशिष्ट कुंजी की आवश्यकता होती है:

 public void someAction() { FacesContext context = FacesContext.getCurrentInstance(); String someKey = context.getApplication().evaluateExpressionGet(context, "#{text['some.key']}", String.class); // ... } 

आप इसे मानक ResourceBundle एपीआई से भी प्राप्त कर सकते हैं जैसा कि जेएसएफ खुद ही पहले से ही कवर के तहत कर रहा है, आपको कोड में आधार नाम दोहराने की आवश्यकता होगी:

 public void someAction() { FacesContext context = FacesContext.getCurrentInstance(); ResourceBundle text = ResourceBundle.getBundle("com.example.i18n.text", context.getViewRoot().getLocale()); String someKey = text.getString("some.key"); // ... } 

या यदि आप जेएसएफ के बजाय सीडीआई द्वारा बीन्स का प्रबंधन कर रहे हैं, तो आप इसके लिए एक @Producer बना सकते हैं:

 public class BundleProducer { @Produces public PropertyResourceBundle getBundle() { FacesContext context = FacesContext.getCurrentInstance(); return context.getApplication().evaluateExpressionGet(context, "#{text}", PropertyResourceBundle.class); } } 

और इसे नीचे के रूप में डालें:

 @Inject private PropertyResourceBundle text; 

वैकल्पिक रूप से, यदि आप जेएसएफ यूटिलिटी लाइब्रेरी OmniFaces के Messages वर्ग का उपयोग कर रहे हैं, तो आप अपने रिज़ॉल्वर को एक बार सेट कर सकते हैं ताकि सभी Message विधियां बंडल का उपयोग कर सकें।

 Messages.setResolver(new Messages.Resolver() { public String getMessage(String message, Object... params) { ResourceBundle bundle = ResourceBundle.getBundle("com.example.i18n.text", Faces.getLocale()); if (bundle.containsKey(message)) { message = bundle.getString(message); } return MessageFormat.format(message, params); } }); 

जवाडॉक और शोकेस पेज में उदाहरण भी देखें

एक अन्य संभावना:

चेहरे-config.xml

 <?xml version='1.0' encoding='UTF-8'?> <faces-config ...> <application> <locale-config> <default-locale>de</default-locale> </locale-config> <resource-bundle> <base-name>de.fhb.resources.text.backend</base-name> <var>backendText</var> </resource-bundle> </application> </faces-config> 

YourBean.java

 FacesContext context = FacesContext.getCurrentInstance(); Application app = context.getApplication(); ResourceBundle backendText = app.getResourceBundle(context, "backendText"); backendText.getString("your.property.key"); 

यहाँ एक समाधान है जो मैं उपयोग कर रहा हूं, उतना आसान नहीं है, लेकिन कम से कम काम कर रहा हूं:

प्रथम श्रेणी :

 package com.spectotechnologies.website.util; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator; /** * * @author Alexandre Lavoie */ public class MessageInterpolator extends ResourceBundleMessageInterpolator { public static final String LANGUAGE_TAG_PATTERN = "\\{[^}]*\\}"; @Override public String interpolate(String p_sMessage, Context p_oContext) { return super.interpolate(replaceMessages(p_sMessage),p_oContext); } @Override public String interpolate(String p_sMessage, Context p_oContext, Locale p_oLocale) { StringManager.setLocale(p_oLocale); return super.interpolate(replaceMessages(p_sMessage),p_oContext,p_oLocale); } private String replaceMessages(String p_sMessage) { Matcher oMatcher; String sKey; String sReplacement; StringBuffer sbTemp = new StringBuffer(); oMatcher = Pattern.compile(LANGUAGE_TAG_PATTERN).matcher(p_sMessage); while(oMatcher.find()) { sKey = oMatcher.group().substring(1,oMatcher.group().length() - 1); sReplacement = StringManager.getString(sKey); if(!sReplacement.startsWith("???")) { oMatcher.appendReplacement(sbTemp,sReplacement); } } oMatcher.appendTail(sbTemp); return sbTemp.toString(); } } 

द्रितीय श्रेणी :

 package com.spectotechnologies.website.util; import com.spectotechnologies.util.BundleManager; import com.spectotechnologies.util.FacesSessionManager; import java.util.Locale; /** * set-up and interface a BundleManager * save the bundleManager into the session * @author Charles Montigny */ public final class StringManager { /** the session name of this class bundle manager */ public static final String BUNDLE_MANAGER_SESSION_NAME = "StringManager_BundleManager"; /** List of ResourceBundle names to load. * Will be load in order. * The last ones values may overrite the first ones values. */ private final static String[] BUNDLE_LIST = { "com.spectotechnologies.hibernate.validation.resources.ValidationMessages", "com.spectotechnologies.website.general.resources.ValidationMessages", "com.spectotechnologies.website.general.resources.General"}; /** bundle manager */ private static BundleManager m_oBundleManager = null; private static BundleManager getBundleManager() { if(m_oBundleManager == null) { // get the bundle into the session m_oBundleManager = (BundleManager)FacesSessionManager.getObject(BUNDLE_MANAGER_SESSION_NAME); if(m_oBundleManager == null) { // session was empty, load a new one m_oBundleManager = new BundleManager(); for(int iIndex = 0; iIndex < BUNDLE_LIST.length; iIndex++) { m_oBundleManager.addBundle(BUNDLE_LIST[iIndex]); } // add the bundle to the session FacesSessionManager.setObject(BUNDLE_MANAGER_SESSION_NAME, m_oBundleManager); } } return m_oBundleManager; } /** * get a string value in the bundle manager by a string key * @param p_sKey the string key * @return the value of the string key */ public static String getString(String p_sKey) { return getBundleManager().getStringValue(p_sKey); } /** * set the locale * @param p_oLocale the locale to set */ public static void setLocale(Locale p_oLocale) { getBundleManager().setLocale(p_oLocale); // update the session FacesSessionManager.setObject(BUNDLE_MANAGER_SESSION_NAME, getBundleManager()); } } 

आपके गुण फ़ाइलों के साथ BUNDLE_LIST को ओवरराइड करने के बाद। एक बार किया, इसे इस तरह प्रयोग करें:

 sMessage = StringManager.getString("website.validation.modifySystem.modified"); 

यदि आपके कोई प्रश्न हैं, तो संकोच न करें!

संपादित करें:

आपको संदेश इंटरपोलेटर को भी घोषित करना होगा

META-INF / validation.xml

 <validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration"> <message-interpolator>com.spectotechnologies.website.util.MessageInterpolator</message-interpolator> </validation-config>