जावास्क्रिप्ट में अंतर्राष्ट्रीयकरण कैसे काम करता है?


143

मैं सोच रहा हूं कि जावास्क्रिप्ट में अंतर्राष्ट्रीयकरण से कैसे निपटें। मैंने गुगली की लेकिन मुझे इसके लिए ठोस जवाब नहीं मिल रहे हैं:

  • क्या अंतर्राष्ट्रीयकरण के लिए जावास्क्रिप्ट का मूल समर्थन है?
  • जावास्क्रिप्ट में i18n क्या है?
  • कैलेंडर, मुद्राओं, तिथियों आदि से कैसे निपटें?

मैंने पहले ही अंतर्राष्ट्रीयकरण को जावास्क्रिप्ट के अंदर पढ़ा है ।


Microsoft ने हाल ही में एक jquery वैश्वीकरण प्लगइन जारी किया है। विवरण यहाँ हैं
आदिल

जवाबों:


161

विरासत ब्राउज़रों में स्थानीयकरण समर्थन खराब है। मूल रूप से, यह ECMAScriptभाषा युक्ति में वाक्यांशों के कारण था जो इस तरह दिखते हैं:

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

कल्पना में परिभाषित प्रत्येक स्थानीयकरण विधि को "कार्यान्वयन-निर्भर" के रूप में परिभाषित किया गया है, जिसके परिणामस्वरूप बहुत सारी विसंगतियां हैं। इस उदाहरण में, Chrome Opera और Safari उसी चीज़ को लौटाएगा जैसे कि .toString()। फ़ायरफ़ॉक्स और IE स्थानीय स्वरूपित स्ट्रिंग्स को लौटाएगा, और IE में एक हजार विभाजक (मुद्रा स्ट्रिंग्स के लिए एकदम सही) भी शामिल है। Chrome को हाल ही में एक हज़ारों-पृथक स्ट्रिंग पर लौटने के लिए अद्यतन किया गया था, हालांकि कोई निश्चित दशमलव नहीं था।

आधुनिक वातावरण के लिए , ECMAScript अंतर्राष्ट्रीयकरण API युक्ति , एक नया मानक जो ECMAScript भाषा युक्ति का पूरक है, स्ट्रिंग की तुलना, संख्या स्वरूपण, और दिनांक और समय स्वरूपण के लिए बेहतर समर्थन प्रदान करता है; यह Language Spec में संबंधित कार्यों को भी ठीक करता है। एक परिचय यहाँ पाया जा सकता है । कार्यान्वयन में उपलब्ध हैं:

  • क्रोम 24
  • फ़ायरफ़ॉक्स 29
  • इंटरनेट एक्सप्लोरर 11
  • ओपेरा 15

एक संगतता कार्यान्वयन, Intl.js भी है , जो वातावरण में एपीआई प्रदान करेगा जहां यह पहले से मौजूद नहीं है।

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

// navigator.userLanguage for IE, navigator.language for others
var lang = navigator.language || navigator.userLanguage;

इसके लिए एक अच्छा समाधान सर्वर से क्लाइंट के लिए एक्सेप्ट-लैंग्वेज हैडर को डंप करना है। यदि एक जावास्क्रिप्ट के रूप में स्वरूपित किया जाता है, तो इसे अंतर्राष्ट्रीयकरण एपीआई कंस्ट्रक्टरों को पास किया जा सकता है, जो स्वचालित रूप से सबसे अच्छा (या पहले समर्थित) लोकेल को ले जाएगा।

संक्षेप में, आपको बहुत सारे काम खुद करने होंगे, या एक फ्रेमवर्क / लाइब्रेरी का उपयोग करना होगा , क्योंकि आप इसे आपके लिए करने के लिए ब्राउज़र पर भरोसा नहीं कर सकते।

स्थानीयकरण के लिए विभिन्न पुस्तकालय और प्लगइन्स:

  • अन्य:

जोड़ने / संपादित करने के लिए स्वतंत्र महसूस करें।


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

1
उत्कृष्ट संकलन के लिए धन्यवाद। एक सकारात्मक नोट पर, ऐसा लगता है कि मोज़िला एक आधुनिक tolalealeString () जल्द ही जहाज कर सकता है - संभवतः FF28: bugzilla.mozilla.org/show_bug.cgi?id=769871
क्रिस एडम्स

1
i18next.com अब शीर्ष locize.com पर निर्मित एक अनुवाद प्रबंधन के साथ आता है - यदि आपको पूर्ण अनुवाद प्रक्रिया को हल करने की आवश्यकता है तो यह एक बड़ी जीत हो सकती है - न कि i18n के लिए अपना कोड लिखकर। इसके अलावा एक अच्छा Incontext संपादक सुविधा है ...
jamuhl

12

मोज़िला ने हाल ही में भयानक L20n या स्थानीयकरण 2.0 जारी किया। उनके अपने शब्दों में L20n है

एक खुला स्रोत, स्थानीयकरण-विशिष्ट स्क्रिप्टिंग भाषा का उपयोग लिंग, प्लुरल, संयुग्मन और प्राकृतिक भाषा के अन्य विचित्र तत्वों में से अधिकांश को संसाधित करने के लिए किया जाता है।

उनका js कार्यान्वयन Github L20n रिपॉजिटरी पर है।


मैंने एक परियोजना शुरू की है जिसे स्थानीयकरण की आवश्यकता है और हमने L20n का भी उपयोग करने का फैसला किया है;)। इसलिए मैंने आवश्यकताएँ के लिए एक L20n प्लगइन का पहला संस्करण ( github.com/fernandogmar/L20n-RequireJS ) लिखा है , यदि आप आवश्यकताएँ का उपयोग करते हैं तो मुझे आशा है कि यह आपके लिए भी उपयोगी होगा। किसी भी सुझाव का स्वागत किया जाएगा।
फर्नांडो जीएम

0

इसमें से कुछ मूल है, बाकी पुस्तकालयों के माध्यम से उपलब्ध है।

उदाहरण के लिए Datejs एक अच्छी अंतर्राष्ट्रीय तिथि पुस्तकालय है।

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


0

आप एक अन्य पुस्तकालय - https://github.com/wikimedia/jquery.i18n भी आज़मा सकते हैं ।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.