2009-07-06 4 views
5

मान लें कि मेरे पास एक तिथि है जिसे मैं संस्कृति-परिवर्तनीय प्रारूप (आईएसओ 8601) में प्रस्तुत कर सकता हूं।ब्राउज़र पर तारीखों को स्थानीयकृत करें?

मैं 6 जुलाई, 200 9, 3:54 बजे पेरिस में यूटीसी समय, पेरिस में एएमसी 5:54 बजे पेरिस में स्थानीय समय डेलाइट बचत देखता हूं।

2009-07-06T15: 54: 12.000 + 02: 00

ठीक ... वहाँ मार्कअप के किसी भी छिपा मणि कि ब्राउज़र को बताता है एक स्थानीय संस्करण में कि स्ट्रिंग परिवर्तित करने के लिए नहीं है यह?

निकटतम समाधान जावास्क्रिप्ट की दिनांक का उपयोग कर रहा है .prototype.toLocaleString()। यह निश्चित रूप से एक अच्छी नौकरी करता है, लेकिन यह कई तिथियों में फिर से शुरू हो सकता है, और यह जावास्क्रिप्ट पर निर्भर करता है।

क्या कोई HTML, CSS, XSLT, या अन्यथा अर्थपूर्ण मार्कअप है कि कोई ब्राउज़र पहचान लेगा और स्वचालित रूप से सही स्थानीय स्ट्रिंग प्रदान करेगा?

संपादित:

विधि मैं वर्तमान में उपयोग कर रहा हूँ एक स्थानीय तार के साथ किसी HTML तत्व में पाठ की जगह है:

के साथ शुरू:

<span class="date">2009/07/06 15:54:12 GMT</span> 

जावास्क्रिप्ट का उपयोग करना (jQuery के साथ):

var dates = $("span.date", context); 
// use for loop instead of .each() for speed 
for(var i=0,len=dates.length; i < len; i++) { 
    // parse the date 
    var d = new Date(dates.eq(i).text()); 
    // set the text to the localized string 
    dates.eq(i).text(d.toLocaleString()); 
} 

व्यावहारिक दृष्टिकोण से, यह जावास्क्रिप्ट चलाते समय टेक्स्ट को "फ्लैश" नए मान में बनाता है, और मुझे यह पसंद नहीं है।

सिद्धांतों के दृष्टिकोण से, मुझे नहीं लगता कि हमें ऐसा करने की आवश्यकता क्यों है - ब्राउज़र को मुद्रा, तिथियों, संख्याओं जैसे मानक चीजों को स्थानीयकृत करने में सक्षम होना चाहिए, जब तक हम इसे चिह्नित करते हैं।


एक अनुवर्ती प्रश्न: - क्लाइंट की सेटिंग के अनुसार एक मानक डेटा आइटम ले, और उसे फ़ॉर्मेट क्यों ब्राउज़रों/वेब इस तरह के एक सरल सुविधा नहीं है?

+0

मुझे नहीं पता कि सीधे ऊपर मार्कअप भाषाओं का उपयोग करके ऐसा करने के लिए वैसे भी है। मुझे यकीन है कि आप कुछ स्क्रिप्ट का उपयोग करने जा रहे हैं। – Peter

उत्तर

2

मैं अपनी साइट पर लोकालेस्ट्रिंग() का उपयोग करता हूं, और मुझे इसकी गति के साथ कभी समस्या नहीं हुई है। आप तिथि ऑब्जेक्ट में सर्वर दिनांक कैसे प्राप्त कर रहे हैं? पार्स?

मैं दिनांक को प्रदर्शित करने से पहले एक टिप्पणी नोड जोड़ता हूं क्योंकि सर्वर इसे देखता है। टिप्पणी नोड के अंदर युग के बाद से मिलीसेकंड की संख्या के रूप में उस पोस्ट की तिथि/समय है। रेल में, उदाहरण के लिए:

<!--<%= post.created_at.to_i * 1000 %>--> 

अगर वे जे एस सक्षम किया गया है, मैं jQuery का उपयोग उन नोड्स हड़पने के लिए,, टिप्पणी का मान प्राप्त तो:

var date = new Date(); 
date.setTime(msFromEpoch); 
// output date.toLocaleString() 

अगर वे जे एस की जरूरत नहीं है सक्षम, वे अपने सिर में रूपांतरण करने के लिए स्वतंत्र महसूस कर सकते हैं।

यदि आप आईएसओ समय को पार्स करने का प्रयास कर रहे हैं, तो यह आपके धीमेपन का कारण हो सकता है। इसके अलावा, हम कितने तिथियां बात कर रहे हैं?

+0

मैं आईएसओ प्रारूप की बजाय टिक का उपयोग करने की कोशिश करूंगा - मुझे लगता है कि इसे तेज होना चाहिए। तिथियां कहीं 50 से 100 के बीच होती हैं। जब तारीखें स्थानीयकृत होती हैं तो यह स्क्रीन पर एक ध्यान देने योग्य "फ़्लैश" है। –

2

दुर्भाग्य से, ऐसा नहीं है।

एचटीएमएल & सीएसएस का प्रस्तुति के लिए सख्ती से उपयोग किया जाता है, ऐसे में, चीजों को प्रदर्शित करने के तरीके को बदलने के लिए कोई "स्मारक" नहीं बनाया गया है।

आपकी सर्वश्रेष्ठ शर्त HTML सर्वर में दिनांक को उत्सर्जित करने के लिए सर्वर साइड भाषा (जैसे .NET, Python, आदि) का उपयोग करना होगा, जिसे आप अपने उपयोगकर्ता को दिखाए गए प्रारूप में HTML में डालें।

+0

मेरी इच्छा है कि सर्वर के ग्राहक की स्थानीय सेटिंग्स को जानने का एक अच्छा तरीका हो। –

+0

हम सभी नहीं :) – annakata

+4

मैंने ऐसा करने के लिए एक अच्छा "चाल" देखा है। लॉगिन, या इसी तरह के पृष्ठ पर, एक छिपी हुई फॉर्म फ़ील्ड डालें और उपयोगकर्ता के वर्तमान समय को लिखने के लिए जावास्क्रिप्ट का उपयोग करें।फिर जब आपके सर्वर पर फॉर्म पोस्ट किया जाता है तो सर्वर सिस्टम समय (जावास्क्रिप्ट के अनुसार) सर्वर सर्वर से तुलना करें और आप अपनी टाइम ज़ोन सेटिंग्स को समझ सकते हैं। – nikmd23

2

एचटीएमएल के साथ ऐसा करना संभव नहीं है, इसमें कोई स्मार्ट टैग नहीं है जो इस तरह के किसी भी तरह के फैसले कर सकता है। यह सख्ती से प्रस्तुतिकरण है।

  1. स्टिक जावास्क्रिप्ट तरीका करने के लिए: मैं

    फिर भी, जिस तरह से मैं इसे देख, आप 3 विकल्प हैं, आश्चर्य करते हैं, हालांकि यदि एचटीएमएल 5 शायद कुछ इस तरह के लिए एक टैग है ...।ऐसे How do I display a date/time in the user’s locale format and time offset? और How can I determine a web user’s time zone?

  2. भौगोलिक स्थान उपयोग करने की कोशिश के रूप में इस वेबसाइट पर इस पर अधिक विवरण के साथ सवाल, है। यही है, आपकी सर्वर साइड स्क्रिप्ट उपयोगकर्ता के पहले पृष्ठ पर मौजूद कई भूगोल सेवाओं में से एक के अनुरोध को बंद कर देती है और यह अनुमान लगाने के लिए कि उपयोगकर्ता कहां है। इसका नकारात्मक पक्ष यह है कि यह 10% समय के बारे में गलत होगा, इसलिए यह बाजार हिस्सेदारी से कहीं ज्यादा बेहतर नहीं है जावास्क्रिप्ट आपको प्राप्त करने जा रहा है .... (सभी में, तो, बहुत अच्छी विधि नहीं है। ..)

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

1

भाषा और उपयोगकर्ता का लोकेल HTTP शीर्षलेख पर भेजा जाना चाहिए। आप उपयोगकर्ता को प्रदर्शित होने के लिए सही दिनांक प्रारूप सर्वर-साइड बनाने के लिए उनका उपयोग कर सकते हैं। हालांकि, यह अक्सर अवांछनीय है क्योंकि कई उपयोगकर्ता अपने ओएस और/या ब्राउज़र में अपनी लोकेल सेटिंग्स को पूरी तरह अनदेखा करते हैं। तो, आप न्यूज़ीलैंडर्स को यूएसए स्टाइल टाइमस्टैम्प खिला रहे हैं।

मुझे उपरोक्त टिप्पणी में पोस्ट की गई चाल पसंद आई, लेकिन यह एक क्यूए सिरदर्द की तरह लगता है, क्योंकि आप बड़ी संख्या में ग्राहकों से निपट सकते हैं जो टाइमस्टैम्प को बहुत अलग तरीकों से लागू करते हैं।

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

2

डोजो में कुछ बहुत अच्छा localizations for dates and currencies है। इस विधि का उपयोग करने से आप विभिन्न प्रारूपों को चुन सकते हैं (उदा .: छोटी तारीख बनाम लंबी तिथि) और बल स्थानीय।