2017-10-22 10 views
9

द्वारा कैलेंडर प्रकार प्राप्त करने के लिए कैसे:जैसा कि आप जानते आईसीयू निम्नलिखित कैलेंडरों का समर्थन करता है स्थानीय वाक्य

Japanese 
Buddhist 
Chinese 
Persian 
Indian 
Islamic 
Hebrew 
Indian 
Coptic 
Ethiopic 

हालांकि IntlDateFormatter केवल एक स्थान के लिए तारीख की ग्रेगोरियन प्रारूप बदलने और कैलेंडर को अपने आप परिवर्तित नहीं करता है, फिर भी यह कैलेंडर को भेजना संभव है और यह चाल करेगा। समस्या यह है कि मुझे प्रत्येक लोकेल के लिए मैन्युअल रूप से कैलेंडर सिस्टम को समझना होगा।

लोकेल स्ट्रिंग से कैलेंडर प्रकार कैसे प्राप्त करें। उदाहरण के लिए fa_IR भेजना मुझे 'फारसी' प्राप्त करने की आवश्यकता है, इसलिए उस लोकेल के लिए डेटा स्ट्रिंग जेनरेट करने के लिए इसे IntleDateFormatter पर भेजें।

+0

शायद इस पर विचार करना चाहते हैं। देखें: https://stackoverflow.com/a/44395179/1219741 – jaswrks

उत्तर

3

संक्षेप में; आप नहीं कर सकते क्यूं कर?

आइए देखें कि दोनों ऑब्जेक्ट्स क्या हैं: IntlDateFormatter विभिन्न लोकेल-जागरूक संचालन करने के लिए बनाए गए अंतर्राष्ट्रीयकरण विस्तार का हिस्सा है। इन परिचालनों में से दिनांक स्वरूपक और लोकेल-जागरूक कैलेंडर हैं।

Locale class एक पहचानकर्ता है जो भाषा, संस्कृति या क्षेत्रीय-विशिष्ट व्यवहार प्राप्त करने के लिए उपयोग किया जाता है।

भले ही वे एक ही एक्सटेंशन का हिस्सा हैं, वे here वर्णित ऑर्थोगोनल हैं। इसका मतलब है कि आप एक दूसरे से निर्धारित नहीं कर सकते हैं। आईसीयू परियोजना द्वारा प्रदान की गई उपयोगकर्ता मार्गदर्शिका में यह कथन आगे साबित हुआ है।

... वर्तमान में, सभी लोकेशन एक ग्रेगोरियन कैलेंडर के लिए डिफ़ॉल्ट हैं, संगतता लोकेशंस th_TH_TRADITIONAL और ja_JP_TRADITIONAL को छोड़कर। यदि "कैलेंडर" कीवर्ड प्रदान किया जाता है, तो यह मान उस लोकेल के लिए डिफ़ॉल्ट ओवरराइड करेगा।

Source: User guide ICU project

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

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

एक मॉड्यूल जहां मुझे उत्तर के लिए मेरी खोज में प्रेरणा मिली, GlobalizeJS है। एक खुला open issue है जो एक दिलचस्प तस्वीर पेंट करता है कि सही होने के लिए कितना मुश्किल है। उदाहरण के लिए संयुक्त अरब अमीरात (एई) लें, उनके पास पांच कैलेंडर प्राथमिकताएं हैं; ग्रेगोरियन, इस्लामी उम अल-कुरा, इस्लामी, इस्लामी नागरिक और इस्लामी टैब्यूलर। मैं उपयोगकर्ता को यह निर्धारित करने दूंगा कि वे कौन सा कैलेंडर पसंद करते हैं, इसलिए यह उनके लिए सबसे उपयोगी है।

शुभकामनाएं!

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