2011-02-06 7 views
5

का उपयोग कर Struts2 अंतर्राष्ट्रीयकरण हमारे पास एक बड़ी संख्या में गतिशील सामग्री के साथ एक बड़ा अनुप्रयोग है। क्या संपत्तियों की बजाय i18n लुकअप के लिए डेटाबेस का उपयोग करने के लिए स्ट्रेट को मजबूर करने के लिए वैसे भी है?डेटाबेस

मैं यदि कोई कभी गतिशील सामग्री के साथ i18n किया है, अन्य तरीकों से इस को हल करने के लिए भी खुला होगा।

+0

स्ट्रूट्स 1 (उदाहरण के लिए http://wiki.apache.org/struts/DatabaseMessageResourcesHowto) के साथ ऐसा करने के तरीके थे।दुर्भाग्यवश, Struts 2 में एक ही चीज़ को कैसे करें, इस बारे में अधिक जानकारी नहीं प्रतीत होती है। –

उत्तर

2

नहीं, किसी डेटाबेस से struts2 लोड स्थानीय सामग्री के लिए कोई अंतर्निहित तरीका है। आपको खुद को लिखना होगा।

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

+0

हमारे उपयोगकर्ता इनपुट जो अनिवार्य रूप से सर्वेक्षण हैं, और उनको अनुवादित करने की आवश्यकता है। मैं अनुवाद संसाधनों के स्रोत को बदलने की उम्मीद कर रहा था, ताकि हम गतिशील रूप से अनुवादों को भी बदल सकें। – partkyle

0

आप एक कस्टम इंटरसेप्टर बनाकर ऐसा कुछ करने में सक्षम हो सकते हैं। आप इंटरसेप्टर को अपने डेटाबेस से सभी महत्वपूर्ण मूल्य जोड़े पढ़ सकते हैं और उन्हें मूल्य स्टैक में इंजेक्ट कर सकते हैं। एकमात्र चीज जो मुझे यकीन नहीं है, वास्तव में पहले स्ट्रैट्स के साथ i18n के साथ गड़बड़ नहीं हुई है, अगर i18n सामान उस जानकारी को मूल्य स्टैक से खींचती है। यदि नहीं, तो मुझे यकीन नहीं है कि अगर आप सूचना को लोड करने के लिए इंटरसेप्टर में कुछ और कर सकते हैं।

कस्टम इंटरसेप्टर बनाना बहुत जटिल नहीं है। वहां बहुत सारी ट्यूटोरियल साइटें हैं, जिनमें शामिल हैं (यहां स्वयं पदोन्नति के लिए ब्रेस) मेरा ब्लॉग: http://ddubbya.blogspot.com/2011/01/creating-custom-struts2-interceptors.html

-1

उपयोग गुण, बस स्थैतिक सामग्री के लिए फ़ाइलें लेबल जैसे संदेशों आदि

गतिशील सामग्री के लिए एक डेटाबेस तालिका है कि आप उपयोग करना चाहते हैं हर भाषा के लिए एक भाषा-कोड-id है के साथ शुरू करते हैं। सभी गतिशील सामग्री प्रविष्टियां जिनका पहले से अनुवाद किया गया है, उनकी प्राथमिक भाषा-कोड-आईडी उनके प्राथमिक कुंजी में जोड़े गए हैं। यदि कोई अनुवाद गुम है, तो सही अनुवाद मौजूद होने तक चीजों को आसान बनाने के लिए आप अपने एप्लिकेशन को अपनी डिफ़ॉल्ट भाषा में वापस आने के लिए प्रोग्राम कर सकते हैं।

अपने उपयोगकर्ताओं को अपनी भाषा में अपनी योगदान प्रदान करने दें और उचित भाषा-आईडी के साथ स्टोर करें। योगदान को पूरा करने के लिए किसी को अन्य भाषाओं में अनुवाद प्रदान करना चाहिए।

... 
PRIMARY KEY (`subject_id`,`language_id`), 
... 
4

मैं इस के लिए एक आसान प्लग-एंड-प्ले समाधान के बारे में पता नहीं है, इसलिए आप शायद होगा यह अपने आप को लागू करने के लिए - के साथ कैसे बस पकड़ के लिए आ रहा है समय की काफ़ी खर्च पर योजना स्ट्रैट्स 2 (और एक्सवर्क्स) की स्थानीयकरण सुविधाएं लागू की गई हैं। कुंजी शायद com.opensymphony.xwork2.TextProvider का अपना कार्यान्वयन प्रदान करेगी (और struts.xml में < बीन > टैग प्रदान करके इसका उपयोग करने के लिए स्ट्रेट्स बताएं)। मैं समग्र वास्तुकला में इस फिटिंग के कम से कम दो तरीके के बारे में सोच सकते हैं:

  • अपने TextProvider कार्यान्वयन सीधे डेटाबेस का उपयोग किया है। यागनी की भावना में, यह संभवतः शुरू करने का सबसे अच्छा तरीका है (यदि आवश्यक हो तो आप हमेशा बाद में प्रतिक्रिया कर सकते हैं)।

  • वैकल्पिक रूप से, आप जावा के ResourceBundle इंटरफ़ेस के कार्यान्वयन में डेटाबेस कोड डाल सकते हैं, जो XWork आंतरिक रूप से उपयोग करता है। मेरे लिए यह एक और अधिक डिजाइन-भारी दृष्टिकोण की तरह लगता है, लेकिन प्लस तरफ कुछ articlesaround यह वर्णन करने का वर्णन करता है।