जब एक संसाधन बंडल में रखा जाता है, तो Apostrophe ठीक से अनुवादित नहीं होता है


90

जब एक संसाधन बंडल में रखा जाता है, तो Apostrophe ठीक से अनुवादित नहीं होता है।

key = {0}'s brush is {1} centimeters tall

(e.g. Sam's brush is 4 centimeters tall)

यदि मुझे उपरोक्त java.util.ResourceBundleसमस्या से क्या समस्या है, तो एपोस्ट्रोफ छूट जाता है?


4
+1 मैं स्वयं इस समस्या में भाग गया और इसके बारे में एक छोटी सी ब्लॉग पोस्ट लिखी। : शायद यह इस "सुविधा" में चल रहे लोगों के लिए अतिरिक्त जानकारी प्रदान कर सकते हैं mscharhag.com/2013/10/...
micha

जवाबों:


120

आपको एकल उद्धरण से बचना चाहिए

key = {0}''s brush is {1} centimeters tall

अच्छा जवाब। इससे सिंगल कोट्स के साथ मेरी समस्या हल हो गई है। धन्यवाद :) +1
अनीश बी

35

मैं दृढ़ता से विश्वास दिलाता हूं कि समस्या पुनर्संरचना बंडल नहीं है, लेकिन संदेश भेजने के लिए आपके द्वारा उपयोग किया जाने वाला MessageFormater :

MessageFormater जावा डॉक्टर से :

एक स्ट्रिंग के भीतर, '' ( दो एकल उद्धरण ) एक एकल उद्धरण का प्रतिनिधित्व करता है। एक कोटेडस्ट्रिंग में एकल उद्धरणों को छोड़कर मनमाने अक्षर हो सकते हैं; आसपास के एकल उद्धरण हटा दिए गए हैं। एक UnquotedString में एकल उद्धरण और बाएं घुंघराले कोष्ठक को छोड़कर मनमाना चरित्र हो सकते हैं। इस प्रकार, एक स्ट्रिंग जिसका परिणाम स्वरूपित संदेश '{0}' में होना चाहिए, उसे '' {{0} '' या '' {0} '' '' के रूप में लिखा जा सकता है।

तो आपको लिखना होगा:

{0}''s brush is {1} centimeters tall

6

देखो यहाँ जावाडोक

एक स्ट्रिंग के भीतर, "''" एकल उद्धरण का प्रतिनिधित्व करता है। एक कोटेडस्ट्रिंग में एकल उद्धरणों को छोड़कर मनमाने अक्षर हो सकते हैं; आसपास के एकल उद्धरण हटा दिए गए हैं। एक UnquotedString में एकल उद्धरण और बाएं घुंघराले कोष्ठक को छोड़कर मनमाना चरित्र हो सकते हैं। इस प्रकार, एक स्ट्रिंग जो स्वरूपित संदेश "" {0} "के परिणामस्वरूप होनी चाहिए," "'' {'0}' '' या '' '' {0} '' '' के रूप में लिखी जा सकती है।



5

@ राल्फ़ के उत्तर में जोड़ना: आप महसूस करेंगे कि यह एक ऐसी MessageFormatचीज़ है जब आपके पास एक पाठ है

text1=It's too late

बनाम

text2={0}''s too late

text1शायद मैसेजफ़ॉर्मर के माध्यम से नहीं चलेगा (जैसे कि वसंत के पास अलग-अलग कोड पथ हैं यदि तर्क पारित किए जाते हैं या नहीं), जबकि text2होगा। इसलिए यदि आपने दो एकल उद्धरणों का उपयोग किया है text1, तो वे इस तरह प्रदर्शित / कर सकते हैं। इसलिए आपको यह जांचने की आवश्यकता होगी कि क्या कोई दलीलें स्वरूपित हैं या नहीं और तदनुसार एक या दो एकल उद्धरणों का उपयोग करें।


5

यदि आप पूरी तरह से फंस गए हैं, जैसा कि मैं था (उपरोक्त में से कोई भी काम नहीं किया गया), तो आप अपने यूनिकोड: \ u0027 के साथ एपोस्ट्रोफ साइन को बदल सकते हैं। याद रखें कि आपको हमेशा अपनी संपत्तियों की फ़ाइल में UTF प्रतीक का उपयोग करने की अनुमति है।



1

सभी के लिए जो स्ट्रिंग में एंड्रॉइड की समस्याएँ हैं। xml, एकल बोली के बजाय \ '\' का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.