2012-03-29 12 views
9

क्या कोई ऐसा उपकरण है जो जावा। प्रोपर्टीज फ़ाइल को उस क्लास में संकलित करेगा जिसे मैं जावा ईई (टॉमकैट) एप्लिकेशन में उपयोग कर सकता हूं? एंड्रॉइड की तरह जहां ग्रहण प्लगइन एक स्थिर R.strings वर्ग उत्पन्न करता है।जावा: स्टेटिक स्ट्रिंग लोकलाइजेशन

मैं इस लेख पाया:

http://www.techhui.com/profiles/blogs/localization-in-gwt-using

लेकिन यह GWT पर निर्भर है। किसी भी मदद की सराहना की।

+0

क्या आप थोड़ा सा समझा सकते हैं। क्या आपका मतलब है कि एक वर्ग जिसमें स्थिरांक (जैसे enum) या सिर्फ एक संपत्ति धारक है? – questzen

+0

यह पोस्ट आप जो पूछ रहे हैं उससे काफी समान लगता है: http://stackoverflow.com/questions/1578026/java-properties-files-as-strongly-typed-classes –

उत्तर

4

मैंने इस तरह के टूल के बारे में कभी नहीं सुना है। जीडब्ल्यूटी में एक बड़ी स्थगित बाध्यकारी तकनीक है लेकिन यह वह चीज नहीं है जिसे आप ढूंढ रहे हैं। हालांकि मुझे लगता है कि ऐसे कार्यों के लिए मूल कोड जेनरेटर लागू करना संभव है।

लेकिन आपके प्रश्न का उत्तर यह है: जहां तक ​​मुझे पता है कि वहां नहीं है।

+0

+1 छोटे जावा एप्लिकेशन का उपयोग करके कोड पीढ़ी के लिए +1 आप स्वचालित रूप से एक चींटी कार्य से आक्रमण कर सकते हैं जिसे आप ग्रहण में स्वचालित रूप से आवंटित निर्माता के रूप में जोड़ सकते हैं। – jabal

0

संसाधनबंडल के बारे में क्या?

// refers to "src/config.properties" 
ResourceBundle config = ResourceBundle.getBundle("config"); 
String property1 = config.getString("property1"); 
+1

इस प्रश्न के अन्य हालिया जवाब के साथ, यह इस प्रश्न का उत्तर नहीं देता है। आपने जो वर्णन किया है वह यह है कि यह आमतौर पर कैसे किया जाता है। लेकिन एंड्रॉइड में आप संकलित समय (आर.आईडी) में सभी संसाधनों के साथ एक जेनरेट क्लास प्राप्त करते हैं। यदि प्रॉपर्टी 1 परिभाषित नहीं है तो आपको यहां रनटाइसेप्शन मिलेगा। यदि यह एंड्रॉइड में परिभाषित नहीं है तो आपको संकलन समय त्रुटि मिल जाएगी। – jontro

0

मुझे लगता है कि एक एक Maven प्लगइन (या चींटी कार्य) कि सिर्फ संकलन कदम से पहले जावा स्रोत उत्पन्न करता है एक कस्टम में ANTLR उपयोग करने वाली प्रॉपर्टी फ़ाइलों के लिए एक बहुत ही सरल व्याकरण लिख सकते हैं।

0

JSON फ़ाइल में अपनी गुणों को संग्रहीत करने के बारे में कैसे। फ़ाइल में संग्रहीत JSON ऑब्जेक्ट को जावा क्लास में मैप करना चाहिए, जैक्सन मैपर का उपयोग deserialize करने के लिए करें। जैक्सन के साथ आप यह लागू कर सकते हैं कि सभी फ़ील्ड deserialize पर गैर-शून्य होना चाहिए। आप जीएसओएन का भी उपयोग कर सकते हैं और एक कस्टम deserializer लिख सकते हैं जो चेक को उतना सख्त करता है जितना आप चाहते हैं। उदाहरण - आप तारों के लिए खाली नहीं के साथ शून्य को लागू नहीं कर सकते हैं।

0

Compiler Assisted Localization (CAL10N) बिल्कुल वही नहीं है जो आपने पूछा था, लेकिन मदद की जा सकती है।

हालांकि यह जावा प्रोग्राम्स से .properties से उत्पन्न नहीं करता है, क्योंकि मैम का उपयोग करते हुए संदेश कुंजी अभी भी तारों से बेहतर है, क्योंकि आपको कंपाइलर से कुछ मदद मिलती है।

एक enum घोषित करें, एनोटेशन के साथproperties के साथ बाध्य करें और संदेश लुकअप में enum मूल्यों का उपयोग करें। हालांकि, मैंने अभी तक यह कोशिश नहीं की है। manual देखें।

1

अनुप्रयोगों को अंतर्राष्ट्रीय बनाने के लिए मैंने Message Compiler लागू किया, जो संसाधन बंडल फ़ाइलों और एक एकल स्रोत फ़ाइल से कुंजी के लिए जावा एनम्स या स्थैतिक अंतिम तार के रूप में निरंतर परिभाषाएं बनाता है। तो स्थिरांक जावा स्रोत कोड में उपयोग किया जा सकता है, जो सादे तारों का उपयोग करने से कहीं अधिक सुरक्षित तरीका है। इस मामले में आपको एक संकलन समय त्रुटि भी मिलती है, जब आप एक कुंजी स्थिरांक का उपयोग करते हैं, जो अस्तित्व में नहीं है। संदेश कंपाइलर का उपयोग केवल जावा के लिए नहीं किया जा सकता है। यह उद्देश्य-सी या स्विफ्ट के लिए संसाधन फ़ाइलों और स्थिरांक भी बनाता है और अन्य प्रोग्रामिंग वातावरण के लिए बढ़ाया जा सकता है।

संबंधित मुद्दे