15

में मूल्य के बजाय ऐप स्थानीयकरण दिखा रहा है, मैं अपने ऐप में स्थानीयकरण का उपयोग कर रहा हूं, लेकिन किसी कारण से, कुछ स्ट्रिंग्स (उनमें से सभी नहीं) अनुवाद नहीं करेंगे, मैं कुंजी देखता हूं इसके बजाय मूल्य। मैंने यह जांचने की कोशिश की है कि ऐप को स्थानीयकरण फाइलें यह कर रही हैं या नहीं:आईओएस

NSString *enPath = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
NSString *hePath = [[NSBundle mainBundle] pathForResource:@"he" ofType:@"lproj"]; 
NSString *ruPath = [[NSBundle mainBundle] pathForResource:@"ru" ofType:@"lproj"]; 
NSString *esPath = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"]; 
NSString *frPath = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"]; 
NSString *arPath = [[NSBundle mainBundle] pathForResource:@"ar" ofType:@"lproj"]; 

और उनमें से कोई भी शून्य नहीं है।

मैंने स्थानीयकरण फ़ाइल का नाम चेक किया है और यह Localizable.strings जैसा होना चाहिए। यह भी जांच की गई कि Localizable.strings फ़ाइलों के अंदर कुंजी मौजूद है और यह करता है।

मैं भी कोशिश की है:

  • कैश खाली
  • सभी लक्ष्यों सफाई
  • हटाएँ व्युत्पन्न डेटा फ़ोल्डर
  • पुनः प्रारंभ
  • रीसेट सिम्युलेटर
  • UTF-16
  • में बदलें
  • सभी स्थानीयकरण फ़ाइलों को हटाएं और उन्हें फिर से बनाएं।

this प्रश्न में सबकुछ करने की भी कोशिश की गई।

यह कहना महत्वपूर्ण है कि यह केवल सिम्युलेटर/कैश समस्या नहीं है। यह उन डिवाइसों पर भी दिख रहा है जो ऐप डाउनलोड करते हैं। (मेरे पास एंटरप्राइज़ खाता है)।

समस्या को पहचानने और न ही ठीक करने के लिए मैं और क्या कर सकता हूं?

+0

के नाम बदल सकते हैं अपनी फ़ाइल Localizable.string या Localizable.strings कहा जाता है? –

+0

फ़ाइल का नाम Localizable.strings है –

उत्तर

8

इसलिए मुझे समस्या मिली, मुझे लगता है कि मेरे लिए Localizable.strings फ़ाइलों का अनुवाद किसने किया है। मेरे तार में 4 स्थानों दायर एक पंक्ति थी के रूप में पालन:

"KEY" ;= "Value" 

इस लाइन कारण एक दुर्घटना के कुछ प्रकार है, लेकिन संकलक किसी कारण से सफलतापूर्वक निर्माण करने के लिए करते हैं। यही कारण है कि मुझे बग नहीं मिल सका, केवल तभी जब मैंने अंतिम कुंजी और मूल्य लेने का फैसला किया जो अनुवाद नहीं कर रहा है और उन्हें Localizable.strings फ़ाइल के शीर्ष पर ले जाएं। तब मैं समझने में सक्षम था कि समस्या कहीं फ़ाइल के बीच में है और शीर्ष कुंजी और मानों का अनुवाद ठीक है।

0

यदि आप table:nil निर्दिष्ट करते हैं, तो NSBundle स्थानीय तालिका को स्थानीय तालिका (SOMELANG.lproj/Localizable.strings में से) लाने का प्रयास करेगा। आप localization कहीं और है, तो आप स्पष्ट रूप से table:@"File" का उपयोग कर तालिका निर्दिष्ट करना चाहिए (या एक समान तरीके से NSLocalizedStringFromTable() मैक्रो का उपयोग:

NSString *value = NSLocalizedStringFromTable(@"key", @"File", nil); 

इसके अलावा, तरह जांच लें कि Localizable.strings फ़ाइल

Targets -> BuildPhases -> Copy Bundle Resources 
जोड़ा जा रहा है

यह मेरे लिए स्वचालित रूप से जोड़ नहीं किया गया था।

2

एक बात है कि आप त्रुटियों की तरह पकड़ कर सकते हैं तार फ़ाइल की एक प्रतिलिपि बनाने के लिए, ई बदल रहा है प्लेस्ट करने के लिए xtension और इसे एक्सकोड में खोलने का प्रयास करें।यदि स्ट्रिंग्स फ़ाइल में कोई समस्या है तो यह एक्सकोड में दिखाएगा क्योंकि डिक्शनरी में उस बिंदु तक केवल चाबियां होंगी जहां त्रुटि है। फिर आप एक ढूँढें ऑपरेशन कर सकते हैं और त्रुटि तब तक पा सकते हैं जब तक आप सुनिश्चित न हों कि सभी तार plist फ़ाइल में दिखाई देते हैं। इसके बाद आप फ़ाइल वापस .strings

enter image description here