2011-02-03 10 views
36

मैं उस स्ट्रिंग को कैसे स्थानीयकृत कर सकता हूं जिसमें NSLocalizedString के साथ प्लेसहोल्डर हैं?मैं प्लेसमेंट धारकों के साथ एक स्ट्रिंग को कैसे स्थानीयकृत कर सकता हूं?

उदाहरण के लिए:

[NSString stringWithFormat:@"You can afford %i at %@%li.",[kCash integerValue]/self.price, kYen, self.price] 

मैं इस स्थानीय बनाना कैसे करूँ? क्या मैं तारों को कई स्थानीय तारों में तोड़ता हूं? फिर मैं विभिन्न वाक्य संरचना और व्याकरण से कैसे निपटूं?

उत्तर

19

स्थानीयकृत तारों में प्लेसहोल्डर्स शामिल हैं। जैसा कि आपने उल्लेख किया है, उतना ही ऐसा करने का एकमात्र उचित तरीका है, आप अलग-अलग शब्द क्रम को ध्यान में नहीं ले सकते।

इन पंक्तियों के साथ

कुछ:

[NSString stringWithFormat:NSLocalizedString(@"Foo %i", @"Foo %i"), 123] 
+0

विल हालांकि यह काम करता है? क्या NSLocalizedString प्लेसहोल्डर्स के बारे में जानेगा और उन्हें मनमाना पाठ नहीं माना जाएगा? – Moshe

+3

यह एक तर्क के लिए काम करेगा, लेकिन यदि आपके पास दो तर्क हैं तो कई भाषाओं में आप प्लेसमेंटधारकों के आदेश को भी बदलना चाहते हैं। –

+18

-1 यह कोड टेक्स्ट के लिए काम नहीं करेगा जो ऑर्डर संवेदनशील है। इसके बजाय इसे स्थितित्मक तर्कों का उपयोग करना चाहिए (उदा।% 1 $ @)। साथ ही, NSLocalizedString का दूसरा पैरामीटर अनुवादकों के अनुवाद के संदर्भ को बेहतर ढंग से समझने के लिए अनुवादकों के लिए एक टिप्पणी होना है। प्रारंभिक पाठ को दोहराना अर्थहीन है, खासकर फॉर्मेटर तारों के साथ। – rbrown

5

यह करने के लिए एक और दृष्टिकोण है आपके स्थानीय फ़ाइल में, आप कर सकते हैं::

key = "String with %@ placeholder"; 

[NSString stringWithFormat:@"You can afford %1$i at %[email protected]%3$li.", 
           [kCash integerValue]/self.price, kYen, self.price] 

अधिक यहाँ की जानकारी - अपने उदाहरण में, गिने प्लेसहोल्डर का उपयोग कर शायद एक अच्छा विचार है

और आपके कार्यान्वयन में:

[NSString stringWithFormat: NSLocalizedString(@"key", ""), @"string replacing placeholder"]; 

आप इसे किसी भी तर्क के साथ कर सकते हैं, उन्हें बस अपनी स्थानीयकरण फ़ाइलों में सुसंगत होने की आवश्यकता है।

1

इस तरह अधिक कुशल लगता है:

[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Key", @"Comment for localised string"), value]; 
संबंधित मुद्दे

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