2010-05-24 15 views
11

स्थानीयकरण में मैंने अपने ऐप में एक UIDatePicker बनाया है और मुझे कई भाषाओं के लिए भी समर्थन है। मेरा यूआईडीएटीपीकर इंटरफ़ेस बिल्डर में बनाया गया है, और मैंने एक अलग स्थानीयकरण XIB बनाया है, इसलिए मैं अपने UIDatePicker को कस्टमाइज़ कर सकता हूं।UIDatePicker - समस्या

आईबी में "लोकेल" विकल्प सेट करना कुछ भी नहीं प्रतीत होता है।

NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"es_ES"]; 
datePicker.locale = locale; 
datePicker.calender = [locale objectForKey:NSLocaleCalender]; 

यह एक अंग्रेज़ी पिकर में परिणाम: लोकेल और NSCalender साथ प्रोग्राम के मेरी DatePicker बदलने की कोशिश भी निम्न कोड के माध्यम से कुछ भी नहीं।

यद्यपि वास्तव में अजीब चीज है। "आज" के लिए शब्द का अनुवाद किया गया है। जैसा कि संलग्न स्क्रीनशॉट में देखा गया है। (ठीक मैं छवियों पोस्ट करने के लिए। लेकिन साथ "मई" अंग्रेजी और "आज" में लिखा "Ajourd'hui" एक तिथि & समय पिकर की कल्पना की अनुमति नहीं कर रहा हूँ।

मैं क्या पढ़ा है के आधार पर, UIDatePicker जोड़ने प्रोग्रामेटिक रूप से बहुत मदद नहीं करता है।

उत्तर

10

आगे की जांच के बाद, यह वास्तव में आईफोन की भाषा सेटिंग द्वारा संभाला नहीं जाता है। UIDatePicker स्वचालित रूप से "क्षेत्र प्रारूप" सेटिंग के आधार पर स्थानीयकृत और भाषा नहीं। यह अजीब है क्योंकि तिथियां स्थानीयकृत हैं, इसलिए आपको लगता है कि पिकर का स्थानीयकरण iDevice की भाषा से क्षेत्र प्रारूप नहीं होगा। अपने अनुप्रयोग

  1. से बाहर निकलें, सेटिंग पर जाएं:

    वैसे भी, सिम्युलेटर में स्थानीयकृत DatePicker अनुकरण करने के लिए।

  2. करें जनरल
  3. इंटरनेशनल का चयन
  4. नीचे विकल्प, क्षेत्र स्वरूप का चयन करें।
  5. वांछित क्षेत्र में बदलें।
  6. अपने ऐप को लॉन्च करें और नया यूआई पिकर देखें!
1

मुझे यह समझने के लिए क्या दिया गया है कि UIDatePicker स्वचालित रूप से उस डिवाइस को दिखाता है जो डिवाइस को सेट किया गया है। मुझे यकीन नहीं है कि इसे ओवरराइड कैसे करें, लेकिन ऐसा लगता है कि आप शायद इसे ओवरराइड नहीं करना चाहिए।

+4

कभी-कभी इसे केवल अतिरंजित करने की आवश्यकता होती है। अर्थात। एक भाषा-केवल आवेदन। –

0

मेरे अनुभव से "आज" आपकी जानकारी में आपकी सेटिंग्स का पालन कर रहा है। प्लिस्ट। कुछ कारणों से वे इसे अनुकूलित करना भूल गए हैं।

3

आईओएस 6 के रूप में UIDatePicker अब लोकेल जानकारी के लिए डिवाइस की सेटिंग्स को नहीं देखता है। आपको मैन्युअल रूप से NSLocale सेट करना होगा या यह डिफ़ॉल्ट लोकेल का उपयोग करेगा।

इस जवाब देखें: https://stackoverflow.com/a/12975871/1128896

एक सरल समाधान:

datePicker.locale = [NSLocale currentLocale]; 

अपडेट किया गया

स्थान अब UIDatePicker पर सेट किया जा सकता है, डिफ़ॉल्ट रूप से यह करने के लिए 'सेट किया गया है डिफ़ॉल्ट 'किसी भी विशेष भाषा के बजाय। 'डिफ़ॉल्ट' डिवाइस के लोकेल की जांच करेगा, और स्वयं को उस पर सेट करेगा। (डेव डीलॉन्ग की टिप्पणी below देखें)।इसलिए, इस बदलाव से अधिकांश नई परियोजनाओं पर असर नहीं पड़ेगा।

आप पुरानी परियोजनाओं, IOS 6 की ओर पलायन के साथ काम कर रहे हैं, तो आप पा सकते हैं कि UIDatePickers जो xibs में बनाए जाते हैं उनके स्थान 'अंग्रेजी' या बजाय 'डिफ़ॉल्ट' का किसी अन्य भाषा में चूक की है। (मुझे अपनी सभी पुरानी परियोजनाएं मिलीं, पूर्व आईओएस 6, इस व्यवहार का पालन किया)। इसे ठीक करने के लिए, बस आईबी में लोकेल को 'डिफ़ॉल्ट' में बदलें।

+1

डिफ़ॉल्ट लोकेल * डिवाइस का लोकेल है *। (यानी, '+ currentLocale') –

+0

ग्रेट पॉइंट डेव। मैंने वहां बनाई गई xib में लोकेल को सेट करने के बारे में आपकी अन्य टिप्पणी देखी, [1] (http://stackoverflow.com/questions/1151335/can-i-localize-a-uidatepicker/12975871#comment18351115_12975871)। मैंने इसमें थोड़ा और देखा, और ऐसा लगता है कि किसी भी UIDatePicker को नए एक्सकोड संस्करणों में बनाया गया है, डिफ़ॉल्ट रूप से लोकेल को 'डिफ़ॉल्ट' पर सेट करता है। लेकिन मेरी सभी पुरानी परियोजनाओं, जिनमें आईओएस 5 या 4 बिल्ड शामिल हैं, लोकेल को डिफ़ॉल्ट रूप से 'अंग्रेजी' पर सेट करें। तो ज्यादातर नई परियोजनाओं के लिए यह कोई मुद्दा नहीं होना चाहिए, लेकिन आईओएस 6 में जाने वाली पुरानी परियोजनाएं केवल अपने xibs लोकेल सेटिंग्स को जांचना बुद्धिमान होंगी। – Mike

+0

हाँ, यह सही है। :) –

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