जवाबों:
यह उत्तर प्रदर्शित करेगा कि कैसे एक लोकेल को पूरी तरह से अनुकूलित किया जाए, वैकल्पिक रूप से मौजूदा लोकेल को आधार के रूप में उपयोग किया जाए। इस उत्तर में जिस प्रकार के स्थान का उपयोग किया जाएगा, वह i18n
प्रकार है; इस तरह के लोकेल को उत्तर के शरीर में "लोकेल" शब्द के हर उल्लेख में निहित किया जाएगा।
लोकेल को कस्टमाइज़ करने के लिए सबसे पहले आपको लोकल के फॉर्मेट को जानना होगा। इस वेब लोकल एडिटर का एक लोकेल में हर क्षेत्र का विस्तृत वर्णन है, एक सही-सही तरीके से किसी के द्वारा प्रयोग करने योग्य नहीं होने के बावजूद। यह उपयोग करने के लिए गाइड होगा।
एकमात्र उपकरण जो आपको स्थानों के साथ काम करने की आवश्यकता है
मैं आपको एक निर्देशिका बनाने और उस कार्य से संबंधित हर चीज को सहेजने की सलाह देता हूं जो आप उस स्थान पर करेंगे।
नोट: यदि आप गैर-सामान्य वर्णों का उपयोग कर रहे हैं, तो आपको मेरे द्वारा लिखी गई स्क्रिप्ट के साथ समस्या हो सकती है; आप नास द्वारा जुड़ी वैकल्पिक लिपियों पर एक नज़र डालना चाहते हैं ।
निम्न कोड को किसी फ़ाइल में सहेजें। यह फ़ाइल आपके सिस्टम द्वारा एक पायथन स्क्रिप्ट के रूप में पहचानी जाएगी, जो ठीक है क्योंकि यह एक है। यह मार्गदर्शिका मानती है कि आपको स्क्रिप्ट कहा जाता है encodestr
।
#!/usr/bin/python
def encode(string):
newstring = str()
for ch in string:
newstring += "<U%04X>" % ord(ch)
return newstring
if __name__ == '__main__':
import sys
print encode(sys.argv[1])
आपके द्वारा सहेजे जाने के बाद, फ़ाइल निष्पादन की अनुमति दें - यह काम आएगा। आप कर सकते हैं कि nautilus का उपयोग करके, या टर्मिनल से निम्न कमांड चलाकर, उस निर्देशिका पर जिसमें आपने स्क्रिप्ट को सहेजा था chmod +x encodestr
:।
अब आप इस स्क्रिप्ट को उसी निर्देशिका पर चलाकर देख सकते हैं ./encodestr hello
:। आपको इसके बराबर आउटपुट मिलना चाहिए <U0068><U0065><U006C><U006C><U006F>
।
मौजूदा लोकेल को संशोधित करना सबसे आसान मामला है, क्योंकि आदर्श रूप में आप एक ऐसा लोकेल चुनेंगे जो आपकी आवश्यकताओं को पूरी तरह से फिट करता है, उस स्थिति में आपको केवल छोटे संशोधन करने की आवश्यकता होती है। इसे दर्जी करने के लिए, आप यह जानने के लिए मार्गदर्शिका का उपयोग कर सकते हैं कि आप किन वर्गों को बदलना चाहते हैं और आप उन्हें कैसे बदल सकते हैं। सभी इंस्टॉल किए गए स्थानों में रहते हैं /usr/share/i18n/locales
, हालांकि गाइड में अब तक बनाए गए हर स्थान में बहुत कुछ है।
हालाँकि, जब आप एक लोकेल खोलते हैं, तो पहली बात यह होगी कि आप अंग्रेजी शब्दों को अजीब <UXXXX>
कोड के रूप में पढ़ेंगे । आपको ये कोड बनाने में सक्षम होने की आवश्यकता होगी - यह वह जगह है जहां encodestr
स्क्रिप्ट आती है।
जब आप जानते हैं कि आपको किन वर्गों को बदलना है, तो आपको अनुभाग में निहित प्रत्येक क्षेत्र को जानना होगा।
उदाहरण के लिए,
LC_TIME
अनुभाग में फ़ील्डt_fmt
और कई अन्य शामिल हैं। गाइड पर प्रत्येक क्षेत्र का अपना विवरण है ।
अब जब आप जानते हैं कि किस फ़ील्ड को संशोधित करना है, तो यह जानने के लिए कि कौन से मान फ़ील्ड को स्वीकार करते हैं, फिर से गाइड का उपयोग करें ।
उदाहरण के लिए, फ़ील्ड
t_fmt
पाठ और सामान्य स्ट्रैफ़्म चर को स्वीकार करता है ।
बस जब आप जानते हैं कि जिन क्षेत्रों को आप संशोधित करना चाहते हैं, उन पर क्या लिखना है, तो encodestr
स्क्रिप्ट के माध्यम से पाठ को इसके एन्कोडेड के बराबर में चलाएं ।
नोट: प्रत्येक फ़ील्ड को एन्कोडेड करने की आवश्यकता नहीं है, यदि आवश्यक हो तो संदर्भ के रूप में मौजूदा लोकेल का उपयोग करें।
उदाहरण के लिए, यदि आप क्षेत्र
Time: %T
में समय प्रारूप रखना चाहते हैं, तोt_fmt
दौड़ें./encodestr "Time: %T"
; यह वापस आ जाएगा<U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
और इसलिए आपके पासt_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
आपके लोकेल में लाइन होगी (यह संबंधित अनुभाग में है, निश्चित रूप से)।
आपके द्वारा अपने इच्छित हर क्षेत्र को संशोधित करने के बाद, आपको सिस्टम में लोकेल को स्थापित करने के लिए आगे बढ़ना होगा, इसलिए इसका उपयोग किया जा सकता है। इसके लिए स्थापना अनुभाग पर आगे बढ़ें।
जैसा कि एक को संशोधित करने का विरोध किया गया है, दूसरी विधि जिसे आप अपने कस्टम लोकेल को बनाने के लिए उपयोग कर सकते हैं वह खरोंच से काम कर रहा है। यह बहुत मुश्किल नहीं है अगर - फिर से - आप गाइड का उपयोग करते हैं । हालांकि यहां एक उपयोगी टिप है: आप वास्तविक प्रतिलिपि और पेस्ट विधियों के बिना अन्य स्थानों से अनुभागों को कॉपी कर सकते हैं । आपको बस इस प्रारूप का पालन करना है:
LC_SECTION
copy "locale"
END LC_SECTION
LC_SECTION
वह अनुभाग कहां है जिसे आप संशोधित करना चाहते हैं, और locale
वह स्थान है जिसे आप उस अनुभाग से कॉपी करना चाहते हैं।
उदाहरण के लिए, यदि आप अंग्रेजी लोकेल में समय प्रारूप को कॉपी करना चाहते हैं, तो आपके पास यह टेक्स्ट आपकी कस्टम लोकेल फाइल होगी:
LC_TIME
copy "en_GB"
END LC_TIME
और यह आपको बहुत सारे काम बचाता है और आश्वासन देता है कि संदर्भित लोकेशन में किए गए किसी भी परिवर्तन को आपके लिए प्रतिबिंबित किया जाएगा।
नीचे मैं जो कदम दिखाने जा रहा हूं वह इष्टतम नहीं हो सकता है, लेकिन काम करता है।
अपने स्थान का संकलन करें। घबराओ मत! इसमें कोई समय नहीं लगता है। बस वह कमांड चलाएं sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
जहां custom
आपके लोकेल का नाम है।
/usr/share/i18n/locales/
निर्देशिका में अपने स्थान की प्रतिलिपि बनाएँ । ऐसा करने के लिए आपको निश्चित रूप से sudo के निजीकरण की आवश्यकता होगी , और आप इसे उस कमांड के साथ कर सकते हैं sudo cp locale /usr/share/i18n/locales/
जहां locale
आपके कस्टम लोकेल का फ़ाइल नाम है।
में अपने स्थान को निर्दिष्ट करें /var/lib/locales/supported.d/
। उदाहरण के लिए, एक फ़ाइल नाम बनाएं /var/lib/locales/supported.d/asd
और लाइन जोड़ें custom UTF-8
, जहां कस्टम आपके लोकेल का नाम है।
मैजिक कमांड चलाएं। मैं वास्तव में नहीं जानता कि वास्तव में यह कमांड क्या करता है, लेकिन यह महत्वपूर्ण है। भागो sudo locale-gen
। यह सबसे अधिक संभावना है कि यह उन उपलब्ध स्थानों के संदर्भ उत्पन्न करता है जहां जरूरत है।
अपने सिस्टम को लोकेल का उपयोग करने के लिए कहें। यदि आप चाहते हैं कि सिस्टम-वाइड तरीके से लोकेल का उपयोग किया जाए, तो /etc/environment
फ़ाइल को संशोधित करें । यदि नहीं, तो आप अपनी ~/.profile
फ़ाइल को संशोधित कर सकते हैं , या कोई अन्य जो स्टार्टअप पर उपलब्ध है। यदि आपको नहीं पता कि बाद का मतलब क्या है तो चिंता न करें, बस ~/.profile
फ़ाइल का उपयोग करें । इसमें आपको क्या लिखना है, यह जानने के लिए, पहले locale
कमांड को रन करें । ऐसा लगता है कि आइटम की सूची जारी करना चाहिए LANGUAGE
, LC_MESSAGES
, LC_CTYPE
और कई अन्य। आप लिखेंगे, प्रत्येक अनुभाग के लिए जो आप चाहते हैं (पिछली कमांड द्वारा सूचीबद्ध), अलग-अलग लाइनों पर, यह SECTION="locale"
वह स्थान SECTION
है जहां locale
आपके कस्टम लोकेल का नाम और नाम है।
उदाहरण के लिए, यदि आप नीदरलैंड से समय प्रारूप का उपयोग करना चाहते हैं, लेकिन अंग्रेजी भाषा, लिखें:
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
नोट: यदि आप प्रत्येक लोकेल सेटिंग के लिए एक लोकेल का उपयोग करना चाहते हैं, तो लिखें LC_ALL="locale"
कि locale
आपके कस्टम लोकेल का नाम कहां है। यदि आप हर चीज के लिए एक लोकेल का उपयोग करना चाहते हैं लेकिन भाषा के लिए, आप लिख सकते हैं LANG="locale"
और (दूसरी पंक्ति में, निश्चित रूप से) LANGUAGE="locale":XX
जहां XX
आप चाहते हैं उस भाषा के लिए 2 अक्षर कोड है।
उदाहरण के लिए, यदि आप डच लोकेल और अंग्रेजी भाषा का उपयोग करना चाहते हैं, तो आप उपयोग कर सकते हैं:
LANG="nl_NL"
LANGUAGE="nl_NL:en"
अगली बार जब आप लॉग इन करेंगे, तो आपका लोकेल उपयोग में होना चाहिए। आप locale
फिर से कमांड चलाकर इसका परीक्षण कर सकते हैं ।
कृपया इस गाइड में विसंगतियों या झूठे बयानों के बारे में टिप्पणी करें!
custom UTF-8
से /usr/share/i18n/SUPPORTED
पहले जोड़ना था sudo locale-gen
। अन्यथा यह सूची में नहीं होगा।
सुनिश्चित नहीं हैं कि आप किस प्रकार का अनुकूलन चाहते हैं, लेकिन आप अपने उपयोग से कुछ स्थानीय चर सेट कर सकते हैं ~/.locale
। उदाहरण के लिए, अंग्रेजी संदेश लेकिन जर्मन समय और पसंद का उपयोग करने के लिए
export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"
कस्टम स्थान बनाना भी संभव है। दिनांक के लिए यह मार्गदर्शिका देखें ।
en_US
के लिए LC_NUMERIC
और de_DE
के लिए LC_MONETARY
और LC_MEASUREMENT
आप अन्य दुष्प्रभाव देता है? व्यक्तिगत लोकल जेनरेट करने के लिए नया लिंक भी देखें।
πμ
, यह<U00CF><U0080><U00CE><U00BC>
अपेक्षित पात्रों के बजाय, आउटपुट करता है<U03C0><U03BC>
। यहाँ एक लिंक है जो काम करता है।