मैं आर्क लिनक्स का उपयोग कर रहा हूं, और मैंने अपने लोकेल को सेट करने के बारे में विकी के निर्देशों का पालन किया है ।
लगभग हर कार्यक्रम जो लोकल के बारे में शिकायत करता है - यहां तक कि locale। यह इस तरह दिख रहा है:
% locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en-US
LC_TIME=en-US
LC_COLLATE="POSIX"
LC_MONETARY=en-US
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT=en-US
LC_IDENTIFICATION="POSIX"
LC_ALL=
या:
% perl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "en-US",
LC_NUMERIC = "en-US",
LC_MONETARY = "en-US",
LC_MEASUREMENT = "en-US",
LC_CTYPE = "en_US.UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C")
कुछ गड़बड़ है कि /etc/locale.genकई उदाहरण हैं; सभी UTF-8 लाइनों में "something.UTF-8" है, और यह चलते समय locale-genशो en_US.UTF-8... doneचल रहा है, लेकिन locale -a, जो आपको उपलब्ध स्थानों को दिखाने के लिए माना जाता है en_US.utf8। मैंने दोनों प्रारूपों के विभिन्न संयोजनों की कोशिश की है , /etc/locale-genऔर कुछ भी नहीं किया है।LOCALE=/etc/rc.conf
अतिरिक्त जानकारी:
% locale -a
C
POSIX
en_US
en_US.iso88591
en_US.utf8
ब्रूस एडगर के सुझाव LANG=Cऔर LC_ALL=en_US.UTF-8काम करने का सुझाव (वास्तव में, LC_ALLइसे तय करना, सेटिंग LANGमायने नहीं रखती थी), लेकिन मैं जानना चाहता हूं कि क्या हो रहा है। SUS के अनुसार , LC_ALL अन्य सभी LC_ * वेरिएबल्स को ओवरराइड करेगा यदि यह सेट है और अशक्त नहीं है। मेरे सिस्टम में, यह सेट है, लेकिन यह अशक्त है, इसलिए इसे अनदेखा किया जाना चाहिए, और इसके बजाय अन्य मानों का उपयोग किया जाना चाहिए। यही कारण है कि क्या हो रहा है नहीं है ऐसा लगता है कि आवेदन पत्र बुला रहे हैं, setlocaleके साथ LC_ALL, एक हो रही NULL, पीठ और एक त्रुटि पैदा होने पर भी अन्य कॉल करने के लिए setlocaleएक अच्छा स्ट्रिंग लौटाने।
यहाँ एक के शीर्ष है ltraceकी locale(समारोह वापसी मान देखने के लिए स्क्रॉल दाएं)
% ltrace locale
(0, 0, 0, -1, 0x7f5c1ae44510) = 0x7f5c1ae47140
__libc_start_main(0x401d70, 1, 0x7fff7c8cfbf8, 0x404610, 0x4046a0 <unfinished ...>
setlocale(0, "") = "en_US.UTF-8"
setlocale(5, "") = "en_US.UTF-8"
textdomain("libc") = "libc"
argp_parse(0x607280, 1, 0x7fff7c8cfbf8, 0, 0x7fff7c8cfad4) = 0
setlocale(6, "") = NULL
dcgettext(0, 0x405aa8, 5, 0, 0) = 0x405aa8
error(0, 2, 0x405aa8, 1, 0locale: Cannot set LC_ALL to default locale: No such file or directory)
.utf8में LOCALEऔर LC_*, लेकिन जाहिरा तौर पर .UTF-8भी काम करता है यहाँ ... en-US के लिए के रूप में: यह (बिना प्रकट होता है .utf8में) locale -a?
export LANG=Cऔर export LC_ALL=en_US.UTF-8देखो क्या होता है। मेरे Arch linux लैपटॉप LOCALE="en_US.UTF-8"में /etc/rc.conf है, और मैं यह पता नहीं लगा सकता कि मेरा लैपटॉप LANG = C कहां सेट करता है।
/etc/locale.conf? ऐसा लगता है कि आपने गलती से LANG=en-US(हाइफन के साथ) LANG=en_US(अंडरस्कोर के साथ ) लिखा है ।
/etc/locale.genभी उपयोगी होगी।
locale -a?