2008-10-12 4 views
14

में I18N के लिए संसाधन मैं सी ++ में लोकेल और आई 18 एन सामान के साथ खेल रहा हूं और असली दुनिया के उदाहरणों की तलाश में हूं। मैंने अपने book (सी ++ 11 के लिए दूसरा संस्करण अप्रैल 2012 को जारी करने के लिए I18N पर जोसुटिस अध्याय के माध्यम से पढ़ा है), और इसे उपयोगी पाया लेकिन वास्तविक दुनिया के उदाहरणों को आकर्षित करने के लिए मुझे कोई जानकारी नहीं है कि मुझे नहीं पता कि मैं हूं सर्वोत्तम प्रथाओं का पालन शुरुआती गलतियों को कर रहे हैं। StackOverflow वेब पर और सी ++ में I18N सामग्री करने के लिए प्रिंट में मुझे कौन से संसाधन बता सकता है?सी ++

इसके अलावा सी ++ के लिए कौन सी लाइब्रेरी उपलब्ध हैं जो i18n को आसान बनाता है? मानक पुस्तकालय में क्या नहीं है जो होना चाहिए? पहली नज़र में, ऐसा लगता है कि मानक लाइब्रेरी में यूटीएफ 8 समर्थन मौजूद नहीं है।

संपादित करें:

कुछ और पढ़ने करने के बाद, ऐसा लगता है कि C और C++ दोनों यूनिकोड "नास्तिक"। ऐसा लगता है कि यूनिकोड/यूटीएफ 8/16/32 में एन्कोड किए गए डेटा से निपटने के लिए किसी को तीसरे पक्ष की लाइब्रेरी का उपयोग करने की आवश्यकता है। इसका क्रूक्स यह है कि मानक लाइब्रेरी केवल आईएसओ 885 9 और संबंधित चरित्र पृष्ठों के बारे में सोचती है, जो आपके लोकेल के आधार पर बदलती है। इसका मतलब है कि शायद मैं std::string या std::wstring का उपयोग करने के बजाय स्ट्रिंग के लिए आईसीयू लाइब्रेरी का उपयोग करना चाहता हूं। के रूप में कुछ जीयूआई पुस्तकालयों पहले से ही i18n समर्थन प्रदान करते हैं

उत्तर

0

, GNU gettext

पर एक नज़र यह जानना जो सी ++ पुस्तकालय आप उपयोग कर रहे दिलचस्प होगा लो।

0

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

हालांकि, के बारे में क्या सी ++ का अभाव है, सिर्फ तुम क्या मेरे मन की बात आती है:

  • नंबर, दिनांक या मुद्रा के संबंध में स्थानों के लिए पूर्ण समर्थन। और याद रखें कि ऑर्डरिंग सहित दशमलव विभाजक से अधिक में स्थानीय भिन्न होते हैं, जो मुझे दूसरे बिंदु पर लाता है:
  • सी ++ में ऑर्डर किए गए तर्कों का समर्थन करने वाला प्रारूप फ़ंक्शन नहीं है (क्योंकि किसी अन्य भाषा में, शब्द ऑर्डर अलग हो सकता है आपकी भाषा की तुलना में)। आप इसके लिए boost :: प्रारूप का उपयोग कर सकते हैं। क्यूटी पाठ्यक्रम भी इसका समर्थन करता है।

यह भी देखें कि आपको अपने लिए क्या करना है, भले ही इन चीजों का समर्थन हो। उदाहरण के लिए .NET स्थानीय लोगों की एक व्यापक सूची के साथ आता है जो उपयोग के लिए तैयार हैं।

9

आप GNU gettext की ओर इशारा किया गया है, जो आपको रन टाइम पर स्थानीयकृत संस्करण के साथ शाब्दिक तार को बदलने के लिए अनुमति देता है - स्थानीयकरण का एक पहलू (जिसके बाद आप, अंतर्राष्ट्रीयकरण किया है जब कोई वास्तव में अपने अंतर्राष्ट्रीय कोड का उपयोग करता है क्या होता है एक विशिष्ट लोकेल में)। आपको Boost (विशेष रूप से Boost.Locale) पुस्तकालयों की ओर इशारा किया गया है; आमतौर पर सी ++ से संबंधित किसी भी चीज़ के लिए यह एक अच्छा जवाब है।

एक और जगह जो आप देख सकते हैं ICU (यूनिकोड के लिए अंतर्राष्ट्रीय घटक) परियोजना है। और डेटा के स्रोत के रूप में, आप विभिन्न स्थानों के बारे में जानकारी के स्रोत के रूप में CLDR (सामान्य लोकेल डेटा रिपोजिटरी) देख सकते हैं; यूनिकोड वेबसाइट में विभिन्न संस्कृतियों के अन्य पहलुओं के बारे में बहुत सारी जानकारी है क्योंकि यह कई भाषाओं से संबंधित है।

और अब के लिए एक अंतिम संसाधन के रूप में, एक विशेषीकृत एक है, Olson Time Zone database है, जिसे प्रत्येक वर्ष कई बार अद्यतन किया जाता है ताकि अलग-अलग देश सर्दियों और गर्मी के बीच बदलने के तरीके पर अपना नियम बदल सकें (डेलाइट बचत और मानक) समय।

1

अंतर्राष्ट्रीयकरण के उदाहरण wxWidgets पर एक नज़र डालें। इसमें gettext (पहले उल्लेख किया गया) में उपयोग की जाने वाली अनुवाद तंत्र का एक गैर-gnu कार्यान्वयन है। आप इसे वाणिज्यिक एप्लिकेशन में भी इस्तेमाल कर सकते हैं क्योंकि WxWidgets लाइसेंस आपको ऐसा करने की अनुमति देता है।

यदि आप एप्लिकेशन को अंतर्राष्ट्रीयकरण के लिए एक विधि को देख रहे हैं तो gettext प्रारंभिक बिंदु है।

0

यूटीएफ -8 समर्थन के लिए, UTF-8 CPP लाइब्रेरी पर एक नज़र डालें।

-2

आपको इस कार्य को पूरा करने के लिए पुस्तकालयों की आवश्यकता नहीं है। सैटेलाइट डीएलएल here के लिए एमएस गाइड देखें।

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

डीएलएल सही ढंग से नामित होने तक विंडोज़ स्वयं ही सही संसाधन खोजने का ख्याल रखेगा। सैटेलाइट डीएलएल के लिए आवश्यक प्रत्यय here हैं।