सवाल डेबियन पर लोकेल को कैसे इंस्टॉल / बदलें?


मैंने एक वेब एप्लिकेशन लिखा है जिसके लिए यूजर इंटरफेस डच में है। मैं एप्लिकेशन में दिनांक तारों को प्रारूपित करने के लिए सिस्टम की दिनांक और समय दिनचर्या का उपयोग करता हूं। हालांकि, तिथि स्वरूप जो सिस्टम स्वरूप अंग्रेजी में हैं लेकिन मैं उन्हें डच में चाहता हूं, इसलिए मुझे सिस्टम के लोकेल को सेट करने की आवश्यकता है। मैं डेबियन पर ऐसा कैसे करूं? मैंने सेटिंग करने की कोशिश की 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

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


58
2017-08-15 14:42


मूल


सर्वर के असाइन किए गए आईपी पते के आधार पर स्वचालित रूप से ऐसा करने का कोई तरीका है? - Scoop
डेबियन लोकेल को मानक तरीके से सेट करना: sudo dpkg-reconfigure locales। - Paul Rougieux


जवाब:


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

LANG="nl_NL.UTF-8"

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

# locale -a

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

# locale-gen

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

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


60
2017-08-15 15:56



/ var / lib / belocs / सूची मौजूद नहीं है। आपको /etc/locale.gen को संपादित करने या इसके बजाए dpkg-reconfigure लोकेशंस को चलाने की आवश्यकता है। - pgs
लोकेल-जेन का वर्णन करने के लिए यह उत्तर +1 करें, लेकिन पिछली टिप्पणी के अनुसार, मेरे सिस्टम पर / var / lib / belocs / list जैसी कोई फ़ाइल नहीं है - telent
इस जवाब को ढूंढने में मुझे 5 घंटे लग गए, जो कि सही साबित हुआ। इसके अलावा, यह उपनाम बनाने की अनुमति देता है: en_US UTF-8 और it_IT UFT-8 ने मुझे डिफ़ॉल्ट रूप से यूटीएफ -8 में अपने लोकेशंस रखने की अनुमति दी, जो कि आपके पास PHP कोड है जो लोकल पर निर्भर करता है - Cec
क्या कोई कमांड या पैकेज है जो / etc / default / locale की सामग्री को संपादित और सेट कर सकता है? - Karl Morrison
Czar से नीचे जवाब देखें। आप इसे ऐसा कर सकते हैं: sed -i's / ^ # * (en_US.UTF-8) / \ 1 / '/etc/locale.gen - Tobias Gaertner


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


63
2017-08-15 15:47



यह केवल स्थानीय उत्पन्न करता है, सिस्टम को डिफ़ॉल्ट सेट नहीं करता है। - David Pashley
नहीं, डीपीकेजी-पुनर्गठन लोकल का अंतिम प्रश्न डिफ़ॉल्ट लोकेल का चयन करना है। - pgs
मुझे इसे चलाने के लिए था sudo जैसे की sudo dpkg-reconfigure locales। - Alex Yursha
यदि यह सर्वर एसएसएच के माध्यम से पहुंचा है लोकेशंस पर डेबियन विकी पेज डिफॉल्ट लोकेल को छोड़ने के लिए छोड़ने की सिफारिश करता है NONE। - Paul Rougieux
यह वही था जो मुझे चाहिए: सभी स्थानीय लोगों को केवल कुछ कीस्ट्रोक में स्थापित करें। आपको बहुत - बहुत धन्यवाद! - aexl


इन उत्तरों में से कोई भी मेरे लिए एक एलएक्ससी कंटेनर पर स्थापित नहीं है:

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


6
2018-05-24 14:54





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

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

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
2018-01-29 03:58





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


3
2018-02-07 23:00



अगर सिस्टम की तुलना में लोकेल की आवश्यकता नहीं है setlocale काम नहीं करेगा - The Godfather


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

aptitude install language-pack-en

1
2018-04-20 17:14