डेबियन पर लोकेल कैसे स्थापित करें / बदलें?


65

मैंने एक वेब एप्लिकेशन लिखा है जिसके लिए उपयोगकर्ता इंटरफ़ेस डच में है। मैं सिस्टम की तारीख और समय रूटीन का उपयोग आवेदन में तारीख के तार को प्रारूपित करने के लिए करता हूं। हालाँकि, तारीख स्ट्रिंग है कि सिस्टम प्रारूप अंग्रेजी में हैं, लेकिन मैं उन्हें डच में चाहता हूं, इसलिए मुझे सिस्टम के लोकेल को सेट करने की आवश्यकता है। मैं डेबियन पर कैसे करूं? मैंने सेटिंग की कोशिश की, LC_ALL=nl_NLलेकिन इसका कोई असर नहीं हुआ:

$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009

मुझे याद है कि मेरे Ubuntu डेस्कटॉप सिस्टम पर LC_ALL को सेट करना ठीक काम करता है। क्या मुझे यह काम करने के लिए अतिरिक्त पैकेज स्थापित करने की आवश्यकता है, या क्या मैं इसे पूरी तरह से गलत कर रहा हूं?


क्या सर्वर के निर्दिष्ट IP पते के आधार पर स्वचालित रूप से ऐसा करने का कोई तरीका है?
स्कूप

जवाबों:


72

/etc/default/localeसामग्री को संपादित और सेट करें :

LANG="nl_NL.UTF-8"

आप जाँच कर सकते हैं कि आपने वर्तमान में किन स्थानों का उपयोग करके उत्पन्न किया है:

# locale -a

/etc/locale.genजिन स्थानों को आप सक्षम करना चाहते हैं, उनके लिए लाइनों को संपादित करके और उन्हें जोड़कर आप अधिक उत्पन्न कर सकते हैं । तब आप उन्हें चलाकर उत्पन्न कर सकते हैं:

# locale-gen

आप समर्थित स्थानों की सूची पा सकते हैं /usr/share/i18n/SUPPORTED

डेबियन विकि पर अधिक जानकारी उपलब्ध है ।


9
/ var / lib / belocs / सूची मौजूद नहीं है। आपको इसके बजाय /etc/locale.gen को संपादित करने या dpkg-reconfigure स्थानों को चलाने की आवश्यकता है।
2:16

+1 लोकेल-जीन का वर्णन करने के लिए यह उत्तर, लेकिन पिछली टिप्पणी के अनुसार, मेरे सिस्टम में / var / lib / belocs / list जैसी कोई फाइल नहीं है
19

इस उत्तर को खोजने में मुझे 5 घंटे का समय लगा, जो कि एकदम सही था। इसके अलावा, यह उपनाम बनाने की अनुमति देता है: en_US UTF-8 और it_IT UFT-8 ने मुझे डिफ़ॉल्ट रूप से UTF-8 में अपने स्थान रखने की अनुमति दी, जो कि अगर आपके पास PHP कोड है जो कि स्थानों पर निर्भर करता है तो बहुत अच्छा है
Cec

क्या कोई कमांड या पैकेज है जो / etc / default / locale की सामग्री को संपादित और सेट कर सकता है?
कार्ल मॉरिसन

Czar से नीचे उत्तर देखें। आप इसे इस तरह से कर सकते हैं: sed -i s / ^ # * (en_US.UTF-8) / \ 1 / '/etc/locale.gen
टोबियास गर्टनर

66

आपको localesपैकेज स्थापित करने की आवश्यकता हो सकती है । यह आपसे पूछेगा कि कौन से स्थान उत्पन्न करने हैं। यदि यह पहले से स्थापित है, तो dpkg-reconfigure localesआपको और अधिक स्थान उत्पन्न करने देगा।


यह केवल लोकेशन जेनरेट करता है, सिस्टम डिफॉल्ट को सेट नहीं करता है।
डेविड पैशले

16
नहीं, dpkg-reconfigure स्थानों का अंतिम प्रश्न डिफ़ॉल्ट लोकेल का चयन करना है।
पीजी

2
मुझे इसे उसी sudoरूप में चलाना था sudo dpkg-reconfigure locales
एलेक्स युरशा

यदि यह ssh के माध्यम से पहुँचा हुआ सर्वर है, तो स्थानों पर डेबियन विकी पृष्ठ को डिफ़ॉल्ट लोकेल सेट पर छोड़ने की सलाह देता है NONE
पॉल रूजीक्स

1
यह वही था जो मुझे चाहिए था: बस कुछ कीस्ट्रोक्स में सभी स्थानों को स्थापित करें। आपको बहुत - बहुत धन्यवाद!
एक्सल

10

यहाँ उत्तर अधूरे हैं जैसे कि अन्यत्र। कुछ स्थानों से एक साथ जानकारी प्राप्त करने के बाद, मेरे लिए क्या काम किया गया था (1) सुनिश्चित करें कि जो लोकेल मैं चाहता था वह उपलब्ध था (इसे अगर वह नहीं था तो) (2) वांछित लोकेल से संबंधित स्थानीय चर सेट करें।

मेरे मामले में मुझे en_US.UTF-8एक डॉकटर कंटेनर में प्रोग्रामेटिक रूप से (यानी गैर-अंतःक्रियात्मक) स्थापित करने की आवश्यकता थी। Ff ने मुझे जो कुछ भी पूरा करने की जरूरत है उसे पूरा किया लेकिन यह एक इंटरैक्टिव शेल में ठीक काम करना चाहिए।

apt-get update

# Install locales package
apt-get install -y locales

# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen

# Generate locale
locale-gen

# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc

उसी शेल पर, आपको source ~/.bashrcतुरंत प्रभाव डालने के लिए env vars करने की आवश्यकता होगी । आप जाँच कर सकते हैं कि लोकेल को सही तरीके से इनवाइट करके कॉन्फ़िगर किया गया है locale

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

इस विषय के बारे में बहुत सारी प्रश्नोत्तर प्रविष्टियाँ थीं लेकिन कुछ ही वास्तव में सहायक थीं। जो प्रशंसा का पात्र है, उसकी प्रशंसा करें:


6

इनमें से किसी भी जवाब ने मेरे लिए काम नहीं किया, एक एलएक्ससी कंटेनर के साथ स्थापित किया गया:

lxc-create -n sse-master -t download -n sse-master -- \
    -d debian -r jessie --arch i386

मुझे हमेशा निम्न आउटपुट मिला locale-gen, अर्थात कोई भी लोकेशन नहीं (कोई भी सूचीबद्ध नहीं):

$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.

dpkg-reconfigure localesकुछ स्थानों को चलाना और चयन करना अपडेट नहीं हुआ /etc/locale.genक्योंकि मुझे इसकी उम्मीद थी।

हालाँकि, जब मैंने उस फ़ाइल को मैन्युअल रूप से संशोधित किया और उन स्थानों को अनियोजित किया, जो मैं चाहता था, तो locale-genठीक से काम करना शुरू कर दिया:

$ sudo locale-gen
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  en_US.UTF-8... done
Generation complete.

मैं इस तरह से मैन्युअल रूप से स्थान बनाने में सक्षम था:

sudo localedef -i en_US -f UTF-8 en_US.UTF-8
sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8

लेकिन यह एक स्थायी समाधान नहीं था: मैंने पाया कि विकल्प के locale-genबिना चलने --keep-existingसे ऐसे सभी मैन्युअल-जनरेट किए गए स्थान हट जाएंगे, अर्थात हर स्थान को सूचीबद्ध नहीं किया जाएगा (और असहज) /etc/locale.gen


3

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


1
यदि सिस्टम को लोकेल की आवश्यकता नहीं है, तो setlocaleकाम नहीं करेगा।
द गॉडफादर

1

लेकिन पहले आपको भाषा पैक स्थापित करने की आवश्यकता है। मेरे जर्मन आधारित वीपीएस में पहले से स्थापित कोई अंग्रेजी भाषा पैक नहीं था। इसलिए पहले आप यह जांच लें कि आपने इसे स्थापित किया है:

aptitude install language-pack-en

1

उन लोगों के लिए, जो मेरे जैसे, Ubuntu 14.04 LTS पर, किसी भी तरह, कोई /etc/locale.genफ़ाइल नहीं है, तो आप एक नया स्थान जोड़ सकते हैं /var/lib/locales/supported.d/localऔर उसके बाद:

sudo dpkg-reconfigure locales

आप फ्रेंच को भी जोड़ सकते हैं (उदाहरण के लिए) इस तरह से संपादित करें (संपादन के बजाय /var/lib/locales/supported.d/local):

sudo locale-gen fr_FR fr_FR.UTF-8

जोड़ सकते हैं और उत्पन्न करने के लिए ISO-8859-1और UTF-8के codesets fr_FRस्थान और अंत में टाइप करें:

sudo dpkg-reconfigure locales

काम खत्म करने के लिए

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