2012-08-29 10 views
37

UIBarButtonItem में रद्द, संपन्न और कुछ अन्य जैसे पहचानकर्ता हैं। वे उपयोगकर्ता को पाठ के रूप में दिखाए जाते हैं। यदि उपयोगकर्ता भाषा बदलता है तो उदाहरण के लिए रद्द करें बटन का स्वचालित रूप से अनुवाद किया जाएगा। और डेवलपर के रूप में आपको इस बटन के लिए स्थानीयकरण स्ट्रिंग प्रदान करने की आवश्यकता नहीं है। इसका मतलब है कि रद्द, संपन्न और अन्य तार पहले से ही स्थानीयकृत हैं और ओएस के साथ मिलकर आता है।स्थानीयकृत कैसे रद्द करें, संपन्न और आदि कैसे प्राप्त करें?

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

मैं स्थानीयकरण फ़ाइलों को अतिरिक्त तार जोड़ना नहीं चाहता हूं। और यदि पहुंचना संभव है तो यह बहुत अच्छा होगा।

+0

आप नहीं मिल सकता शीर्षक संपत्ति के माध्यम से अपनी स्ट्रिंग तक पहुंच? – tiguero

+2

यदि यह बटन यूआई में रखा गया है तो मैं UIBarButtonItem का शीर्षक प्राप्त कर सकता हूं। लेकिन मैं इस अनुवाद को चारों ओर काम का उपयोग नहीं करना चाहता हूं। – Ramis

+0

yourUIBarButtonItem.title आपको प्रदर्शित होने वाली स्ट्रिंग को पुनर्प्राप्त करने देता है - क्या आप यही चाहते हैं? – tiguero

उत्तर

21

इस्तेमाल कर सकते हैं यह एक छोटा सा मैक्रो मैं सिस्टम UIKit स्ट्रिंग्स प्राप्त करने के लिए बनाया गया है:

#define UIKitLocalizedString(key) [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] localizedStringForKey:key value:@"" table:nil] 

इस तरह यह प्रयोग करें:

UIKitLocalizedString(@"Search"); 
UIKitLocalizedString(@"Done"); 
UIKitLocalizedString(@"Cancel"); 
... 
+8

मैक्रो-गंध के बिना सामान्य कार्य करें – gaussblurinc

+1

क्या सभी चाबियाँ पाने का कोई तरीका है? – kelin

+0

यह अब काम नहीं करता – Vyacheslav

1

जैसा कि आप पूछ रहे हैं जैसे लगता है कि अगर ऐप्पल प्री-ट्रांसलेशन स्ट्रिंग्स के शब्दकोश को एक्सेस करने का तरीका प्रदान करता है। मुझे लगता है कि इस तरह के कुछ के लिए ऐप्पल द्वारा प्रदान की गई कुछ भी उनके डॉक्स में स्थित होगी: Internationalization Programming Topics

अपने प्रश्न का उत्तर देने के लिए मुझे विश्वास नहीं है कि वे ज्ञात अनुवादों का एक शब्दकोश/सूची प्रदान करते हैं। या तो आपको उन्हें अपने Localizable.strings संसाधन फ़ाइल में परिभाषित करना होगा या जैसा कि अन्य ने टिप्पणी में कहा है और शीर्षक को UIBarButtonItem से खींचें (मैं व्यक्तिगत रूप से संसाधन फ़ाइल के साथ जाऊंगा)।

3

शायद वही नहीं जो आप खोज रहे थे, मैक ऐप स्टोर में "सिस्टम स्ट्रिंग्स" नामक एक वाणिज्यिक ऐप है जिसका दावा है कि यह 53000 से अधिक मानक स्थानीय तारों का संग्रह प्रदान करता है। इसे 2 नवंबर, 2012 को जारी किया गया था। मैं इस ऐप या लेखक से संबद्ध नहीं हूं। यूआरएल https://itunes.apple.com/us/app/systemstrings/id570467776 है।

+0

हां यह वही नहीं है जो मैं चाहता था, लेकिन यह अच्छा लग रहा है। बिंदु के करीब। – Ramis

9

एक (वैसे संदिग्ध) यह आसानी से पूरा सीधे का उपयोग कर रहा है एप्पल के ढांचे बंडल स्थानीयकरणों के रास्ते:

वे क्या बेच रहे हैं देखने के लिए, खोजकर्ता के माध्यम से निम्न निर्देशिका खोलें:

/Applications/Xcode/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/Frameworks

और आपके मामले में, आप बाद में ./UIKit.framework/English.lproj/Localizable.strings (टेक्स्टमैट में) खोलेंगे। यहां आप विभिन्न प्रकार के अनुवाद देख रहे हैं जो ऐप्पल "प्रिंट", "ओके", "ऑन", "ऑफ" इत्यादि जैसी चीजों के लिए उपयोग करता है। वास्तविक जादू यह है कि लगभग 35 अलग-अलग भाषा अनुवाद हैं जिन्हें आप कॉपी कर सकते हैं खुद के लिए Localizable.strings फ़ाइलें, मुफ्त में।

आप अविश्वसनीय रूप से बेशर्म कर रहे हैं और प्रश्न में अपने ऐप के भविष्य स्थिरता डालने से परहेज नहीं करते हैं, तो आप इस प्रक्रिया को "अपनी खुद की Localizable.strings में कॉपी" पूरे छोड़ सकते हैं और प्रोग्राम के रूप में स्रोत के लिए सीधे जा सकते हैं:

NSBundle *uiKitBundle = [NSBundle bundleWithIdentifier:@"com.apple.UIKit"]; 
NSString *onText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"Yes" value:nil table:nil] : @"YES"; 
NSString *offText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"No" value:nil table:nil] : @"NO"; 

चेतावनी: कोई रास्ता नहीं में मैं सुझाव है कि आप वास्तव में एक ऐप्लिकेशन है जो आप App स्टोर के लिए प्रस्तुत करने का इरादा में प्रोग्राम के रूप में इन स्थानीय संसाधनों का उपयोग करते हैं। मैं केवल एक विशेष कार्यान्वयन का वर्णन कर रहा हूं जिसे मैंने देखा है जो आपके मूल प्रश्न को संबोधित करता है।

0

अपने स्टोरीबोर्ड के साथ बेस स्थानीयकरण का उपयोग क्यों नहीं करें? यह आपके लिए इसे स्थानीयकृत करेगा।

+0

मुझे कुछ केआईएफ एकीकरण परीक्षणों के लिए इन तक पहुंच की आवश्यकता थी। –

-3

आप

NSLocalizedString(@"Cancel", @"Cancel") 
संबंधित मुद्दे