2010-07-26 10 views
10

मैं यहाँ कुछ सी स्रोत कोड देख रहा हूँ और मैं इस पाया है:अंडरस्कोर समारोह

fprintf(stderr, _("Try `%s --help' for more information.\n"), command); 

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

अब मुझे कुछ एल्सा स्रोत में फिर से मिल गया है। क्या किसी को पता है कि यह कहां से आता है?

+1

नाम वास्तव में अनजान है, मुझे लगता है कि वे अधिकतर टाइप करने के लिए कम वर्णों के लिए जा रहे थे। –

+0

इस पर विचार, ... 2 साल के बाद? नरक, मुझे बहुत पुराना लगता है ... मुझे लगता है कि मौजूदा कार्यक्रमों का अनुवाद करने के प्रयास को कम करने के लिए नाम वास्तव में इस तरह चुना गया था। कटाक्ष के लिए – Dacav

उत्तर

11

यह जीएनयू gettext से आता है, जो अंतर्राष्ट्रीयकरण प्रक्रिया को कम करने के लिए डिज़ाइन किया गया एक पैकेज है। _() फ़ंक्शन बस एक स्ट्रिंग रैपर है। यह फ़ंक्शन मूल रूप से सिस्टम की भाषा में अनुवाद के साथ रनटाइम पर दी गई स्ट्रिंग को प्रतिस्थापित करता है, यदि उपलब्ध हो (यानी यदि उन्होंने प्रोग्राम के साथ इस भाषा के लिए .mo फ़ाइल भेजी है)।

7

से यह gettext से आता है। मूल रूप से सोचा गया, प्रत्येक बार टाइप करने के लिए अंतर्राष्ट्रीयकरण बहुत लंबा था जब आपको अंतर्राष्ट्रीय स्ट्रिंग की आवश्यकता होती थी। तो प्रोग्रामर ने शॉर्टकट i18n बनाया (क्योंकि अंतरराष्ट्रीयकरण में 'i' और 'n' के बीच 18 अक्षर हैं) और आप इसका उपयोग करके वहां स्रोत कोड देख सकते हैं। जाहिर है हालांकि i18n अभी भी बहुत लंबा था, तो अब यह सिर्फ एक अंडरस्कोर है।

+4

+1 और गेटटेक्स्ट मॉकिंग। –

+1

फ़ंक्शन का नाम 'i18n' नहीं है, लेकिन' gettext' हालांकि ... – Hasturkun

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