मैं आर्क लिनक्स का उपयोग कर रहा हूं, और मैंने अपने लोकेल को सेट करने के बारे में विकी के निर्देशों का पालन किया है ।
लगभग हर कार्यक्रम जो लोकल के बारे में शिकायत करता है - यहां तक कि 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
?