मैं स्ट्रिंग को स्थानीयकृत करने के लिए NSLocalizedString() का उपयोग करने से परिचित हूं, लेकिन आज की समस्या के लिए थोड़ा और अधिक आवश्यकता है। मेरी स्थिति इस तरह है:समेकित या गतिशील तारों को स्थानीयकरण
NSString *userName; //the users name, entered by the user. Does not need localized
NSString *favoriteFood; //the users favorite food, also entered by user, and not needing localized
NSString *summary = [NSString stringWithFormat:@"%@'s favorite food is %@", userName, favoriteFood];
यह अंग्रेजी के लिए ठीक काम करता है, लेकिन हर भाषा अंग्रेजी के रूप में एक ही शब्द आदेश का उपयोग करता है, उदाहरण के लिए, एक शब्द-दर-शब्द अंग्रेजी जापानी से एक ही sentance का अनुवाद होगा पढ़ें:
उपयोगकर्ता नाम के पसंदीदा भोजन पिज्जा
है नहीं उल्लेख करने के लिए कि है हर भाषा में एक स्वत्वबोधक नहीं है।
इस प्रकार की समेकित वाक्य को स्थानीयकरण के लिए कौन सी तकनीकें उपलब्ध हैं?
अन्य लोगों के लाभ के लिए अद्यतन: @ जोन रीड सही है, स्थानीयकरण के लिए स्थितित्मक विनिर्देशक बहुत महत्वपूर्ण हैं। वह दस्तावेज़ जो केवल उससे जुड़ा हुआ है, इस तथ्य का एक संदर्भ है कि उनका उपयोग एनएसएसटींग, एनएसएलओजी, अन्य लोगों के साथ किया जा सकता है, लिंक वास्तव में उनको उपयोग करने के लिए नहीं बताता है।
मुझे this link मिला, जो इसे अच्छी तरह से समझाता है। यह मेरे प्रश्न से भी बेहतर बताता है। लिंक से: printf और sprintf के लिए
स्वरूप तार (Printf देखें) अनुवाद के लिए एक विशेष समस्या प्रस्तुत करते हैं। निम्नलिखित पर विचार करें: हो सकता है इस के लिए 1
printf(_"String `%s' has %d characters\n", string, length(string))) A possible German
अनुवाद:
"%d Zeichen lang ist die Zeichenkette `%s'\n" The problem
स्पष्ट होना चाहिए: प्रारूप विनिर्देशों के आदेश अलग मूल से है! हालांकि Gettext अनुवादित स्ट्रिंग को रनटाइम पर वापस कर सकता है, यह printf को कॉल में ऑर्डर को बदल नहीं सकता है।
इस समस्या को हल करने के लिए, printf प्रारूप विनिर्देशक एक अतिरिक्त वैकल्पिक तत्व है, जो हम एक स्थितीय विनिर्देशक फोन हो सकता है। उदाहरण के लिए:
"%2$d Zeichen lang ist die Zeichenkette `%1$s'\n" Here, the
स्थितीय विनिर्देशक एक पूर्णांक गिनती, जो इंगित करता है जो तर्क का उपयोग करने के लिए, और एक '$' के होते हैं। गणना एक-आधारित हैं, और प्रारूप स्ट्रिंग स्वयं शामिल नहीं है।
$ gawk 'BEGIN { > string = "Dont Panic" > printf _"%2$d characters live in \"%1$s\"\n", > string, length(string) > }' -| 10 characters live in "Dont Panic"
मैंने आपके लिंक का पालन किया, और स्थानीयकरण स्ट्रिंग संसाधन (http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPInternational/Articles/StringsFiles.html) को भी पढ़ा। मुझे आपके द्वारा निर्दिष्ट प्रारूप विनिर्देशकों का कोई संदर्भ नहीं दिखाई देता है (% 2 $ @) क्या आप कृपया थोड़ा सा समझा सकते हैं? – SooDesuNe
लिंक का पालन करें, और "स्थितित्मक विनिर्देशकों" की खोज करें। इसके अलावा, इसे आज़माएं। स्थानीयकरण के लिए यह एक आवश्यक उपकरण है। –
आपके उदाहरण के अंत में '% $ 1 @ '' '1% @ @ होना चाहिए। – bovine